Created
June 25, 2014 20:30
-
-
Save MortimerGoro/026f7ddaf3ca729b49a1 to your computer and use it in GitHub Desktop.
Bison Ambiguity
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Option 1, | |
statements -> <Rule 11, tokens 1 .. 8> | |
statement -> <Rule 2, tokens 1 .. 1> | |
expression -> <Rule 343, tokens 1 .. 1> | |
prefix_expression -> <Rule 347, tokens 1 .. 1> | |
prefix_operator_opt -> <Rule 348, empty> | |
postfix_expression -> <Rule 424, tokens 1 .. 1> | |
primary_expression -> <Rule 362, tokens 1 .. 1> | |
"ID" <tokens 1 .. 1> | |
generic_argument_clause_opt -> <Rule 363, empty> | |
semicolon_opt -> <Rule 3, empty> | |
statements -> <Rule 11, tokens 2 .. 8> | |
statement -> <Rule 2, tokens 2 .. 4> | |
expression -> <Rule 343, tokens 2 .. 3> | |
prefix_expression -> <Rule 347, tokens 2 .. 3> | |
prefix_operator_opt -> <Rule 348, empty> | |
postfix_expression -> <Rule 424, tokens 2 .. 3> | |
primary_expression -> <Rule 369, tokens 2 .. 3> | |
parenthesized_expression -> <Rule 416, tokens 2 .. 3> | |
"(" <tokens 2 .. 2> | |
expression_element_list_opt -> <Rule 417, empty> | |
")" <tokens 3 .. 3> | |
semicolon_opt -> <Rule 4, tokens 4 .. 4> | |
";" <tokens 4 .. 4> | |
statements -> <Rule 11, tokens 5 .. 8> | |
statement -> <Rule 2, tokens 5 .. 5> | |
expression -> <Rule 343, tokens 5 .. 5> | |
prefix_expression -> <Rule 347, tokens 5 .. 5> | |
prefix_operator_opt -> <Rule 348, empty> | |
postfix_expression -> <Rule 424, tokens 5 .. 5> | |
primary_expression -> <Rule 362, tokens 5 .. 5> | |
"ID" <tokens 5 .. 5> | |
generic_argument_clause_opt -> <Rule 363, empty> | |
semicolon_opt -> <Rule 3, empty> | |
statements -> <Rule 10, tokens 6 .. 8> | |
statement -> <Rule 2, tokens 6 .. 8> | |
expression -> <Rule 343, tokens 6 .. 7> | |
prefix_expression -> <Rule 347, tokens 6 .. 7> | |
prefix_operator_opt -> <Rule 348, empty> | |
postfix_expression -> <Rule 424, tokens 6 .. 7> | |
primary_expression -> <Rule 369, tokens 6 .. 7> | |
parenthesized_expression -> <Rule 416, tokens 6 .. 7> | |
"(" <tokens 6 .. 6> | |
expression_element_list_opt -> <Rule 417, empty> | |
")" <tokens 7 .. 7> | |
semicolon_opt -> <Rule 4, tokens 8 .. 8> | |
";" <tokens 8 .. 8> |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Option 2, | |
statements -> <Rule 11, tokens 1 .. 8> | |
statement -> <Rule 2, tokens 1 .. 4> | |
expression -> <Rule 343, tokens 1 .. 3> | |
prefix_expression -> <Rule 347, tokens 1 .. 3> | |
prefix_operator_opt -> <Rule 348, empty> | |
postfix_expression -> <Rule 426, tokens 1 .. 3> | |
function_call_expression -> <Rule 434, tokens 1 .. 3> | |
postfix_expression -> <Rule 424, tokens 1 .. 1> | |
primary_expression -> <Rule 362, tokens 1 .. 1> | |
"ID" <tokens 1 .. 1> | |
generic_argument_clause_opt -> <Rule 363, empty> | |
parenthesized_expression -> <Rule 416, tokens 2 .. 3> | |
"(" <tokens 2 .. 2> | |
expression_element_list_opt -> <Rule 417, empty> | |
")" <tokens 3 .. 3> | |
semicolon_opt -> <Rule 4, tokens 4 .. 4> | |
";" <tokens 4 .. 4> | |
statements -> <Rule 11, tokens 5 .. 8> | |
statement -> <Rule 2, tokens 5 .. 5> | |
expression -> <Rule 343, tokens 5 .. 5> | |
prefix_expression -> <Rule 347, tokens 5 .. 5> | |
prefix_operator_opt -> <Rule 348, empty> | |
postfix_expression -> <Rule 424, tokens 5 .. 5> | |
primary_expression -> <Rule 362, tokens 5 .. 5> | |
"ID" <tokens 5 .. 5> | |
generic_argument_clause_opt -> <Rule 363, empty> | |
semicolon_opt -> <Rule 3, empty> | |
statements -> <Rule 10, tokens 6 .. 8> | |
statement -> <Rule 2, tokens 6 .. 8> | |
expression -> <Rule 343, tokens 6 .. 7> | |
prefix_expression -> <Rule 347, tokens 6 .. 7> | |
prefix_operator_opt -> <Rule 348, empty> | |
postfix_expression -> <Rule 424, tokens 6 .. 7> | |
primary_expression -> <Rule 369, tokens 6 .. 7> | |
parenthesized_expression -> <Rule 416, tokens 6 .. 7> | |
"(" <tokens 6 .. 6> | |
expression_element_list_opt -> <Rule 417, empty> | |
")" <tokens 7 .. 7> | |
semicolon_opt -> <Rule 4, tokens 8 .. 8> | |
";" <tokens 8 .. 8> |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
/******* STATEMENTS *******/ | |
program: statements {ast = $1;} | |
/******* STATEMENTS *******/ | |
// GRAMMAR OF A STATEMENT | |
statement : expression semicolon_opt { $$ = [[StatementNode alloc] initWithStatement:$1]; LOG("statement (0)\n"); } | |
semicolon_opt: | ";" { } | |
statement : declaration semicolon_opt { } | |
statement : loop_statement semicolon_opt { } | |
statement : branch_statement semicolon_opt { } | |
statement : labeled_statement { } | |
statement : control_transfer_statement semicolon_opt { } | |
statements : statement %dprec 2 {$$ = [[StatementsNode alloc] initWithCurrent:$1]; } | |
| statement statements %dprec 1 {$$ = [[StatementsNode alloc] initWithCurrent:$1 next:(StatementsNode*)$2]; } |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
test(); | |
test(); |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment