Fix bug as in previous fix, but with multi-token argument.
The previous fix added FUNC_MACRO to a production one higher in teh
grammar than it should have. So it prevented a FUNC_MACRO from
appearing as part of a mutli-token argument rather than just alone as
an argument. Fix this (and add a test).
diff --git a/glcpp-parse.y b/glcpp-parse.y
index ea27184..400f138 100644
--- a/glcpp-parse.y
+++ b/glcpp-parse.y
@@ -94,7 +94,7 @@
%lex-param {void *scanner}
%token DEFINE FUNC_MACRO IDENTIFIER NEWLINE OBJ_MACRO REPLACEMENT TOKEN UNDEF
-%type <str> FUNC_MACRO IDENTIFIER OBJ_MACRO REPLACEMENT TOKEN word
+%type <str> argument_word FUNC_MACRO IDENTIFIER OBJ_MACRO REPLACEMENT TOKEN
%type <string_list> argument macro parameter_list
%type <argument_list> argument_list
@@ -165,18 +165,14 @@
;
argument:
- word {
+ argument_word {
$$ = _string_list_create (parser);
_string_list_append_item ($$, $1);
}
| macro {
$$ = _string_list_create (parser);
}
-| FUNC_MACRO {
- $$ = _string_list_create (parser);
- _string_list_append_item ($$, $1);
- }
-| argument word {
+| argument argument_word {
_string_list_append_item ($1, $2);
talloc_free ($2);
$$ = $1;
@@ -189,6 +185,13 @@
}
;
+argument_word:
+ IDENTIFIER { $$ = $1; }
+| TOKEN { $$ = $1; }
+| FUNC_MACRO { $$ = $1; }
+;
+
+
directive:
DEFINE IDENTIFIER REPLACEMENT {
_define_object_macro (parser, $2, $3);
@@ -225,11 +228,6 @@
}
;
-word:
- IDENTIFIER { $$ = $1; }
-| TOKEN { $$ = $1; }
-;
-
%%
string_list_t *