Expect 1 shift/reduce conflict.
authorCarl Worth <cworth@cworth.org>
Mon, 17 May 2010 19:45:16 +0000 (12:45 -0700)
committerCarl Worth <cworth@cworth.org>
Mon, 17 May 2010 19:46:35 +0000 (12:46 -0700)
The most recent fix to the parser introduced a shift/reduce
conflict. We document this conflict here, and tell bison that it need
not report it (since I verified that it's being resolved in the
direction desired).

For the record, I did write additional lexer code to eliminate this
conflict, but it was quite fragile, (would not accept a newline
between a function-like macro name and the left parenthesis, for
example).

glcpp-parse.y

index 6f158d91398beb4200f45af962d0706ec5df0c2b..959083578e7121edb34505e3fc56a165d01e677b 100644 (file)
@@ -116,6 +116,14 @@ _argument_list_member_at (argument_list_t *list, int index);
 %type <string_list> argument macro parameter_list replacement_list
 %type <argument_list> argument_list
 
+/* Hard to remove shift/reduce conflicts documented as follows:
+ *
+ * 1. '(' after FUNC_MACRO name which is correctly resolved to shift
+ *    to form macro invocation rather than reducing directly to
+ *    content.
+ */
+%expect 1
+
 %%
 
 input: