From 9256c5252ed5e7bc8ce32128083c6f5eb548de02 Mon Sep 17 00:00:00 2001 From: David Walter Seikel Date: Thu, 12 Jan 2012 23:49:29 +1000 Subject: Change the order of conditionals, with more comments. Resort the upper tag types. --- LuaSL/src/LuaSL_lemon_yaccer.y | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) (limited to 'LuaSL/src/LuaSL_lemon_yaccer.y') diff --git a/LuaSL/src/LuaSL_lemon_yaccer.y b/LuaSL/src/LuaSL_lemon_yaccer.y index 731a52d..bd0aa52 100644 --- a/LuaSL/src/LuaSL_lemon_yaccer.y +++ b/LuaSL/src/LuaSL_lemon_yaccer.y @@ -13,10 +13,9 @@ program ::= script LSL_SCRIPT(A). { A->left = param->ast; param->ast = A; } // Lemon does not like the start symbol to be on the RHS, so give it a dummy one. - -%left LSL_BOOL_AND. +%right LSL_BOOL_AND. expr(A) ::= expr(B) LSL_BOOL_AND(C) expr(D). { A = addOperation(B, C, D); } -%left LSL_BOOL_OR. +%right LSL_BOOL_OR. expr(A) ::= expr(B) LSL_BOOL_OR(C) expr(D). { A = addOperation(B, C, D); } %left LSL_BIT_AND LSL_BIT_XOR LSL_BIT_OR. @@ -24,10 +23,10 @@ expr(A) ::= expr(B) LSL_BIT_OR(C) expr(D). { A = addOperation(B, C, D); } expr(A) ::= expr(B) LSL_BIT_XOR(C) expr(D). { A = addOperation(B, C, D); } expr(A) ::= expr(B) LSL_BIT_AND(C) expr(D). { A = addOperation(B, C, D); } -%left LSL_EQUAL LSL_NOT_EQUAL. +%right LSL_EQUAL LSL_NOT_EQUAL. expr(A) ::= expr(B) LSL_NOT_EQUAL(C) expr(D). { A = addOperation(B, C, D); } expr(A) ::= expr(B) LSL_EQUAL(C) expr(D). { A = addOperation(B, C, D); } -%left LSL_LESS_THAN LSL_GREATER_THAN LSL_LESS_EQUAL LSL_GREATER_EQUAL. +%right LSL_LESS_THAN LSL_GREATER_THAN LSL_LESS_EQUAL LSL_GREATER_EQUAL. expr(A) ::= expr(B) LSL_GREATER_EQUAL(C) expr(D). { A = addOperation(B, C, D); } expr(A) ::= expr(B) LSL_LESS_EQUAL(C) expr(D). { A = addOperation(B, C, D); } expr(A) ::= expr(B) LSL_GREATER_THAN(C) expr(D). { A = addOperation(B, C, D); } @@ -75,10 +74,12 @@ expr(A) ::= LSL_INTEGER(B). { A = B; } %nonassoc LSL_STATEMENT. statement(A) ::= expr(B) LSL_STATEMENT(D). { A = addStatement(D, LSL_EXPRESSION, B); } -%nonassoc LSL_SPACE LSL_COMMENT LSL_COMMENT_LINE LSL_IDENTIFIER LSL_SCRIPT LSL_UNKNOWN. +%nonassoc LSL_IDENTIFIER LSL_SCRIPT. script ::= script statement(A). { A->left = param->ast; param->ast = A; } script ::= statement(A). { A->left = param->ast; param->ast = A; } +%nonassoc LSL_SPACE LSL_COMMENT LSL_COMMENT_LINE LSL_UNKNOWN. + %parse_accept {printf("Parsing complete.\n");} -- cgit v1.1