@@ -1248,6 +1248,45 @@ _rcl_parse_resource_match(
1248
1248
return RCL_RET_OK ;
1249
1249
}
1250
1250
1251
+ RCL_LOCAL
1252
+ rcl_ret_t
1253
+ _rcl_parse_param_name_token (rcl_lexer_lookahead2_t * lex_lookahead )
1254
+ {
1255
+ rcl_ret_t ret ;
1256
+ rcl_lexeme_t lexeme ;
1257
+
1258
+ // Check arguments sanity
1259
+ assert (NULL != lex_lookahead );
1260
+
1261
+ ret = rcl_lexer_lookahead2_peek (lex_lookahead , & lexeme );
1262
+ if (RCL_RET_OK != ret ) {
1263
+ return ret ;
1264
+ }
1265
+ if (RCL_LEXEME_TOKEN != lexeme && RCL_LEXEME_FORWARD_SLASH != lexeme ) {
1266
+ if (RCL_LEXEME_WILD_ONE == lexeme ) {
1267
+ RCL_SET_ERROR_MSG ("Wildcard '*' is not implemented" );
1268
+ return RCL_RET_ERROR ;
1269
+ } else if (RCL_LEXEME_WILD_MULTI == lexeme ) {
1270
+ RCL_SET_ERROR_MSG ("Wildcard '**' is not implemented" );
1271
+ return RCL_RET_ERROR ;
1272
+ } else {
1273
+ RCL_SET_ERROR_MSG ("Expecting token or wildcard" );
1274
+ return RCL_RET_WRONG_LEXEME ;
1275
+ }
1276
+ }
1277
+ do {
1278
+ ret = rcl_lexer_lookahead2_accept (lex_lookahead , NULL , NULL );
1279
+ if (RCL_RET_OK != ret ) {
1280
+ return ret ;
1281
+ }
1282
+ ret = rcl_lexer_lookahead2_peek (lex_lookahead , & lexeme );
1283
+ if (RCL_RET_OK != ret ) {
1284
+ return ret ;
1285
+ }
1286
+ } while (RCL_LEXEME_TOKEN == lexeme || RCL_LEXEME_FORWARD_SLASH == lexeme );
1287
+ return RCL_RET_OK ;
1288
+ }
1289
+
1251
1290
/// Parse a parameter name in a parameter override rule (ex: `foo.bar`)
1252
1291
/**
1253
1292
* \sa _rcl_parse_param_rule()
@@ -1277,7 +1316,7 @@ _rcl_parse_param_name(
1277
1316
}
1278
1317
1279
1318
// token ( '.' token )*
1280
- ret = _rcl_parse_resource_match_token (lex_lookahead );
1319
+ ret = _rcl_parse_param_name_token (lex_lookahead );
1281
1320
if (RCL_RET_OK != ret ) {
1282
1321
return ret ;
1283
1322
}
@@ -1290,7 +1329,7 @@ _rcl_parse_param_name(
1290
1329
if (RCL_RET_WRONG_LEXEME == ret ) {
1291
1330
return RCL_RET_INVALID_REMAP_RULE ;
1292
1331
}
1293
- ret = _rcl_parse_resource_match_token (lex_lookahead );
1332
+ ret = _rcl_parse_param_name_token (lex_lookahead );
1294
1333
if (RCL_RET_OK != ret ) {
1295
1334
return ret ;
1296
1335
}
0 commit comments