From 5e0a9da493d8d40e96f58b80d14998ddfcc4ecf2 Mon Sep 17 00:00:00 2001 From: Paul Date: Tue, 2 Jan 2001 16:02:35 +0000 Subject: [PATCH] --- Utils/Scripter/parser.cpp | 584 +++++++++++++--------------- Utils/Scripter/parser.v | 776 ++++++++++++++++++-------------------- Utils/Scripter/parser.y | 88 ++--- Utils/Scripter/prepro.cpp | 38 +- data/Scripts/test.scr | 14 +- tools/scripter.exe | Bin 233535 -> 233535 bytes 6 files changed, 702 insertions(+), 798 deletions(-) diff --git a/Utils/Scripter/parser.cpp b/Utils/Scripter/parser.cpp index f4cf9ff40..171c90d51 100644 --- a/Utils/Scripter/parser.cpp +++ b/Utils/Scripter/parser.cpp @@ -261,12 +261,12 @@ s_baseTreeNode=yyattribute(1 - 1).treenode; case 15: { #ifdef YYDEBUG - YYSTYPE YYFAR* yya[2]; - yyinitdebug((void YYFAR**)yya, 2); + YYSTYPE YYFAR* yya[4]; + yyinitdebug((void YYFAR**)yya, 4); #endif { #line 138 "C:\\spongebob\\Utils\\scripter\\parser.y" -(*(YYSTYPE YYFAR*)yyvalptr).treenode=yyattribute(1 - 1).treenode; +(*(YYSTYPE YYFAR*)yyvalptr).treenode=new CTreeNode(EQUAL_EXPR,yyattribute(1 - 3).treenode,yyattribute(3 - 3).treenode); #line 271 "C:\\spongebob\\Utils\\scripter\\parser.cpp" } } @@ -274,12 +274,12 @@ s_baseTreeNode=yyattribute(1 - 1).treenode; case 16: { #ifdef YYDEBUG - YYSTYPE YYFAR* yya[2]; - yyinitdebug((void YYFAR**)yya, 2); + YYSTYPE YYFAR* yya[4]; + yyinitdebug((void YYFAR**)yya, 4); #endif { #line 139 "C:\\spongebob\\Utils\\scripter\\parser.y" -(*(YYSTYPE YYFAR*)yyvalptr).treenode=yyattribute(1 - 1).treenode; +(*(YYSTYPE YYFAR*)yyvalptr).treenode=new CTreeNode(NOTEQUAL_EXPR,yyattribute(1 - 3).treenode,yyattribute(3 - 3).treenode); #line 284 "C:\\spongebob\\Utils\\scripter\\parser.cpp" } } @@ -287,12 +287,12 @@ s_baseTreeNode=yyattribute(1 - 1).treenode; case 17: { #ifdef YYDEBUG - YYSTYPE YYFAR* yya[2]; - yyinitdebug((void YYFAR**)yya, 2); + YYSTYPE YYFAR* yya[4]; + yyinitdebug((void YYFAR**)yya, 4); #endif { #line 140 "C:\\spongebob\\Utils\\scripter\\parser.y" -(*(YYSTYPE YYFAR*)yyvalptr).treenode=yyattribute(1 - 1).treenode; +(*(YYSTYPE YYFAR*)yyvalptr).treenode=new CTreeNode(LESSTHAN_EXPR,yyattribute(1 - 3).treenode,yyattribute(3 - 3).treenode); #line 297 "C:\\spongebob\\Utils\\scripter\\parser.cpp" } } @@ -300,12 +300,12 @@ s_baseTreeNode=yyattribute(1 - 1).treenode; case 18: { #ifdef YYDEBUG - YYSTYPE YYFAR* yya[2]; - yyinitdebug((void YYFAR**)yya, 2); + YYSTYPE YYFAR* yya[4]; + yyinitdebug((void YYFAR**)yya, 4); #endif { #line 141 "C:\\spongebob\\Utils\\scripter\\parser.y" -(*(YYSTYPE YYFAR*)yyvalptr).treenode=yyattribute(1 - 1).treenode; +(*(YYSTYPE YYFAR*)yyvalptr).treenode=new CTreeNode(GREATERTHAN_EXPR,yyattribute(1 - 3).treenode,yyattribute(3 - 3).treenode); #line 310 "C:\\spongebob\\Utils\\scripter\\parser.cpp" } } @@ -313,12 +313,12 @@ s_baseTreeNode=yyattribute(1 - 1).treenode; case 19: { #ifdef YYDEBUG - YYSTYPE YYFAR* yya[4]; - yyinitdebug((void YYFAR**)yya, 4); + YYSTYPE YYFAR* yya[2]; + yyinitdebug((void YYFAR**)yya, 2); #endif { -#line 145 "C:\\spongebob\\Utils\\scripter\\parser.y" -(*(YYSTYPE YYFAR*)yyvalptr).treenode=new CTreeNode(EQUAL_EXPR,yyattribute(1 - 3).treenode,yyattribute(3 - 3).treenode); +#line 146 "C:\\spongebob\\Utils\\scripter\\parser.y" +(*(YYSTYPE YYFAR*)yyvalptr).treenode=new CTreeNode(VARIABLE_EXPR,yyattribute(1 - 1).variableIdx); #line 323 "C:\\spongebob\\Utils\\scripter\\parser.cpp" } } @@ -326,12 +326,12 @@ s_baseTreeNode=yyattribute(1 - 1).treenode; case 20: { #ifdef YYDEBUG - YYSTYPE YYFAR* yya[4]; - yyinitdebug((void YYFAR**)yya, 4); + YYSTYPE YYFAR* yya[2]; + yyinitdebug((void YYFAR**)yya, 2); #endif { -#line 149 "C:\\spongebob\\Utils\\scripter\\parser.y" -(*(YYSTYPE YYFAR*)yyvalptr).treenode=new CTreeNode(NOTEQUAL_EXPR,yyattribute(1 - 3).treenode,yyattribute(3 - 3).treenode); +#line 150 "C:\\spongebob\\Utils\\scripter\\parser.y" +(*(YYSTYPE YYFAR*)yyvalptr).treenode=new CTreeNode(VALUE_EXPR,yyattribute(1 - 1).value); #line 336 "C:\\spongebob\\Utils\\scripter\\parser.cpp" } } @@ -343,8 +343,8 @@ s_baseTreeNode=yyattribute(1 - 1).treenode; yyinitdebug((void YYFAR**)yya, 4); #endif { -#line 153 "C:\\spongebob\\Utils\\scripter\\parser.y" -(*(YYSTYPE YYFAR*)yyvalptr).treenode=new CTreeNode(LESSTHAN_EXPR,yyattribute(1 - 3).treenode,yyattribute(3 - 3).treenode); +#line 151 "C:\\spongebob\\Utils\\scripter\\parser.y" +(*(YYSTYPE YYFAR*)yyvalptr).treenode=yyattribute(2 - 3).treenode; #line 349 "C:\\spongebob\\Utils\\scripter\\parser.cpp" } } @@ -352,12 +352,12 @@ s_baseTreeNode=yyattribute(1 - 1).treenode; case 22: { #ifdef YYDEBUG - YYSTYPE YYFAR* yya[4]; - yyinitdebug((void YYFAR**)yya, 4); + YYSTYPE YYFAR* yya[2]; + yyinitdebug((void YYFAR**)yya, 2); #endif { -#line 157 "C:\\spongebob\\Utils\\scripter\\parser.y" -(*(YYSTYPE YYFAR*)yyvalptr).treenode=new CTreeNode(GREATERTHAN_EXPR,yyattribute(1 - 3).treenode,yyattribute(3 - 3).treenode); +#line 152 "C:\\spongebob\\Utils\\scripter\\parser.y" +(*(YYSTYPE YYFAR*)yyvalptr).treenode=new CTreeNode(VARIABLE_EXPR,yyattribute(1 - 1).variableIdx); #line 362 "C:\\spongebob\\Utils\\scripter\\parser.cpp" } } @@ -365,12 +365,12 @@ s_baseTreeNode=yyattribute(1 - 1).treenode; case 23: { #ifdef YYDEBUG - YYSTYPE YYFAR* yya[2]; - yyinitdebug((void YYFAR**)yya, 2); + YYSTYPE YYFAR* yya[4]; + yyinitdebug((void YYFAR**)yya, 4); #endif { -#line 162 "C:\\spongebob\\Utils\\scripter\\parser.y" -(*(YYSTYPE YYFAR*)yyvalptr).treenode=new CTreeNode(VARIABLE_EXPR,yyattribute(1 - 1).variableIdx); +#line 155 "C:\\spongebob\\Utils\\scripter\\parser.y" +(*(YYSTYPE YYFAR*)yyvalptr).treenode=new CTreeNode(PLUS_EXPR,yyattribute(1 - 3).treenode,yyattribute(3 - 3).treenode); #line 375 "C:\\spongebob\\Utils\\scripter\\parser.cpp" } } @@ -378,12 +378,12 @@ s_baseTreeNode=yyattribute(1 - 1).treenode; case 24: { #ifdef YYDEBUG - YYSTYPE YYFAR* yya[2]; - yyinitdebug((void YYFAR**)yya, 2); + YYSTYPE YYFAR* yya[4]; + yyinitdebug((void YYFAR**)yya, 4); #endif { -#line 166 "C:\\spongebob\\Utils\\scripter\\parser.y" -(*(YYSTYPE YYFAR*)yyvalptr).treenode=new CTreeNode(VALUE_EXPR,yyattribute(1 - 1).value); +#line 156 "C:\\spongebob\\Utils\\scripter\\parser.y" +(*(YYSTYPE YYFAR*)yyvalptr).treenode=new CTreeNode(SUBTRACT_EXPR,yyattribute(1 - 3).treenode,yyattribute(3 - 3).treenode); #line 388 "C:\\spongebob\\Utils\\scripter\\parser.cpp" } } @@ -395,8 +395,8 @@ s_baseTreeNode=yyattribute(1 - 1).treenode; yyinitdebug((void YYFAR**)yya, 4); #endif { -#line 167 "C:\\spongebob\\Utils\\scripter\\parser.y" -(*(YYSTYPE YYFAR*)yyvalptr).treenode=yyattribute(2 - 3).treenode; +#line 157 "C:\\spongebob\\Utils\\scripter\\parser.y" +(*(YYSTYPE YYFAR*)yyvalptr).treenode=new CTreeNode(MULTIPLY_EXPR,yyattribute(1 - 3).treenode,yyattribute(3 - 3).treenode); #line 401 "C:\\spongebob\\Utils\\scripter\\parser.cpp" } } @@ -404,12 +404,12 @@ s_baseTreeNode=yyattribute(1 - 1).treenode; case 26: { #ifdef YYDEBUG - YYSTYPE YYFAR* yya[2]; - yyinitdebug((void YYFAR**)yya, 2); + YYSTYPE YYFAR* yya[4]; + yyinitdebug((void YYFAR**)yya, 4); #endif { -#line 168 "C:\\spongebob\\Utils\\scripter\\parser.y" -(*(YYSTYPE YYFAR*)yyvalptr).treenode=new CTreeNode(VARIABLE_EXPR,yyattribute(1 - 1).variableIdx); +#line 158 "C:\\spongebob\\Utils\\scripter\\parser.y" +(*(YYSTYPE YYFAR*)yyvalptr).treenode=new CTreeNode(DIVIDE_EXPR,yyattribute(1 - 3).treenode,yyattribute(3 - 3).treenode); #line 414 "C:\\spongebob\\Utils\\scripter\\parser.cpp" } } @@ -417,12 +417,12 @@ s_baseTreeNode=yyattribute(1 - 1).treenode; case 27: { #ifdef YYDEBUG - YYSTYPE YYFAR* yya[4]; - yyinitdebug((void YYFAR**)yya, 4); + YYSTYPE YYFAR* yya[2]; + yyinitdebug((void YYFAR**)yya, 2); #endif { -#line 171 "C:\\spongebob\\Utils\\scripter\\parser.y" -(*(YYSTYPE YYFAR*)yyvalptr).treenode=new CTreeNode(PLUS_EXPR,yyattribute(1 - 3).treenode,yyattribute(3 - 3).treenode); +#line 159 "C:\\spongebob\\Utils\\scripter\\parser.y" +(*(YYSTYPE YYFAR*)yyvalptr).treenode=yyattribute(1 - 1).treenode; #line 427 "C:\\spongebob\\Utils\\scripter\\parser.cpp" } } @@ -430,78 +430,26 @@ s_baseTreeNode=yyattribute(1 - 1).treenode; case 28: { #ifdef YYDEBUG - YYSTYPE YYFAR* yya[4]; - yyinitdebug((void YYFAR**)yya, 4); + YYSTYPE YYFAR* yya[3]; + yyinitdebug((void YYFAR**)yya, 3); #endif { -#line 172 "C:\\spongebob\\Utils\\scripter\\parser.y" -(*(YYSTYPE YYFAR*)yyvalptr).treenode=new CTreeNode(SUBTRACT_EXPR,yyattribute(1 - 3).treenode,yyattribute(3 - 3).treenode); +#line 164 "C:\\spongebob\\Utils\\scripter\\parser.y" +if(yyattribute(1 - 2).functionNumber!=-1){m_functionNumber=yyattribute(1 - 2).functionNumber;m_functionArgs=getFunctionArgs(yyattribute(1 - 2).functionNumber);} #line 440 "C:\\spongebob\\Utils\\scripter\\parser.cpp" } } break; case 29: { -#ifdef YYDEBUG - YYSTYPE YYFAR* yya[4]; - yyinitdebug((void YYFAR**)yya, 4); -#endif - { -#line 173 "C:\\spongebob\\Utils\\scripter\\parser.y" -(*(YYSTYPE YYFAR*)yyvalptr).treenode=new CTreeNode(MULTIPLY_EXPR,yyattribute(1 - 3).treenode,yyattribute(3 - 3).treenode); -#line 453 "C:\\spongebob\\Utils\\scripter\\parser.cpp" - } - } - break; - case 30: - { -#ifdef YYDEBUG - YYSTYPE YYFAR* yya[4]; - yyinitdebug((void YYFAR**)yya, 4); -#endif - { -#line 174 "C:\\spongebob\\Utils\\scripter\\parser.y" -(*(YYSTYPE YYFAR*)yyvalptr).treenode=new CTreeNode(DIVIDE_EXPR,yyattribute(1 - 3).treenode,yyattribute(3 - 3).treenode); -#line 466 "C:\\spongebob\\Utils\\scripter\\parser.cpp" - } - } - break; - case 31: - { -#ifdef YYDEBUG - YYSTYPE YYFAR* yya[2]; - yyinitdebug((void YYFAR**)yya, 2); -#endif - { -#line 175 "C:\\spongebob\\Utils\\scripter\\parser.y" -(*(YYSTYPE YYFAR*)yyvalptr).treenode=yyattribute(1 - 1).treenode; -#line 479 "C:\\spongebob\\Utils\\scripter\\parser.cpp" - } - } - break; - case 32: - { -#ifdef YYDEBUG - YYSTYPE YYFAR* yya[3]; - yyinitdebug((void YYFAR**)yya, 3); -#endif - { -#line 180 "C:\\spongebob\\Utils\\scripter\\parser.y" -if(yyattribute(1 - 2).functionNumber!=-1){m_functionNumber=yyattribute(1 - 2).functionNumber;m_functionArgs=getFunctionArgs(yyattribute(1 - 2).functionNumber);} -#line 492 "C:\\spongebob\\Utils\\scripter\\parser.cpp" - } - } - break; - case 33: - { #ifdef YYDEBUG YYSTYPE YYFAR* yya[5]; yyinitdebug((void YYFAR**)yya, 5); #endif { -#line 181 "C:\\spongebob\\Utils\\scripter\\parser.y" +#line 165 "C:\\spongebob\\Utils\\scripter\\parser.y" (*(YYSTYPE YYFAR*)yyvalptr).treenode=new CTreeNode(STMT_LIST,m_functionArgs,new CTreeNode(FUNCTION_EXPR,m_functionNumber)); -#line 505 "C:\\spongebob\\Utils\\scripter\\parser.cpp" +#line 453 "C:\\spongebob\\Utils\\scripter\\parser.cpp" } } break; @@ -510,14 +458,14 @@ if(yyattribute(1 - 2).functionNumber!=-1){m_functionNumber=yyattribute(1 - 2).fu break; } } -#line 186 "C:\\spongebob\\Utils\\scripter\\parser.y" +#line 170 "C:\\spongebob\\Utils\\scripter\\parser.y" ///////////////////////////////////////////////////////////////////////////// // programs section -#line 521 "C:\\spongebob\\Utils\\scripter\\parser.cpp" +#line 469 "C:\\spongebob\\Utils\\scripter\\parser.cpp" void YYPARSENAME::yytables() { yyattribute_size = sizeof(YYSTYPE); @@ -563,32 +511,28 @@ void YYPARSENAME::yytables() "statement: END_STMT", "statement: STOP END_STMT", "statement: PAUSE END_STMT", - "statement: PRINT OPEN_PAR value CLOSE_PAR END_STMT", + "statement: PRINT OPEN_PAR expression CLOSE_PAR END_STMT", "statement: assign_expression END_STMT", - "statement: IF OPEN_PAR expression CLOSE_PAR statement", - "statement: IF OPEN_PAR expression CLOSE_PAR statement ELSE statement", - "statement: WHILE OPEN_PAR expression CLOSE_PAR statement", - "statement: DO statement WHILE OPEN_PAR expression CLOSE_PAR END_STMT", + "statement: IF OPEN_PAR conditional CLOSE_PAR statement", + "statement: IF OPEN_PAR conditional CLOSE_PAR statement ELSE statement", + "statement: WHILE OPEN_PAR conditional CLOSE_PAR statement", + "statement: DO statement WHILE OPEN_PAR conditional CLOSE_PAR END_STMT", "statement: BEGIN_CS statement_list END_CS", "statement: function END_STMT", - "assign_expression: variable ASSIGN value", - "expression: equal_expression", - "expression: notequal_expression", - "expression: lessthan_expression", - "expression: greaterthan_expression", - "equal_expression: value EQUAL value", - "notequal_expression: value NOTEQUAL value", - "lessthan_expression: value LESSTHAN value", - "greaterthan_expression: value GREATERTHAN value", + "assign_expression: variable ASSIGN expression", + "conditional: expression EQUAL expression", + "conditional: expression NOTEQUAL expression", + "conditional: expression LESSTHAN expression", + "conditional: expression GREATERTHAN expression", "variable: VARIABLE", - "value: VALUE", - "value: OPEN_PAR value CLOSE_PAR", - "value: VARIABLE", - "value: value PLUS value", - "value: value SUBTRACT value", - "value: value MULTIPLY value", - "value: value DIVIDE value", - "value: function", + "expression: VALUE", + "expression: OPEN_PAR expression CLOSE_PAR", + "expression: VARIABLE", + "expression: expression PLUS expression", + "expression: expression SUBTRACT expression", + "expression: expression MULTIPLY expression", + "expression: expression DIVIDE expression", + "expression: function", "$$1:", "function: FUNCTION OPEN_PAR $$1 CLOSE_PAR" }; @@ -612,114 +556,110 @@ void YYPARSENAME::yytables() { 3, 3, 12 }, { 3, 2, 13 }, { 4, 3, 14 }, - { 5, 1, 15 }, - { 5, 1, 16 }, - { 5, 1, 17 }, - { 5, 1, 18 }, - { 6, 3, 19 }, - { 7, 3, 20 }, - { 8, 3, 21 }, - { 9, 3, 22 }, - { 10, 1, 23 }, - { 11, 1, 24 }, - { 11, 3, 25 }, - { 11, 1, 26 }, - { 11, 3, 27 }, - { 11, 3, 28 }, - { 11, 3, 29 }, - { 11, 3, 30 }, - { 11, 1, 31 }, - { 13, 0, 32 }, - { 12, 4, 33 } + { 5, 3, 15 }, + { 5, 3, 16 }, + { 5, 3, 17 }, + { 5, 3, 18 }, + { 6, 1, 19 }, + { 7, 1, 20 }, + { 7, 3, 21 }, + { 7, 1, 22 }, + { 7, 3, 23 }, + { 7, 3, 24 }, + { 7, 3, 25 }, + { 7, 3, 26 }, + { 7, 1, 27 }, + { 9, 0, 28 }, + { 8, 4, 29 } }; yyreduction = reduction; static const yytokenaction_t YYNEARFAR YYBASED_CODE tokenaction[] = { - { 71, YYAT_SHIFT, 3 }, - { 71, YYAT_SHIFT, 4 }, - { 72, YYAT_SHIFT, 74 }, - { 71, YYAT_SHIFT, 5 }, - { 71, YYAT_SHIFT, 6 }, - { 71, YYAT_SHIFT, 7 }, - { 71, YYAT_SHIFT, 8 }, + { 67, YYAT_SHIFT, 3 }, + { 67, YYAT_SHIFT, 4 }, + { 68, YYAT_SHIFT, 70 }, + { 67, YYAT_SHIFT, 5 }, + { 67, YYAT_SHIFT, 6 }, + { 67, YYAT_SHIFT, 7 }, + { 67, YYAT_SHIFT, 8 }, { 2, YYAT_SHIFT, 3 }, { 2, YYAT_SHIFT, 4 }, - { 69, YYAT_SHIFT, 72 }, + { 65, YYAT_SHIFT, 68 }, { 2, YYAT_SHIFT, 5 }, { 2, YYAT_SHIFT, 6 }, { 2, YYAT_SHIFT, 7 }, { 2, YYAT_SHIFT, 8 }, - { 59, YYAT_SHIFT, 71 }, - { 56, YYAT_SHIFT, 70 }, - { 71, YYAT_SHIFT, 9 }, - { 42, YYAT_SHIFT, 57 }, - { 40, YYAT_SHIFT, 56 }, - { 71, YYAT_SHIFT, 10 }, - { 39, YYAT_SHIFT, 55 }, - { 38, YYAT_SHIFT, 54 }, - { 71, YYAT_SHIFT, 11 }, + { 55, YYAT_SHIFT, 67 }, + { 52, YYAT_SHIFT, 66 }, + { 67, YYAT_SHIFT, 9 }, + { 38, YYAT_SHIFT, 53 }, + { 36, YYAT_SHIFT, 52 }, + { 67, YYAT_SHIFT, 10 }, + { 35, YYAT_SHIFT, 51 }, + { 34, YYAT_SHIFT, 50 }, + { 67, YYAT_SHIFT, 11 }, { 2, YYAT_SHIFT, 9 }, - { 71, YYAT_SHIFT, 12 }, - { 31, YYAT_SHIFT, 45 }, + { 67, YYAT_SHIFT, 12 }, + { 31, YYAT_SHIFT, 41 }, { 2, YYAT_SHIFT, 10 }, - { 23, YYAT_SHIFT, 41 }, - { 20, YYAT_SHIFT, 39 }, + { 23, YYAT_SHIFT, 37 }, + { 20, YYAT_SHIFT, 35 }, { 2, YYAT_SHIFT, 11 }, { 16, YYAT_SHIFT, 27 }, { 2, YYAT_SHIFT, 12 }, - { 36, YYAT_SHIFT, 46 }, - { 36, YYAT_SHIFT, 47 }, - { 36, YYAT_SHIFT, 48 }, - { 36, YYAT_SHIFT, 49 }, + { 32, YYAT_SHIFT, 42 }, + { 32, YYAT_SHIFT, 43 }, + { 32, YYAT_SHIFT, 44 }, + { 32, YYAT_SHIFT, 45 }, { 15, YYAT_SHIFT, 26 }, - { 44, YYAT_SHIFT, 50 }, - { 44, YYAT_SHIFT, 51 }, - { 44, YYAT_SHIFT, 52 }, - { 44, YYAT_SHIFT, 53 }, - { 55, YYAT_SHIFT, 28 }, - { 36, YYAT_ERROR, 0 }, - { 44, YYAT_SHIFT, 58 }, + { 40, YYAT_SHIFT, 46 }, + { 40, YYAT_SHIFT, 47 }, + { 40, YYAT_SHIFT, 48 }, + { 40, YYAT_SHIFT, 49 }, + { 51, YYAT_SHIFT, 28 }, + { 32, YYAT_ERROR, 0 }, + { 40, YYAT_SHIFT, 54 }, { 14, YYAT_SHIFT, 25 }, { 12, YYAT_SHIFT, 24 }, - { 55, YYAT_SHIFT, 29 }, - { 55, YYAT_SHIFT, 30 }, - { 55, YYAT_SHIFT, 12 }, - { 67, YYAT_SHIFT, 50 }, - { 67, YYAT_SHIFT, 51 }, - { 67, YYAT_SHIFT, 52 }, - { 67, YYAT_SHIFT, 53 }, - { 66, YYAT_SHIFT, 50 }, - { 66, YYAT_SHIFT, 51 }, - { 66, YYAT_SHIFT, 52 }, - { 66, YYAT_SHIFT, 53 }, - { 65, YYAT_SHIFT, 50 }, - { 65, YYAT_SHIFT, 51 }, - { 65, YYAT_SHIFT, 52 }, - { 65, YYAT_SHIFT, 53 }, - { 64, YYAT_SHIFT, 50 }, - { 64, YYAT_SHIFT, 51 }, - { 64, YYAT_SHIFT, 52 }, - { 64, YYAT_SHIFT, 53 }, - { 63, YYAT_SHIFT, 50 }, - { 63, YYAT_SHIFT, 51 }, - { 63, YYAT_SHIFT, 52 }, - { 63, YYAT_SHIFT, 53 }, - { 62, YYAT_SHIFT, 50 }, - { 62, YYAT_SHIFT, 51 }, - { 62, YYAT_SHIFT, 52 }, - { 62, YYAT_SHIFT, 53 }, - { 61, YYAT_SHIFT, 50 }, - { 61, YYAT_SHIFT, 51 }, - { 61, YYAT_SHIFT, 52 }, - { 61, YYAT_SHIFT, 53 }, - { 60, YYAT_SHIFT, 50 }, - { 60, YYAT_SHIFT, 51 }, - { 60, YYAT_SHIFT, 52 }, - { 60, YYAT_SHIFT, 53 }, - { 43, YYAT_SHIFT, 50 }, - { 43, YYAT_SHIFT, 51 }, - { 43, YYAT_SHIFT, 52 }, - { 43, YYAT_SHIFT, 53 }, + { 51, YYAT_SHIFT, 29 }, + { 51, YYAT_SHIFT, 30 }, + { 51, YYAT_SHIFT, 12 }, + { 63, YYAT_SHIFT, 46 }, + { 63, YYAT_SHIFT, 47 }, + { 63, YYAT_SHIFT, 48 }, + { 63, YYAT_SHIFT, 49 }, + { 62, YYAT_SHIFT, 46 }, + { 62, YYAT_SHIFT, 47 }, + { 62, YYAT_SHIFT, 48 }, + { 62, YYAT_SHIFT, 49 }, + { 61, YYAT_SHIFT, 46 }, + { 61, YYAT_SHIFT, 47 }, + { 61, YYAT_SHIFT, 48 }, + { 61, YYAT_SHIFT, 49 }, + { 60, YYAT_SHIFT, 46 }, + { 60, YYAT_SHIFT, 47 }, + { 60, YYAT_SHIFT, 48 }, + { 60, YYAT_SHIFT, 49 }, + { 59, YYAT_SHIFT, 46 }, + { 59, YYAT_SHIFT, 47 }, + { 59, YYAT_SHIFT, 48 }, + { 59, YYAT_SHIFT, 49 }, + { 58, YYAT_SHIFT, 46 }, + { 58, YYAT_SHIFT, 47 }, + { 58, YYAT_SHIFT, 48 }, + { 58, YYAT_SHIFT, 49 }, + { 57, YYAT_SHIFT, 46 }, + { 57, YYAT_SHIFT, 47 }, + { 57, YYAT_SHIFT, 48 }, + { 57, YYAT_SHIFT, 49 }, + { 56, YYAT_SHIFT, 46 }, + { 56, YYAT_SHIFT, 47 }, + { 56, YYAT_SHIFT, 48 }, + { 56, YYAT_SHIFT, 49 }, + { 39, YYAT_SHIFT, 46 }, + { 39, YYAT_SHIFT, 47 }, + { 39, YYAT_SHIFT, 48 }, + { 39, YYAT_SHIFT, 49 }, { 8, YYAT_SHIFT, 22 }, { 7, YYAT_SHIFT, 21 }, { 5, YYAT_SHIFT, 19 }, @@ -734,75 +674,71 @@ void YYPARSENAME::yytables() { 0, 0, YYAT_REDUCE, 3 }, { 90, 1, YYAT_ERROR, 0 }, { -250, 1, YYAT_REDUCE, 1 }, - { -184, 1, YYAT_DEFAULT, 72 }, - { -186, 1, YYAT_DEFAULT, 39 }, - { -187, 1, YYAT_DEFAULT, 39 }, - { 0, 0, YYAT_DEFAULT, 71 }, - { -187, 1, YYAT_DEFAULT, 72 }, - { -189, 1, YYAT_DEFAULT, 39 }, + { -184, 1, YYAT_DEFAULT, 68 }, + { -186, 1, YYAT_DEFAULT, 35 }, + { -187, 1, YYAT_DEFAULT, 35 }, + { 0, 0, YYAT_DEFAULT, 67 }, + { -187, 1, YYAT_DEFAULT, 68 }, + { -189, 1, YYAT_DEFAULT, 35 }, { 0, 0, YYAT_REDUCE, 4 }, { 0, 0, YYAT_REDUCE, 3 }, - { 0, 0, YYAT_REDUCE, 24 }, - { -229, 1, YYAT_DEFAULT, 39 }, + { 0, 0, YYAT_REDUCE, 20 }, + { -229, 1, YYAT_DEFAULT, 35 }, { 0, 0, YYAT_REDUCE, 2 }, - { -229, 1, YYAT_DEFAULT, 72 }, + { -229, 1, YYAT_DEFAULT, 68 }, { -228, 1, YYAT_ERROR, 0 }, - { -243, 1, YYAT_DEFAULT, 72 }, + { -243, 1, YYAT_DEFAULT, 68 }, { 0, 0, YYAT_REDUCE, 5 }, - { 0, 0, YYAT_DEFAULT, 55 }, - { 0, 0, YYAT_DEFAULT, 55 }, + { 0, 0, YYAT_DEFAULT, 51 }, + { 0, 0, YYAT_DEFAULT, 51 }, { -232, 1, YYAT_ERROR, 0 }, { 0, 0, YYAT_REDUCE, 6 }, - { 0, 0, YYAT_DEFAULT, 55 }, - { -250, 1, YYAT_DEFAULT, 71 }, - { 0, 0, YYAT_REDUCE, 33 }, + { 0, 0, YYAT_DEFAULT, 51 }, + { -250, 1, YYAT_DEFAULT, 67 }, + { 0, 0, YYAT_REDUCE, 29 }, { 0, 0, YYAT_REDUCE, 8 }, - { 0, 0, YYAT_DEFAULT, 55 }, + { 0, 0, YYAT_DEFAULT, 51 }, { 0, 0, YYAT_REDUCE, 14 }, - { 0, 0, YYAT_DEFAULT, 55 }, - { 0, 0, YYAT_REDUCE, 27 }, - { 0, 0, YYAT_REDUCE, 25 }, - { -250, 1, YYAT_DEFAULT, 69 }, - { 0, 0, YYAT_REDUCE, 16 }, - { 0, 0, YYAT_REDUCE, 17 }, - { 0, 0, YYAT_REDUCE, 18 }, - { 0, 0, YYAT_REDUCE, 19 }, - { -233, 1, YYAT_DEFAULT, 44 }, - { 0, 0, YYAT_REDUCE, 32 }, - { -254, 1, YYAT_DEFAULT, 69 }, + { 0, 0, YYAT_DEFAULT, 51 }, + { 0, 0, YYAT_REDUCE, 23 }, + { 0, 0, YYAT_REDUCE, 21 }, + { -250, 1, YYAT_DEFAULT, 65 }, + { -233, 1, YYAT_DEFAULT, 40 }, + { 0, 0, YYAT_REDUCE, 28 }, + { -254, 1, YYAT_DEFAULT, 65 }, { -254, 1, YYAT_ERROR, 0 }, - { -257, 1, YYAT_DEFAULT, 44 }, + { -257, 1, YYAT_DEFAULT, 40 }, { 0, 0, YYAT_REDUCE, 13 }, - { -258, 1, YYAT_DEFAULT, 69 }, + { -258, 1, YYAT_DEFAULT, 65 }, { -188, 1, YYAT_REDUCE, 15 }, - { -232, 1, YYAT_DEFAULT, 69 }, - { 0, 0, YYAT_DEFAULT, 71 }, - { 0, 0, YYAT_DEFAULT, 55 }, - { 0, 0, YYAT_DEFAULT, 55 }, - { 0, 0, YYAT_DEFAULT, 55 }, - { 0, 0, YYAT_DEFAULT, 55 }, - { 0, 0, YYAT_DEFAULT, 55 }, - { 0, 0, YYAT_DEFAULT, 55 }, - { 0, 0, YYAT_DEFAULT, 55 }, - { 0, 0, YYAT_DEFAULT, 55 }, - { 0, 0, YYAT_DEFAULT, 71 }, - { -233, 1, YYAT_DEFAULT, 39 }, - { -258, 1, YYAT_DEFAULT, 72 }, - { 0, 0, YYAT_REDUCE, 34 }, - { 0, 0, YYAT_REDUCE, 26 }, + { -232, 1, YYAT_DEFAULT, 65 }, + { 0, 0, YYAT_DEFAULT, 67 }, + { 0, 0, YYAT_DEFAULT, 51 }, + { 0, 0, YYAT_DEFAULT, 51 }, + { 0, 0, YYAT_DEFAULT, 51 }, + { 0, 0, YYAT_DEFAULT, 51 }, + { 0, 0, YYAT_DEFAULT, 51 }, + { 0, 0, YYAT_DEFAULT, 51 }, + { 0, 0, YYAT_DEFAULT, 51 }, + { 0, 0, YYAT_DEFAULT, 51 }, + { 0, 0, YYAT_DEFAULT, 67 }, + { -233, 1, YYAT_DEFAULT, 35 }, + { -258, 1, YYAT_DEFAULT, 68 }, + { 0, 0, YYAT_REDUCE, 30 }, + { 0, 0, YYAT_REDUCE, 22 }, { -245, 1, YYAT_REDUCE, 9 }, - { -192, 1, YYAT_REDUCE, 20 }, - { -196, 1, YYAT_REDUCE, 21 }, - { -200, 1, YYAT_REDUCE, 22 }, - { -204, 1, YYAT_REDUCE, 23 }, - { -208, 1, YYAT_REDUCE, 28 }, - { -212, 1, YYAT_REDUCE, 29 }, - { -216, 1, YYAT_REDUCE, 30 }, - { -220, 1, YYAT_REDUCE, 31 }, + { -192, 1, YYAT_REDUCE, 16 }, + { -196, 1, YYAT_REDUCE, 17 }, + { -200, 1, YYAT_REDUCE, 18 }, + { -204, 1, YYAT_REDUCE, 19 }, + { -208, 1, YYAT_REDUCE, 24 }, + { -212, 1, YYAT_REDUCE, 25 }, + { -216, 1, YYAT_REDUCE, 26 }, + { -220, 1, YYAT_REDUCE, 27 }, { 0, 0, YYAT_REDUCE, 11 }, { -266, 1, YYAT_ERROR, 0 }, { 0, 0, YYAT_REDUCE, 7 }, - { -257, 1, YYAT_DEFAULT, 72 }, + { -257, 1, YYAT_DEFAULT, 68 }, { -271, 1, YYAT_ERROR, 0 }, { 0, 0, YYAT_REDUCE, 10 }, { 0, 0, YYAT_REDUCE, 12 } @@ -810,54 +746,50 @@ void YYPARSENAME::yytables() yystateaction = stateaction; static const yynontermgoto_t YYNEARFAR YYBASED_CODE nontermgoto[] = { - { 55, 69 }, - { 55, 32 }, - { 55, 33 }, - { 55, 34 }, - { 55, 35 }, - { 54, 68 }, - { 55, 36 }, - { 71, 73 }, - { 71, 14 }, - { 53, 67 }, - { 53, 37 }, + { 67, 69 }, + { 67, 14 }, + { 51, 65 }, + { 67, 15 }, + { 51, 32 }, + { 67, 16 }, + { 49, 63 }, + { 49, 33 }, { 0, 1 }, { 0, 2 }, - { 52, 66 }, - { 71, 15 }, - { 51, 65 }, - { 71, 16 }, { 50, 64 }, - { 49, 63 }, { 48, 62 }, { 47, 61 }, { 46, 60 }, { 45, 59 }, - { 28, 44 }, - { 26, 43 }, - { 24, 42 }, + { 44, 58 }, + { 43, 57 }, + { 42, 56 }, + { 41, 55 }, + { 28, 40 }, + { 26, 39 }, + { 24, 38 }, { 23, 13 }, - { 22, 40 }, - { 19, 38 }, + { 22, 36 }, + { 19, 34 }, { 18, 31 }, { 10, 23 }, { 6, 20 } }; yynontermgoto = nontermgoto; - yynontermgoto_size = 32; + yynontermgoto_size = 28; static const yystategoto_t YYNEARFAR YYBASED_CODE stategoto[] = { - { 10, -1 }, + { 7, -1 }, { 0, -1 }, { 0, 23 }, { 0, -1 }, { 0, -1 }, { 0, -1 }, - { 28, 71 }, + { 24, 67 }, { 0, -1 }, { 0, -1 }, { 0, -1 }, - { 28, -1 }, + { 24, -1 }, { 0, -1 }, { 0, -1 }, { 0, -1 }, @@ -865,17 +797,40 @@ void YYPARSENAME::yytables() { 0, -1 }, { 0, -1 }, { 0, -1 }, - { 24, 55 }, - { 23, 55 }, + { 20, 51 }, + { 19, 51 }, { 0, -1 }, { 0, -1 }, - { 16, 53 }, - { 23, 71 }, + { 16, 49 }, + { 19, 67 }, { 12, -1 }, { 0, -1 }, - { 13, 53 }, + { 13, 49 }, { 0, -1 }, - { 12, 53 }, + { 12, 49 }, + { 0, -1 }, + { 0, -1 }, + { 0, -1 }, + { 0, -1 }, + { 0, -1 }, + { 0, -1 }, + { 0, -1 }, + { 0, -1 }, + { 0, -1 }, + { 0, -1 }, + { 0, -1 }, + { 0, -1 }, + { 15, 67 }, + { 10, 49 }, + { 9, 49 }, + { 8, 49 }, + { 7, 49 }, + { 6, 49 }, + { 5, 49 }, + { 4, 49 }, + { -1, -1 }, + { 7, 67 }, + { -3, 49 }, { 0, -1 }, { 0, -1 }, { 0, -1 }, @@ -891,34 +846,7 @@ void YYPARSENAME::yytables() { 0, -1 }, { 0, -1 }, { 0, -1 }, - { 0, -1 }, - { 19, 71 }, - { 10, 53 }, - { 9, 53 }, - { 8, 53 }, - { 7, 53 }, - { 6, 53 }, - { 4, 53 }, - { 2, 53 }, - { -2, -1 }, - { 2, 71 }, - { -5, 53 }, - { 0, -1 }, - { 0, -1 }, - { 0, -1 }, - { 0, -1 }, - { 0, -1 }, - { 0, -1 }, - { 0, -1 }, - { 0, -1 }, - { 0, -1 }, - { 0, -1 }, - { 0, -1 }, - { 0, -1 }, - { 0, -1 }, - { 0, -1 }, - { 0, -1 }, - { 4, -1 }, + { -3, -1 }, { 0, -1 }, { 0, -1 }, { 0, -1 } diff --git a/Utils/Scripter/parser.v b/Utils/Scripter/parser.v index 7ddbe849d..3e51cb587 100644 --- a/Utils/Scripter/parser.v +++ b/Utils/Scripter/parser.v @@ -8,44 +8,36 @@ 4 statement : END_STMT 5 | STOP END_STMT 6 | PAUSE END_STMT - 7 | PRINT OPEN_PAR value CLOSE_PAR END_STMT + 7 | PRINT OPEN_PAR expression CLOSE_PAR END_STMT 8 | assign_expression END_STMT - 9 | IF OPEN_PAR expression CLOSE_PAR statement - 10 | IF OPEN_PAR expression CLOSE_PAR statement ELSE statement - 11 | WHILE OPEN_PAR expression CLOSE_PAR statement - 12 | DO statement WHILE OPEN_PAR expression CLOSE_PAR END_STMT + 9 | IF OPEN_PAR conditional CLOSE_PAR statement + 10 | IF OPEN_PAR conditional CLOSE_PAR statement ELSE statement + 11 | WHILE OPEN_PAR conditional CLOSE_PAR statement + 12 | DO statement WHILE OPEN_PAR conditional CLOSE_PAR END_STMT 13 | BEGIN_CS statement_list END_CS 14 | function END_STMT - 15 assign_expression : variable ASSIGN value + 15 assign_expression : variable ASSIGN expression - 16 expression : equal_expression - 17 | notequal_expression - 18 | lessthan_expression - 19 | greaterthan_expression + 16 conditional : expression EQUAL expression + 17 | expression NOTEQUAL expression + 18 | expression LESSTHAN expression + 19 | expression GREATERTHAN expression - 20 equal_expression : value EQUAL value + 20 variable : VARIABLE - 21 notequal_expression : value NOTEQUAL value + 21 expression : VALUE + 22 | OPEN_PAR expression CLOSE_PAR + 23 | VARIABLE + 24 | expression PLUS expression + 25 | expression SUBTRACT expression + 26 | expression MULTIPLY expression + 27 | expression DIVIDE expression + 28 | function - 22 lessthan_expression : value LESSTHAN value + 29 $$1 : - 23 greaterthan_expression : value GREATERTHAN value - - 24 variable : VARIABLE - - 25 value : VALUE - 26 | OPEN_PAR value CLOSE_PAR - 27 | VARIABLE - 28 | value PLUS value - 29 | value SUBTRACT value - 30 | value MULTIPLY value - 31 | value DIVIDE value - 32 | function - - 33 $$1 : - - 34 function : FUNCTION OPEN_PAR $$1 CLOSE_PAR + 30 function : FUNCTION OPEN_PAR $$1 CLOSE_PAR state 0 @@ -93,20 +85,20 @@ state 3 state 4 - statement : IF . OPEN_PAR expression CLOSE_PAR statement - statement : IF . OPEN_PAR expression CLOSE_PAR statement ELSE statement + statement : IF . OPEN_PAR conditional CLOSE_PAR statement + statement : IF . OPEN_PAR conditional CLOSE_PAR statement ELSE statement OPEN_PAR shift 18 state 5 - statement : WHILE . OPEN_PAR expression CLOSE_PAR statement + statement : WHILE . OPEN_PAR conditional CLOSE_PAR statement OPEN_PAR shift 19 state 6 - statement : DO . statement WHILE OPEN_PAR expression CLOSE_PAR END_STMT + statement : DO . statement WHILE OPEN_PAR conditional CLOSE_PAR END_STMT STOP shift 3 IF shift 4 @@ -132,7 +124,7 @@ state 7 state 8 - statement : PRINT . OPEN_PAR value CLOSE_PAR END_STMT + statement : PRINT . OPEN_PAR expression CLOSE_PAR END_STMT OPEN_PAR shift 22 @@ -153,9 +145,9 @@ state 10 state 11 - variable : VARIABLE . (24) + variable : VARIABLE . (20) - . reduce 24 + . reduce 20 state 12 @@ -177,7 +169,7 @@ state 14 state 15 - assign_expression : variable . ASSIGN value + assign_expression : variable . ASSIGN expression ASSIGN shift 26 @@ -195,44 +187,36 @@ state 17 state 18 - statement : IF OPEN_PAR . expression CLOSE_PAR statement - statement : IF OPEN_PAR . expression CLOSE_PAR statement ELSE statement + statement : IF OPEN_PAR . conditional CLOSE_PAR statement + statement : IF OPEN_PAR . conditional CLOSE_PAR statement ELSE statement OPEN_PAR shift 28 VARIABLE shift 29 VALUE shift 30 FUNCTION shift 12 - expression goto 31 - equal_expression goto 32 - notequal_expression goto 33 - lessthan_expression goto 34 - greaterthan_expression goto 35 - value goto 36 - function goto 37 + conditional goto 31 + expression goto 32 + function goto 33 state 19 - statement : WHILE OPEN_PAR . expression CLOSE_PAR statement + statement : WHILE OPEN_PAR . conditional CLOSE_PAR statement OPEN_PAR shift 28 VARIABLE shift 29 VALUE shift 30 FUNCTION shift 12 - expression goto 38 - equal_expression goto 32 - notequal_expression goto 33 - lessthan_expression goto 34 - greaterthan_expression goto 35 - value goto 36 - function goto 37 + conditional goto 34 + expression goto 32 + function goto 33 state 20 - statement : DO statement . WHILE OPEN_PAR expression CLOSE_PAR END_STMT + statement : DO statement . WHILE OPEN_PAR conditional CLOSE_PAR END_STMT - WHILE shift 39 + WHILE shift 35 state 21 @@ -242,15 +226,15 @@ state 21 state 22 - statement : PRINT OPEN_PAR . value CLOSE_PAR END_STMT + statement : PRINT OPEN_PAR . expression CLOSE_PAR END_STMT OPEN_PAR shift 28 VARIABLE shift 29 VALUE shift 30 FUNCTION shift 12 - value goto 40 - function goto 37 + expression goto 36 + function goto 33 state 23 @@ -265,7 +249,7 @@ state 23 PRINT shift 8 END_STMT shift 9 BEGIN_CS shift 10 - END_CS shift 41 + END_CS shift 37 VARIABLE shift 11 FUNCTION shift 12 @@ -277,11 +261,11 @@ state 23 state 24 function : FUNCTION OPEN_PAR . $$1 CLOSE_PAR - $$1 : . (33) + $$1 : . (29) - . reduce 33 + . reduce 29 - $$1 goto 42 + $$1 goto 38 state 25 @@ -291,15 +275,15 @@ state 25 state 26 - assign_expression : variable ASSIGN . value + assign_expression : variable ASSIGN . expression OPEN_PAR shift 28 VARIABLE shift 29 VALUE shift 30 FUNCTION shift 12 - value goto 43 - function goto 37 + expression goto 39 + function goto 33 state 27 @@ -309,271 +293,247 @@ state 27 state 28 - value : OPEN_PAR . value CLOSE_PAR + expression : OPEN_PAR . expression CLOSE_PAR OPEN_PAR shift 28 VARIABLE shift 29 VALUE shift 30 FUNCTION shift 12 - value goto 44 - function goto 37 + expression goto 40 + function goto 33 state 29 - value : VARIABLE . (27) + expression : VARIABLE . (23) - . reduce 27 + . reduce 23 state 30 - value : VALUE . (25) + expression : VALUE . (21) - . reduce 25 + . reduce 21 state 31 - statement : IF OPEN_PAR expression . CLOSE_PAR statement - statement : IF OPEN_PAR expression . CLOSE_PAR statement ELSE statement + statement : IF OPEN_PAR conditional . CLOSE_PAR statement + statement : IF OPEN_PAR conditional . CLOSE_PAR statement ELSE statement - CLOSE_PAR shift 45 + CLOSE_PAR shift 41 state 32 - expression : equal_expression . (16) + conditional : expression . EQUAL expression + conditional : expression . NOTEQUAL expression + conditional : expression . LESSTHAN expression + conditional : expression . GREATERTHAN expression + expression : expression . PLUS expression + expression : expression . SUBTRACT expression + expression : expression . MULTIPLY expression + expression : expression . DIVIDE expression - . reduce 16 + EQUAL shift 42 + NOTEQUAL shift 43 + LESSTHAN shift 44 + GREATERTHAN shift 45 + PLUS shift 46 + SUBTRACT shift 47 + MULTIPLY shift 48 + DIVIDE shift 49 state 33 - expression : notequal_expression . (17) + expression : function . (28) - . reduce 17 + . reduce 28 state 34 - expression : lessthan_expression . (18) + statement : WHILE OPEN_PAR conditional . CLOSE_PAR statement - . reduce 18 + CLOSE_PAR shift 50 state 35 - expression : greaterthan_expression . (19) + statement : DO statement WHILE . OPEN_PAR conditional CLOSE_PAR END_STMT - . reduce 19 + OPEN_PAR shift 51 state 36 - equal_expression : value . EQUAL value - notequal_expression : value . NOTEQUAL value - lessthan_expression : value . LESSTHAN value - greaterthan_expression : value . GREATERTHAN value - value : value . PLUS value - value : value . SUBTRACT value - value : value . MULTIPLY value - value : value . DIVIDE value + statement : PRINT OPEN_PAR expression . CLOSE_PAR END_STMT + expression : expression . PLUS expression + expression : expression . SUBTRACT expression + expression : expression . MULTIPLY expression + expression : expression . DIVIDE expression - EQUAL shift 46 - NOTEQUAL shift 47 - LESSTHAN shift 48 - GREATERTHAN shift 49 - PLUS shift 50 - SUBTRACT shift 51 - MULTIPLY shift 52 - DIVIDE shift 53 + PLUS shift 46 + SUBTRACT shift 47 + MULTIPLY shift 48 + DIVIDE shift 49 + CLOSE_PAR shift 52 state 37 - value : function . (32) - - . reduce 32 - - -state 38 - statement : WHILE OPEN_PAR expression . CLOSE_PAR statement - - CLOSE_PAR shift 54 - - -state 39 - statement : DO statement WHILE . OPEN_PAR expression CLOSE_PAR END_STMT - - OPEN_PAR shift 55 - - -state 40 - statement : PRINT OPEN_PAR value . CLOSE_PAR END_STMT - value : value . PLUS value - value : value . SUBTRACT value - value : value . MULTIPLY value - value : value . DIVIDE value - - PLUS shift 50 - SUBTRACT shift 51 - MULTIPLY shift 52 - DIVIDE shift 53 - CLOSE_PAR shift 56 - - -state 41 statement : BEGIN_CS statement_list END_CS . (13) . reduce 13 -state 42 +state 38 function : FUNCTION OPEN_PAR $$1 . CLOSE_PAR - CLOSE_PAR shift 57 + CLOSE_PAR shift 53 -state 43 - assign_expression : variable ASSIGN value . (15) - value : value . PLUS value - value : value . SUBTRACT value - value : value . MULTIPLY value - value : value . DIVIDE value +state 39 + assign_expression : variable ASSIGN expression . (15) + expression : expression . PLUS expression + expression : expression . SUBTRACT expression + expression : expression . MULTIPLY expression + expression : expression . DIVIDE expression - PLUS shift 50 - SUBTRACT shift 51 - MULTIPLY shift 52 - DIVIDE shift 53 + PLUS shift 46 + SUBTRACT shift 47 + MULTIPLY shift 48 + DIVIDE shift 49 . reduce 15 -state 44 - value : OPEN_PAR value . CLOSE_PAR - value : value . PLUS value - value : value . SUBTRACT value - value : value . MULTIPLY value - value : value . DIVIDE value +state 40 + expression : OPEN_PAR expression . CLOSE_PAR + expression : expression . PLUS expression + expression : expression . SUBTRACT expression + expression : expression . MULTIPLY expression + expression : expression . DIVIDE expression - PLUS shift 50 - SUBTRACT shift 51 - MULTIPLY shift 52 - DIVIDE shift 53 - CLOSE_PAR shift 58 + PLUS shift 46 + SUBTRACT shift 47 + MULTIPLY shift 48 + DIVIDE shift 49 + CLOSE_PAR shift 54 + + +state 41 + statement : IF OPEN_PAR conditional CLOSE_PAR . statement + statement : IF OPEN_PAR conditional CLOSE_PAR . statement ELSE statement + + STOP shift 3 + IF shift 4 + WHILE shift 5 + DO shift 6 + PAUSE shift 7 + PRINT shift 8 + END_STMT shift 9 + BEGIN_CS shift 10 + VARIABLE shift 11 + FUNCTION shift 12 + + statement goto 55 + assign_expression goto 14 + variable goto 15 + function goto 16 + + +state 42 + conditional : expression EQUAL . expression + + OPEN_PAR shift 28 + VARIABLE shift 29 + VALUE shift 30 + FUNCTION shift 12 + + expression goto 56 + function goto 33 + + +state 43 + conditional : expression NOTEQUAL . expression + + OPEN_PAR shift 28 + VARIABLE shift 29 + VALUE shift 30 + FUNCTION shift 12 + + expression goto 57 + function goto 33 + + +state 44 + conditional : expression LESSTHAN . expression + + OPEN_PAR shift 28 + VARIABLE shift 29 + VALUE shift 30 + FUNCTION shift 12 + + expression goto 58 + function goto 33 state 45 - statement : IF OPEN_PAR expression CLOSE_PAR . statement - statement : IF OPEN_PAR expression CLOSE_PAR . statement ELSE statement + conditional : expression GREATERTHAN . expression - STOP shift 3 - IF shift 4 - WHILE shift 5 - DO shift 6 - PAUSE shift 7 - PRINT shift 8 - END_STMT shift 9 - BEGIN_CS shift 10 - VARIABLE shift 11 + OPEN_PAR shift 28 + VARIABLE shift 29 + VALUE shift 30 FUNCTION shift 12 - statement goto 59 - assign_expression goto 14 - variable goto 15 - function goto 16 + expression goto 59 + function goto 33 state 46 - equal_expression : value EQUAL . value + expression : expression PLUS . expression OPEN_PAR shift 28 VARIABLE shift 29 VALUE shift 30 FUNCTION shift 12 - value goto 60 - function goto 37 + expression goto 60 + function goto 33 state 47 - notequal_expression : value NOTEQUAL . value + expression : expression SUBTRACT . expression OPEN_PAR shift 28 VARIABLE shift 29 VALUE shift 30 FUNCTION shift 12 - value goto 61 - function goto 37 + expression goto 61 + function goto 33 state 48 - lessthan_expression : value LESSTHAN . value + expression : expression MULTIPLY . expression OPEN_PAR shift 28 VARIABLE shift 29 VALUE shift 30 FUNCTION shift 12 - value goto 62 - function goto 37 + expression goto 62 + function goto 33 state 49 - greaterthan_expression : value GREATERTHAN . value + expression : expression DIVIDE . expression OPEN_PAR shift 28 VARIABLE shift 29 VALUE shift 30 FUNCTION shift 12 - value goto 63 - function goto 37 + expression goto 63 + function goto 33 state 50 - value : value PLUS . value - - OPEN_PAR shift 28 - VARIABLE shift 29 - VALUE shift 30 - FUNCTION shift 12 - - value goto 64 - function goto 37 - - -state 51 - value : value SUBTRACT . value - - OPEN_PAR shift 28 - VARIABLE shift 29 - VALUE shift 30 - FUNCTION shift 12 - - value goto 65 - function goto 37 - - -state 52 - value : value MULTIPLY . value - - OPEN_PAR shift 28 - VARIABLE shift 29 - VALUE shift 30 - FUNCTION shift 12 - - value goto 66 - function goto 37 - - -state 53 - value : value DIVIDE . value - - OPEN_PAR shift 28 - VARIABLE shift 29 - VALUE shift 30 - FUNCTION shift 12 - - value goto 67 - function goto 37 - - -state 54 - statement : WHILE OPEN_PAR expression CLOSE_PAR . statement + statement : WHILE OPEN_PAR conditional CLOSE_PAR . statement STOP shift 3 IF shift 4 @@ -586,204 +546,200 @@ state 54 VARIABLE shift 11 FUNCTION shift 12 - statement goto 68 + statement goto 64 assign_expression goto 14 variable goto 15 function goto 16 -state 55 - statement : DO statement WHILE OPEN_PAR . expression CLOSE_PAR END_STMT +state 51 + statement : DO statement WHILE OPEN_PAR . conditional CLOSE_PAR END_STMT OPEN_PAR shift 28 VARIABLE shift 29 VALUE shift 30 FUNCTION shift 12 - expression goto 69 - equal_expression goto 32 - notequal_expression goto 33 - lessthan_expression goto 34 - greaterthan_expression goto 35 - value goto 36 - function goto 37 + conditional goto 65 + expression goto 32 + function goto 33 -state 56 - statement : PRINT OPEN_PAR value CLOSE_PAR . END_STMT +state 52 + statement : PRINT OPEN_PAR expression CLOSE_PAR . END_STMT - END_STMT shift 70 + END_STMT shift 66 -state 57 - function : FUNCTION OPEN_PAR $$1 CLOSE_PAR . (34) +state 53 + function : FUNCTION OPEN_PAR $$1 CLOSE_PAR . (30) - . reduce 34 - - -state 58 - value : OPEN_PAR value CLOSE_PAR . (26) - - . reduce 26 - - -59: shift-reduce conflict (shift 71, reduce 9) on ELSE -state 59 - statement : IF OPEN_PAR expression CLOSE_PAR statement . (9) - statement : IF OPEN_PAR expression CLOSE_PAR statement . ELSE statement - - ELSE shift 71 - . reduce 9 - - -state 60 - equal_expression : value EQUAL value . (20) - value : value . PLUS value - value : value . SUBTRACT value - value : value . MULTIPLY value - value : value . DIVIDE value - - PLUS shift 50 - SUBTRACT shift 51 - MULTIPLY shift 52 - DIVIDE shift 53 - . reduce 20 - - -state 61 - notequal_expression : value NOTEQUAL value . (21) - value : value . PLUS value - value : value . SUBTRACT value - value : value . MULTIPLY value - value : value . DIVIDE value - - PLUS shift 50 - SUBTRACT shift 51 - MULTIPLY shift 52 - DIVIDE shift 53 - . reduce 21 - - -state 62 - lessthan_expression : value LESSTHAN value . (22) - value : value . PLUS value - value : value . SUBTRACT value - value : value . MULTIPLY value - value : value . DIVIDE value - - PLUS shift 50 - SUBTRACT shift 51 - MULTIPLY shift 52 - DIVIDE shift 53 - . reduce 22 - - -state 63 - greaterthan_expression : value GREATERTHAN value . (23) - value : value . PLUS value - value : value . SUBTRACT value - value : value . MULTIPLY value - value : value . DIVIDE value - - PLUS shift 50 - SUBTRACT shift 51 - MULTIPLY shift 52 - DIVIDE shift 53 - . reduce 23 - - -64: shift-reduce conflict (shift 50, reduce 28) on PLUS -64: shift-reduce conflict (shift 51, reduce 28) on SUBTRACT -64: shift-reduce conflict (shift 52, reduce 28) on MULTIPLY -64: shift-reduce conflict (shift 53, reduce 28) on DIVIDE -state 64 - value : value PLUS value . (28) - value : value . PLUS value - value : value . SUBTRACT value - value : value . MULTIPLY value - value : value . DIVIDE value - - PLUS shift 50 - SUBTRACT shift 51 - MULTIPLY shift 52 - DIVIDE shift 53 - . reduce 28 - - -65: shift-reduce conflict (shift 50, reduce 29) on PLUS -65: shift-reduce conflict (shift 51, reduce 29) on SUBTRACT -65: shift-reduce conflict (shift 52, reduce 29) on MULTIPLY -65: shift-reduce conflict (shift 53, reduce 29) on DIVIDE -state 65 - value : value . PLUS value - value : value SUBTRACT value . (29) - value : value . SUBTRACT value - value : value . MULTIPLY value - value : value . DIVIDE value - - PLUS shift 50 - SUBTRACT shift 51 - MULTIPLY shift 52 - DIVIDE shift 53 - . reduce 29 - - -66: shift-reduce conflict (shift 50, reduce 30) on PLUS -66: shift-reduce conflict (shift 51, reduce 30) on SUBTRACT -66: shift-reduce conflict (shift 52, reduce 30) on MULTIPLY -66: shift-reduce conflict (shift 53, reduce 30) on DIVIDE -state 66 - value : value . PLUS value - value : value . SUBTRACT value - value : value MULTIPLY value . (30) - value : value . MULTIPLY value - value : value . DIVIDE value - - PLUS shift 50 - SUBTRACT shift 51 - MULTIPLY shift 52 - DIVIDE shift 53 . reduce 30 -67: shift-reduce conflict (shift 50, reduce 31) on PLUS -67: shift-reduce conflict (shift 51, reduce 31) on SUBTRACT -67: shift-reduce conflict (shift 52, reduce 31) on MULTIPLY -67: shift-reduce conflict (shift 53, reduce 31) on DIVIDE -state 67 - value : value . PLUS value - value : value . SUBTRACT value - value : value . MULTIPLY value - value : value DIVIDE value . (31) - value : value . DIVIDE value +state 54 + expression : OPEN_PAR expression CLOSE_PAR . (22) - PLUS shift 50 - SUBTRACT shift 51 - MULTIPLY shift 52 - DIVIDE shift 53 - . reduce 31 + . reduce 22 -state 68 - statement : WHILE OPEN_PAR expression CLOSE_PAR statement . (11) +55: shift-reduce conflict (shift 67, reduce 9) on ELSE +state 55 + statement : IF OPEN_PAR conditional CLOSE_PAR statement . (9) + statement : IF OPEN_PAR conditional CLOSE_PAR statement . ELSE statement + + ELSE shift 67 + . reduce 9 + + +state 56 + conditional : expression EQUAL expression . (16) + expression : expression . PLUS expression + expression : expression . SUBTRACT expression + expression : expression . MULTIPLY expression + expression : expression . DIVIDE expression + + PLUS shift 46 + SUBTRACT shift 47 + MULTIPLY shift 48 + DIVIDE shift 49 + . reduce 16 + + +state 57 + conditional : expression NOTEQUAL expression . (17) + expression : expression . PLUS expression + expression : expression . SUBTRACT expression + expression : expression . MULTIPLY expression + expression : expression . DIVIDE expression + + PLUS shift 46 + SUBTRACT shift 47 + MULTIPLY shift 48 + DIVIDE shift 49 + . reduce 17 + + +state 58 + conditional : expression LESSTHAN expression . (18) + expression : expression . PLUS expression + expression : expression . SUBTRACT expression + expression : expression . MULTIPLY expression + expression : expression . DIVIDE expression + + PLUS shift 46 + SUBTRACT shift 47 + MULTIPLY shift 48 + DIVIDE shift 49 + . reduce 18 + + +state 59 + conditional : expression GREATERTHAN expression . (19) + expression : expression . PLUS expression + expression : expression . SUBTRACT expression + expression : expression . MULTIPLY expression + expression : expression . DIVIDE expression + + PLUS shift 46 + SUBTRACT shift 47 + MULTIPLY shift 48 + DIVIDE shift 49 + . reduce 19 + + +60: shift-reduce conflict (shift 46, reduce 24) on PLUS +60: shift-reduce conflict (shift 47, reduce 24) on SUBTRACT +60: shift-reduce conflict (shift 48, reduce 24) on MULTIPLY +60: shift-reduce conflict (shift 49, reduce 24) on DIVIDE +state 60 + expression : expression PLUS expression . (24) + expression : expression . PLUS expression + expression : expression . SUBTRACT expression + expression : expression . MULTIPLY expression + expression : expression . DIVIDE expression + + PLUS shift 46 + SUBTRACT shift 47 + MULTIPLY shift 48 + DIVIDE shift 49 + . reduce 24 + + +61: shift-reduce conflict (shift 46, reduce 25) on PLUS +61: shift-reduce conflict (shift 47, reduce 25) on SUBTRACT +61: shift-reduce conflict (shift 48, reduce 25) on MULTIPLY +61: shift-reduce conflict (shift 49, reduce 25) on DIVIDE +state 61 + expression : expression . PLUS expression + expression : expression SUBTRACT expression . (25) + expression : expression . SUBTRACT expression + expression : expression . MULTIPLY expression + expression : expression . DIVIDE expression + + PLUS shift 46 + SUBTRACT shift 47 + MULTIPLY shift 48 + DIVIDE shift 49 + . reduce 25 + + +62: shift-reduce conflict (shift 46, reduce 26) on PLUS +62: shift-reduce conflict (shift 47, reduce 26) on SUBTRACT +62: shift-reduce conflict (shift 48, reduce 26) on MULTIPLY +62: shift-reduce conflict (shift 49, reduce 26) on DIVIDE +state 62 + expression : expression . PLUS expression + expression : expression . SUBTRACT expression + expression : expression MULTIPLY expression . (26) + expression : expression . MULTIPLY expression + expression : expression . DIVIDE expression + + PLUS shift 46 + SUBTRACT shift 47 + MULTIPLY shift 48 + DIVIDE shift 49 + . reduce 26 + + +63: shift-reduce conflict (shift 46, reduce 27) on PLUS +63: shift-reduce conflict (shift 47, reduce 27) on SUBTRACT +63: shift-reduce conflict (shift 48, reduce 27) on MULTIPLY +63: shift-reduce conflict (shift 49, reduce 27) on DIVIDE +state 63 + expression : expression . PLUS expression + expression : expression . SUBTRACT expression + expression : expression . MULTIPLY expression + expression : expression DIVIDE expression . (27) + expression : expression . DIVIDE expression + + PLUS shift 46 + SUBTRACT shift 47 + MULTIPLY shift 48 + DIVIDE shift 49 + . reduce 27 + + +state 64 + statement : WHILE OPEN_PAR conditional CLOSE_PAR statement . (11) . reduce 11 -state 69 - statement : DO statement WHILE OPEN_PAR expression . CLOSE_PAR END_STMT +state 65 + statement : DO statement WHILE OPEN_PAR conditional . CLOSE_PAR END_STMT - CLOSE_PAR shift 72 + CLOSE_PAR shift 68 -state 70 - statement : PRINT OPEN_PAR value CLOSE_PAR END_STMT . (7) +state 66 + statement : PRINT OPEN_PAR expression CLOSE_PAR END_STMT . (7) . reduce 7 -state 71 - statement : IF OPEN_PAR expression CLOSE_PAR statement ELSE . statement +state 67 + statement : IF OPEN_PAR conditional CLOSE_PAR statement ELSE . statement STOP shift 3 IF shift 4 @@ -796,36 +752,36 @@ state 71 VARIABLE shift 11 FUNCTION shift 12 - statement goto 73 + statement goto 69 assign_expression goto 14 variable goto 15 function goto 16 -state 72 - statement : DO statement WHILE OPEN_PAR expression CLOSE_PAR . END_STMT +state 68 + statement : DO statement WHILE OPEN_PAR conditional CLOSE_PAR . END_STMT - END_STMT shift 74 + END_STMT shift 70 -state 73 - statement : IF OPEN_PAR expression CLOSE_PAR statement ELSE statement . (10) +state 69 + statement : IF OPEN_PAR conditional CLOSE_PAR statement ELSE statement . (10) . reduce 10 -state 74 - statement : DO statement WHILE OPEN_PAR expression CLOSE_PAR END_STMT . (12) +state 70 + statement : DO statement WHILE OPEN_PAR conditional CLOSE_PAR END_STMT . (12) . reduce 12 -State 59 contains 1 shift-reduce conflict -State 64 contains 4 shift-reduce conflicts -State 65 contains 4 shift-reduce conflicts -State 66 contains 4 shift-reduce conflicts -State 67 contains 4 shift-reduce conflicts +State 55 contains 1 shift-reduce conflict +State 60 contains 4 shift-reduce conflicts +State 61 contains 4 shift-reduce conflicts +State 62 contains 4 shift-reduce conflicts +State 63 contains 4 shift-reduce conflicts -26 tokens, 14 nonterminals -35 grammar rules, 75 states +26 tokens, 10 nonterminals +31 grammar rules, 71 states diff --git a/Utils/Scripter/parser.y b/Utils/Scripter/parser.y index 656ee093e..97997330c 100644 --- a/Utils/Scripter/parser.y +++ b/Utils/Scripter/parser.y @@ -92,9 +92,9 @@ private: %type program statement_list statement %type assign_expression -%type expression equal_expression notequal_expression lessthan_expression greaterthan_expression +%type conditional %type variable -%type value +%type expression %type function %% @@ -106,79 +106,63 @@ private: // place your YACC rules here (there must be at least one) program - :statement_list {s_baseTreeNode=$1;} + :statement_list {s_baseTreeNode=$1;} ; statement_list - :statement_list statement {$$=new CTreeNode(STMT_LIST,$1,$2);} - | {$$=new CTreeNode(EMPTY_STMT);} + :statement_list statement {$$=new CTreeNode(STMT_LIST,$1,$2);} + | {$$=new CTreeNode(EMPTY_STMT);} ; statement - :END_STMT {$$=new CTreeNode(EMPTY_STMT);} - |STOP END_STMT {$$=new CTreeNode(STOP_STMT);} - |PAUSE END_STMT {$$=new CTreeNode(PAUSE_STMT);} - |PRINT OPEN_PAR value CLOSE_PAR END_STMT {$$=new CTreeNode(PRINT_STMT,$3);} - |assign_expression END_STMT {$$=$1;} - |IF OPEN_PAR expression CLOSE_PAR statement {$$=new CTreeNode(IF_STMT,$3,$5);} - |IF OPEN_PAR expression CLOSE_PAR statement ELSE statement {$$=new CTreeNode(IFELSE_STMT,$3,$5,$7);} - |WHILE OPEN_PAR expression CLOSE_PAR statement {$$=new CTreeNode(WHILE_STMT,$3,$5);} - |DO statement WHILE OPEN_PAR expression CLOSE_PAR END_STMT {$$=new CTreeNode(DOWHILE_STMT,$2,$5);} - |BEGIN_CS statement_list END_CS {$$=new CTreeNode(STMT_LIST,$2);} - |function END_STMT {$$=new CTreeNode(STMT_LIST,$1,new CTreeNode(POP_STMT));} + :END_STMT {$$=new CTreeNode(EMPTY_STMT);} + |STOP END_STMT {$$=new CTreeNode(STOP_STMT);} + |PAUSE END_STMT {$$=new CTreeNode(PAUSE_STMT);} + |PRINT OPEN_PAR expression CLOSE_PAR END_STMT {$$=new CTreeNode(PRINT_STMT,$3);} + |assign_expression END_STMT {$$=$1;} + |IF OPEN_PAR conditional CLOSE_PAR statement {$$=new CTreeNode(IF_STMT,$3,$5);} + |IF OPEN_PAR conditional CLOSE_PAR statement ELSE statement {$$=new CTreeNode(IFELSE_STMT,$3,$5,$7);} + |WHILE OPEN_PAR conditional CLOSE_PAR statement {$$=new CTreeNode(WHILE_STMT,$3,$5);} + |DO statement WHILE OPEN_PAR conditional CLOSE_PAR END_STMT {$$=new CTreeNode(DOWHILE_STMT,$2,$5);} + |BEGIN_CS statement_list END_CS {$$=new CTreeNode(STMT_LIST,$2);} + |function END_STMT {$$=new CTreeNode(STMT_LIST,$1,new CTreeNode(POP_STMT));} ; assign_expression - :variable ASSIGN value {$$=new CTreeNode(ASSIGN_EXPR,$1,$3);} + :variable ASSIGN expression {$$=new CTreeNode(ASSIGN_EXPR,$1,$3);} ; -expression - :equal_expression {$$=$1;} - |notequal_expression {$$=$1;} - |lessthan_expression {$$=$1;} - |greaterthan_expression {$$=$1;} - ; - -equal_expression - :value EQUAL value {$$=new CTreeNode(EQUAL_EXPR,$1,$3);} - ; - -notequal_expression - :value NOTEQUAL value {$$=new CTreeNode(NOTEQUAL_EXPR,$1,$3);} - ; - -lessthan_expression - :value LESSTHAN value {$$=new CTreeNode(LESSTHAN_EXPR,$1,$3);} - ; - -greaterthan_expression - :value GREATERTHAN value {$$=new CTreeNode(GREATERTHAN_EXPR,$1,$3);} +conditional + :expression EQUAL expression {$$=new CTreeNode(EQUAL_EXPR,$1,$3);} + |expression NOTEQUAL expression {$$=new CTreeNode(NOTEQUAL_EXPR,$1,$3);} + |expression LESSTHAN expression {$$=new CTreeNode(LESSTHAN_EXPR,$1,$3);} + |expression GREATERTHAN expression {$$=new CTreeNode(GREATERTHAN_EXPR,$1,$3);} ; variable - :VARIABLE {$$=new CTreeNode(VARIABLE_EXPR,$1);} // variable id + :VARIABLE {$$=new CTreeNode(VARIABLE_EXPR,$1);} // variable id ; -value - :VALUE {$$=new CTreeNode(VALUE_EXPR,$1);} - |OPEN_PAR value CLOSE_PAR {$$=$2;} - |VARIABLE {$$=new CTreeNode(VARIABLE_EXPR,$1);} // variable value -// |PLUS value {$$=$2;} -// |SUBTRACT value {$$=new CTreeNode(STMT_LIST,CTreeNodeCTreeNode(VALUE_EXPR,$2);} - |value PLUS value {$$=new CTreeNode(PLUS_EXPR,$1,$3);} - |value SUBTRACT value {$$=new CTreeNode(SUBTRACT_EXPR,$1,$3);} - |value MULTIPLY value {$$=new CTreeNode(MULTIPLY_EXPR,$1,$3);} - |value DIVIDE value {$$=new CTreeNode(DIVIDE_EXPR,$1,$3);} - |function {$$=$1;} +expression + :VALUE {$$=new CTreeNode(VALUE_EXPR,$1);} + |OPEN_PAR expression CLOSE_PAR {$$=$2;} + |VARIABLE {$$=new CTreeNode(VARIABLE_EXPR,$1);} // variable value +// |PLUS expression {$$=$2;} +// |SUBTRACT expression {$$=new CTreeNode(STMT_LIST,CTreeNodeCTreeNode(VALUE_EXPR,$2);} + |expression PLUS expression {$$=new CTreeNode(PLUS_EXPR,$1,$3);} + |expression SUBTRACT expression {$$=new CTreeNode(SUBTRACT_EXPR,$1,$3);} + |expression MULTIPLY expression {$$=new CTreeNode(MULTIPLY_EXPR,$1,$3);} + |expression DIVIDE expression {$$=new CTreeNode(DIVIDE_EXPR,$1,$3);} + |function {$$=$1;} ; function - :FUNCTION OPEN_PAR {if($1!=-1){m_functionNumber=$1;m_functionArgs=getFunctionArgs($1);}} - CLOSE_PAR {$$=new CTreeNode(STMT_LIST,m_functionArgs,new CTreeNode(FUNCTION_EXPR,m_functionNumber));} + :FUNCTION OPEN_PAR {if($1!=-1){m_functionNumber=$1;m_functionArgs=getFunctionArgs($1);}} + CLOSE_PAR {$$=new CTreeNode(STMT_LIST,m_functionArgs,new CTreeNode(FUNCTION_EXPR,m_functionNumber));} ; diff --git a/Utils/Scripter/prepro.cpp b/Utils/Scripter/prepro.cpp index 1cb530213..c85c43981 100644 --- a/Utils/Scripter/prepro.cpp +++ b/Utils/Scripter/prepro.cpp @@ -64,6 +64,7 @@ static int ppf_define(char *_cmd); static int ppf_include(char *_cmd); static int ppf_print(char *_cmd); static int ppf_undefine(char *_cmd); +static int ppf_ignore(char *_cmd); static int addMacro(char *_name,char *_replacement); static int removeMacro(char *_name); @@ -78,6 +79,12 @@ static PreproCmd s_preproCmds[]= { "include", ppf_include }, { "print", ppf_print }, { "undef", ppf_undefine }, + + // This is bad but it means we can use the include files generated by parkgrab + // ( might have to fix this one day.. ) + { "ifdef", ppf_ignore }, + { "ifndef", ppf_ignore }, + { "endif", ppf_ignore }, }; static int s_numPreproCmds=sizeof(s_preproCmds)/sizeof(PreproCmd); @@ -110,7 +117,7 @@ extern int preprocessorCmd(char *_cmd) } printf("UNKNOWN PREPROCESSOR CMD '%s'\n",_cmd); - return true; + return false; } @@ -186,6 +193,19 @@ static int ppf_undefine(char *_cmd) } +/*---------------------------------------------------------------------- + Function: + Purpose: + Params: + Returns: + ---------------------------------------------------------------------- */ +static int ppf_ignore(char *_cmd) +{ + printf("PRE-PROCESSOR COMMAND IGNORED..\n"); + return true; +} + + /*---------------------------------------------------------------------- Function: Purpose: @@ -211,9 +231,16 @@ static int addMacro(char *_name,char *_replacement) // Create new macro newMac=(Macro*)malloc(sizeof(Macro)); newMac->m_name=(char*)malloc(strlen(_name)+1); - newMac->m_replacement=(char*)malloc(strlen(_replacement)+1); strcpy(newMac->m_name,_name); - strcpy(newMac->m_replacement,_replacement); + if(_replacement) + { + newMac->m_replacement=(char*)malloc(strlen(_replacement)+1); + strcpy(newMac->m_replacement,_replacement); + } + else + { + newMac->m_replacement=NULL; + } // Insert it into the list mac=s_macros; @@ -265,7 +292,10 @@ static int removeMacro(char *_name) s_macros=mac->m_next; } free(mac->m_name); - free(mac->m_replacement); + if(mac->m_replacement) + { + free(mac->m_replacement); + } free(mac); return true; } diff --git a/data/Scripts/test.scr b/data/Scripts/test.scr index b2937df47..f376d5a0c 100644 --- a/data/Scripts/test.scr +++ b/data/Scripts/test.scr @@ -1,6 +1,8 @@ #include data/scripts/defs/defs.scr #include data/scripts/defs/charanim.scr +#include out/usa/include/uigfx.h + /* _setCharacterAnimation(CHAR_SPONGEBOB,ANIM_QUIET); @@ -21,17 +23,18 @@ vx=velocity; vy=velocity; while(1==1) { - - // readout for fps :) + // Readout for fps :) $tmp0=_getFrameTime(); $tmp5=50; do{ - _drawSprite(4,$tmp5,50,10); + _drawSprite(FRM__BUTU,$tmp5,50,0); $tmp5=$tmp5+20; $tmp0=$tmp0-1; }while($tmp0>0); - _drawSprite(0,x,y,100); + + // Bouncy thing + _drawSprite(FRM__BUTC,x,y,100); $tmp0=_getFrameTime(); do { @@ -61,6 +64,9 @@ while(1==1) $tmp0=$tmp0-1; } while($tmp0>0); + + + // End of frame.. pause; } stop; \ No newline at end of file diff --git a/tools/scripter.exe b/tools/scripter.exe index 6dd2867c41386d721b4d14388cb0cf6e7be1ac1b..72ab8dfbee4134af65abaf5ded812c3b13a83c67 100644 GIT binary patch delta 7599 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 PcwDwydbG6T^8Nn@)5b7; delta 7818 zcma)B4RjROb$&au5-YL#myiStT8RZ@S^P>e64?d)El92e`ZWR^ehRV$#eiXPXainA z-q_P&S~-I<_Bph{ElxSL65GKwat}UWM=|(>w%F#l#HEevVrQ_3BikydL}vTlJF|=I zq~}!Uy!-d=yZ3wd-8VY}XOE|zJ)YWU%A@zyy*yl!COx_GRBn1fk~HGdEAtOao}^P} z^2?->jY)N)rwhcK`8^?ehupmf+>Qg&)6V8}1nNZZn^Id3yEG)}`JR`T?vjOQe_(a1 z_WBd!(dcVeg%E=m@%QBmYn0{@HRw_z3%-g*dtWD7nD*pfqzR#Fq(pt%ySi)oOsO|b zpF7=?>bw(;o)3;AfarbQsjr^yn?xpa@C*I9LQkX1n#Q`Q+Bu@u`c#cfitGB#R3Wx` z%pdDp>;!~u*5C2Bq`bj&~Kn66VU#v zex=Zxdd8Yh;;3iz#3J7eGMPyn)di8F66dJ>E`6b|Kw6QkZ!Id={ED?WnHQ5nM-ZhW z_~bX%5ug>xZnkqcCqxQI+zLmM(mx0q18JW+nQ-bu`f!ogKVZ#I<~*c`&|Y-%{Smv9 zPr&q6aNOPdI!V-RNvcMox%xNyra3v?nt-BcCoR9pYClPB7SwctDq6MyDup&*x&hb7 zIC_wv5@)CyNs9IoTw+k|(oOs1Ekj@eO(TLmCV z=|4Ups$Bpwp#bY~-rFQCGKyyjI)B7`2Z4YU(sW4R)G7jPQf_%_H{i+F^6xCqFkHVJ zhAZIS?^DweG}#V%Ef(}ZJm}lxc{k{X=whVTuEv74$31`e^_Z`cr&EhujK#c%JU!-v z;a>Zcj#`_X zyf$P)J!V^gwD6f2_Gb|ph%O$s0Ufc{;)xGHq{IRJ961RC0~#a+4dPZcax%LZ(1;C) zI0Mp1QnWrRCFhx`Cf8kDGi0D$<3oMZv=#{fNHtxab@q{IPL*ccd4F)1il zimH*5dEq)$=!Ol5I0Nb@N$J;1il>GXt<;fYvD5ie#6T?u4%xNXZ>7%Q)TG2yKac3~ z!+C}j6ed;G$jPka)TW)9IH!(~q(lx{L8DRqXT=%KkKs{Gy>v8o9@nuL7(6iyAFZ-@ z2$8IZ&OAsHE@aSx8wtgZXOKKS=5W}CyTwY9&2UMf(uBD-*M4oC4{Adb=Bv<^$Wrf!kb?SU zs2X{hqn{9fkFR{cm)A{(u!6U#>?ly8v*Nb87|?|B49QLa307bVaDeT42YCCpqG&|eyvZCf+NdTHF7fR8PG)=5OD?+AxVieSV5!n zP@~wrBOA`_Fy3nE-j&AA?7tDox>q&&@scTFZw%=#Xo8lTxsZA*qoFcObwQ=5>B`ds z$Z8qCyauCaF~38;Lr%;qhfZSlx}by!TEE*q6LSy6^_V}}Z&$!?fz9U%_`}ddXg?gj z7jr0w2`>**dtWC>gbGv?`6)`>x-Cc5$Y`!cdL?qft_N{U3$>plrN7dOkgrBaqF-tC zX#&@Vjcb(O{P@3U{m^(c%r6xX?1GY{M5^Hvd#SLWV`NgK;n`(xN8aA+#n(+2zHSb^ zc^ccbKX8tY)e7^`y|hiY+B~{Np?40kVg0&8L;G=azIDTVVh=EW{OvcLV)FEAF(2cM zURJtz`QyH7aT4QQjB$)3v#Nz>cC{G5@Xx6hXEExEtHmQ2BNzwosTS!a)#5nDf_tmQ zT8y9GdulrGQ?%rn-J}wAj;poU{rK=3 z+uY{uPMUL~802sMg4a8H&pBGmUs+RX=a?d?L3fM!lL?b=+LO&=N{v(PbhV+Vsw>=T zCUb7)xzxIbvth6!x4QCx;%_O--D7ORG0v&e9a;1BjTt5S z@%3{Ho}?-ubOsROL@%{+TI8c7dt3Ay>*s7%){_xCL$RDK=AYRrm3xOJbBf{lwB~>W z7@gw^gHjt@O7r;jo%C?Su6lat2>!m2bCjLq)*?(}H8!Sc-=8;2THUJ8nKwOua1Xh; zV^9`a#W4$8^>5ExC5hOQEPbSFTJH-RPQS3h@#LN`{WC&~+40YJqHBJp@;?u>n9FT# zl%6PNrLEmyt;E)@vF5S0tE{Ek+GW;+tzBg8i+{2*46%02*3Qr~vBiAfR$pQ5f~^g( z_K&u9g0%r#JI2~y+uBjq`fTk8Ylm&^3D!ckwx6|!Y%TOvn9_II>UN&I-`2LU=C`#6 zS(|5T9jtk6t%?av0@f zQZe4ggfKRaNza5$R~;$hL*jTaTmg50Uj~=JFM`Y9L*P#EbKnW!gW!qaFM&@2KMC#v zKMtM*eiS?z{3-Cs;QPSc;Jd(6z_);>Iz(7>K}dt41w0+R9y|lQ5bC_BN!WSz;1sws3*wh$PS{A{m~!VlrqRs4VhXp33qxrXHr#na%)phyp>sfnMPjPEjaU zK$e+0MT0;g?`I`}X(H1}OkD!6QE(;d6hY7imJ^sJGM&WKCBB8(6`~S!Ij>C;C6KE` zF=!=QlEoazi^Xiv``9v>*M^f=aRa3gbJ>)P9SU&|b}q1p(oaTpgqX&%TlgT)V>+Md z0;UU5Mq#k^q;TYkX>q&6as%F49Fh;XwCuUC( zcOVBvebnJdBS2O(fS~+wr2k)e1*e?DL9HDZVX1K7G9p2es0Pgze$X6I2|7iTgXW3_ zpdL{QI$acl&JaE)Sb_249Vr(l@%bHsO_7qBQhzSS{acJHycidFu_(friCa_;?!)zI z#7Gqt=+6o@=*n|pBwNhr2h0x_5_qHtpEZy>HjuyPDq~;{;38C_jbngfmmu^bA#;)UUod)hV5JT zgqASu{vNs1sGcPI!oE$LH+Sy}E%EN!z4PJSn;xO*<((_*IvQ8uV^D}#Crxah;L7?9 zb@-mC4X$Wh$&wIpAXpRYQd&>G?H$edAi_%*Unn7B7Y8O|u?t{*V^X@&<&uj_TiO~| zl5a~*XFD};{VE|=H#G7s2sW`vG%m+~M|P}gG0wTiy!c$Y~Hzd zN65Q0;9Y2ZeOmDe~z2*-m`ITv}5t#@u*gTZ@l+@DIUF($`hvIfS>Sq|>hkZf!e_G!2N-hfwsT{^h>@#;HiwFy}wJYGBO^Ozw78Sv`6J- z*@ga}_+5dlz_S4}5Lo)!(tla@Z_7?!c~mytjsfG1$K}7euW3okl8z-^eEhPY5|31l zR*qGUSBffUm8;5Km0snk@>cn(imOVi7F3m2RaW_{j3Z%r$kAZ59+ao0^#zUwo(UWa q91olboD2*Ye{xW6bkrOFa8O=$`aeH*jHLdcPj)*t87Y18qW=Y5L4$Vy