From e944cd149d8a719cf5b85f2f07f1639634cfebbc Mon Sep 17 00:00:00 2001 From: szabototo89 Date: Fri, 2 May 2014 21:22:07 +0200 Subject: [PATCH] Update of my thesis --- docs/Diplomamunka_Szabo_Tamas.docx | Bin 580751 -> 582488 bytes docs/graphics/szintaxisfa.vsdx | Bin 90415 -> 90502 bytes docs/graphics/~$$szintaxisfa.~vsdx | Bin 4096 -> 0 bytes docs/~$akdolgozat_kovetelmenyek.docx | Bin 162 -> 0 bytes grammar-imperative/Imperative.g4 | 44 +- grammar-imperative/example.txt | 10 +- grammar-imperative/src/Imperative.tokens | 122 ++-- .../src/ImperativeBaseListener.class | Bin 3250 -> 4625 bytes .../src/ImperativeBaseListener.java | 97 ++- .../src/ImperativeBaseVisitor.class | Bin 3133 -> 4533 bytes .../src/ImperativeBaseVisitor.java | 56 +- grammar-imperative/src/ImperativeLexer.class | Bin 6007 -> 7163 bytes grammar-imperative/src/ImperativeLexer.java | 170 ++--- grammar-imperative/src/ImperativeLexer.tokens | 122 ++-- .../src/ImperativeListener.class | Bin 2145 -> 3210 bytes .../src/ImperativeListener.java | 119 +++- ...rativeParser$ActualParametersContext.class | Bin 1778 -> 1778 bytes .../ImperativeParser$AssignmentContext.class | Bin 1698 -> 1699 bytes .../ImperativeParser$ConstantContext.class | Bin 1538 -> 1538 bytes .../ImperativeParser$ExpressionContext.class | Bin 2305 -> 2305 bytes ...rativeParser$FormalParametersContext.class | Bin 0 -> 1660 bytes ...ImperativeParser$FunctionCallContext.class | Bin 1737 -> 1737 bytes ...tiveParser$FunctionDefinitionContext.class | Bin 0 -> 2124 bytes .../ImperativeParser$IfStatementContext.class | Bin 1909 -> 1706 bytes .../src/ImperativeParser$InitContext.class | Bin 1688 -> 1896 bytes ...mperativeParser$LoopStatementContext.class | Bin 1923 -> 1720 bytes ...iveParser$ProcedureDefinitionContext.class | Bin 0 -> 1949 bytes ...erativeParser$ReturnStatementContext.class | Bin 0 -> 1569 bytes .../ImperativeParser$SequenceContext.class | Bin 0 -> 1717 bytes .../src/ImperativeParser$SkipContext.class | Bin 1230 -> 1231 bytes .../ImperativeParser$StatementContext.class | Bin 2215 -> 2407 bytes grammar-imperative/src/ImperativeParser.class | Bin 12218 -> 15954 bytes grammar-imperative/src/ImperativeParser.java | 598 +++++++++++++----- .../src/ImperativeVisitor.class | Bin 2564 -> 3784 bytes grammar-imperative/src/ImperativeVisitor.java | 67 +- 35 files changed, 995 insertions(+), 410 deletions(-) delete mode 100644 docs/graphics/~$$szintaxisfa.~vsdx delete mode 100644 docs/~$akdolgozat_kovetelmenyek.docx create mode 100644 grammar-imperative/src/ImperativeParser$FormalParametersContext.class create mode 100644 grammar-imperative/src/ImperativeParser$FunctionDefinitionContext.class create mode 100644 grammar-imperative/src/ImperativeParser$ProcedureDefinitionContext.class create mode 100644 grammar-imperative/src/ImperativeParser$ReturnStatementContext.class create mode 100644 grammar-imperative/src/ImperativeParser$SequenceContext.class diff --git a/docs/Diplomamunka_Szabo_Tamas.docx b/docs/Diplomamunka_Szabo_Tamas.docx index 2d13dc0346adf4968cf3a4d114faf829c69c03a9..af3c5469dc4776a1290db04c38724527ad33d5a5 100644 GIT binary patch delta 92899 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 delta 91189 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 diff --git a/docs/graphics/szintaxisfa.vsdx b/docs/graphics/szintaxisfa.vsdx index 3e983660800aebed3dc7a80285c34dd268ef8a4a..98aed2ea3689f8136b1af5def44e0a845873fccb 100644 GIT binary patch delta 9625 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 delta 9553 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 X%fR`6@;9kN^i2UEcoVI^Zm9nQ87|+^ diff --git a/docs/graphics/~$$szintaxisfa.~vsdx b/docs/graphics/~$$szintaxisfa.~vsdx deleted file mode 100644 index 9fe0af38aceecc7ab233a11b34d56628c7c066e1..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 4096 zcmca`Uhu)fjZzO8(10BSGsD0CoD6J8;*3Bx6O1pwz`zP*gT(&*|NkE(%nZap<|r6K zA@CRIR#5znf{_^lK@9moSi+#d;L4B(q>C6TL0Oq-AOp%^PJ8 y?+^&__w|IOBXZ~v27d-$2J(#vNz6?wCdXo^o)BR91u8?xHG^QAg#xz?1+4&1!&Sim diff --git a/docs/~$akdolgozat_kovetelmenyek.docx b/docs/~$akdolgozat_kovetelmenyek.docx deleted file mode 100644 index 0d2087e4283dc82d1d17c05013a445065937cbc3..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 162 zcmd-MNz6?wRtT<2Ov+~<8gMg&FeEbM0&y{e0z)uE6_Az005U+A!JNT@!C%mvOIMMh z!;zr?2wi}(B|sd*5Cl{M(wE7Q$B+(G?IdW#WuU~+;LKnJlnn)%mda2BBx8`w2LM$V B7PbHY diff --git a/grammar-imperative/Imperative.g4 b/grammar-imperative/Imperative.g4 index ea72299..549915b 100644 --- a/grammar-imperative/Imperative.g4 +++ b/grammar-imperative/Imperative.g4 @@ -1,15 +1,35 @@ grammar Imperative; -init: (statement)+; - //| functionDefinition - //| macroDefinition)*; - - statement : skip - | assignment - | functionCall - | ifStatement - | loopStatement - ; +init: sequence + | functionDefinition + | procedureDefinition + ; + //| macroDefinition; + +functionDefinition : 'function' ID '(' formalParameters? ')' 'returns' ID 'begin' + sequence + 'endfunction' + ; + +procedureDefinition : 'procedure' ID '(' formalParameters? ')' 'begin' + sequence + 'endfunction' + ; + +formalParameters : (ID ':' ID) (',' (ID ':' ID))* + ; + +statement : skip + | assignment + | returnStatement + | functionCall + | ifStatement + | loopStatement + ; + +returnStatement : 'return' expression; + +sequence : statement+; skip : 'skip' ; @@ -17,10 +37,10 @@ skip : 'skip' assignment : ID ':=' expression ; -ifStatement : 'if' '(' expression ')' 'then' statement+ 'endif' +ifStatement : 'if' '(' expression ')' 'then' sequence 'endif' ; -loopStatement : 'loop' '(' expression ')' 'do' statement+ 'end' 'loop' +loopStatement : 'loop' '(' expression ')' 'do' sequence 'endloop' ; functionCall : ID '(' actualParameters ')' diff --git a/grammar-imperative/example.txt b/grammar-imperative/example.txt index 91868c7..2d04b8a 100644 --- a/grammar-imperative/example.txt +++ b/grammar-imperative/example.txt @@ -1,7 +1,15 @@ +function max(a: Integer, b: Integer) returns Integer +begin + if (a > b) then + return a + endif + return b +endfunction + print("Program futásának kezdete ...") i := 0 loop (i < 10) do print(toString(i) + " sor: ") i := i + 1 -end loop +endloop print("Program futásának vége.") \ No newline at end of file diff --git a/grammar-imperative/src/Imperative.tokens b/grammar-imperative/src/Imperative.tokens index 5e0d877..7878765 100644 --- a/grammar-imperative/src/Imperative.tokens +++ b/grammar-imperative/src/Imperative.tokens @@ -1,54 +1,68 @@ -T__23=1 -T__22=2 -T__21=3 -T__20=4 -NUMBER=27 -WHITESPACE=29 -ID=28 -T__9=15 -T__8=16 -T__7=17 -T__6=18 -T__5=19 -T__4=20 -T__19=5 -BOOLEAN=25 -T__16=8 -T__15=9 -T__18=6 -T__17=7 -T__12=12 -T__11=13 -T__14=10 -T__13=11 -T__1=23 -T__0=24 -T__10=14 -T__3=21 -T__2=22 -NEW_LINE=30 -STRING=26 -'end'=24 -'>='=23 -'skip'=22 -'=='=21 -'/'=20 -'then'=19 -':='=18 -'and'=17 -'>'=16 -'<='=15 -'!='=14 -'<'=13 -'if'=12 -'not'=10 -'('=11 -'-'=7 -'*'=8 -'or'=9 -'+'=6 -','=5 -'endif'=3 -')'=4 -'loop'=2 -'do'=1 +T__29=2 +T__28=3 +T__27=4 +T__26=5 +T__25=6 +T__24=7 +T__23=8 +T__22=9 +T__21=10 +T__20=11 +NUMBER=34 +WHITESPACE=36 +ID=35 +T__9=22 +T__8=23 +T__7=24 +T__6=25 +T__5=26 +T__4=27 +T__19=12 +T__30=1 +BOOLEAN=32 +T__16=15 +T__15=16 +T__18=13 +T__17=14 +T__12=19 +T__11=20 +T__14=17 +T__13=18 +T__1=30 +T__0=31 +T__3=28 +T__10=21 +T__2=29 +NEW_LINE=37 +STRING=33 +'>='=31 +'=='=30 +'returns'=29 +'/'=28 +'begin'=27 +'then'=26 +':='=25 +'>'=24 +'return'=23 +'+'=22 +'procedure'=21 +'function'=19 +')'=20 +'loop'=18 +'do'=17 +'endloop'=16 +'skip'=15 +'and'=14 +'<='=13 +'!='=12 +'<'=11 +'if'=10 +':'=9 +'('=8 +'not'=7 +'or'=6 +'endfunction'=5 +'-'=4 +'*'=3 +','=2 +'endif'=1 diff --git a/grammar-imperative/src/ImperativeBaseListener.class b/grammar-imperative/src/ImperativeBaseListener.class index 0a5c2dabc9d01aa22eccf4675661a56a52e5c3e3..ffe76b2252d8eda80d76555eb5e327e0453d559a 100644 GIT binary patch literal 4625 zcmai0J9pef6u#q-D0cj|>h_G&iM=+oT!zWdEcntS#8zd!u~01FUz z!4de>0oQ>o2WkwCUGsb|y3XK8apoR_XUf4gXV6#me7+htwz$}Ix9T#&{fLX@gMGon z&UZ<-g zOsDp+68klIp2}{$?tsr=C>zl}GlrcQh{~y7ZYDd)pwQxVi|=^&>Q(Is7>p*|G_HM1 zPw~ysmHSB6J*6->dANo^G~Bu_D4_%R*%VetRQu1H{LN(LKCIjcA*neV{9(-f8h79! zzT#x0y-YQSkd%k2ImrZrQ)*vpBB=50Snzbq4hROP4HMe&vSD}a`O3T?H)!A_&v&U7 z#jVd5D|LZJ^$JYSw+%UczLb!h$K@s$pRdQVNzE0_&Ec@`NY4LDP+8US%cy%~--$N4 zXn4MhN4s6NNN`?CXsg&SRkmKGUKSz{GR6Q)jj>ZHx#lTt*G3SF8ej3`CeEb&@}?W| zsuxBaJL;u9x9N7nQ8+hECZtd|J7TUp-o1}68Nr}*uxm-5GLDuZNH$8Wn+D{Y1ICS9eCH_U? zzvcx*{8;ho;OHD8Lp(bB1lW&w!{9hx5vRc8-iX8J2Fw9oQHn9 zW|V3MVA$p}Ml~nxnklLofl-^!Jk^}GYZj>H3_NS|xk@$9*)=z)W(;4b<^9~InhCq+ z4%JLT(dM&BH8Xb2eX5y-d7F<*HJ9v~U8*U;3pO90Y8LF8h-$9D%Ql}cspb{C<}0ds z6|UKQzNVVj?3!<=<~l6de7>ccn|943swu;Y&F4F+xoy{cPc?7ATQ;8`sHSSyJf@mE zux9i5nQGp)YksAgb$G|-^BdLNvupmKns?zno6nzA^S)j47uDQ{4{SbvQ_Y9)kxlbY ztEK}!R^9Cr=tlek`&buj!wKwugNQ?j1;kT`XA#dKjw7B&oI;#NoI|{bcp33|#1|1? fLcEH&i1<3<4a8fB%ZL@kHxXA6?;>s>ZbIjOw?X$@ delta 457 zcmY+=yG{a85C-5myM( * The default implementation does nothing. */ - @Override public void enterStatement(@NotNull ImperativeParser.StatementContext ctx) { } + @Override public void enterConstant(@NotNull ImperativeParser.ConstantContext ctx) { } /** * {@inheritDoc} *

* The default implementation does nothing. */ - @Override public void exitStatement(@NotNull ImperativeParser.StatementContext ctx) { } + @Override public void exitConstant(@NotNull ImperativeParser.ConstantContext ctx) { } /** * {@inheritDoc} *

* The default implementation does nothing. */ - @Override public void enterFunctionCall(@NotNull ImperativeParser.FunctionCallContext ctx) { } + @Override public void enterLoopStatement(@NotNull ImperativeParser.LoopStatementContext ctx) { } /** * {@inheritDoc} *

* The default implementation does nothing. */ - @Override public void exitFunctionCall(@NotNull ImperativeParser.FunctionCallContext ctx) { } + @Override public void exitLoopStatement(@NotNull ImperativeParser.LoopStatementContext ctx) { } + + /** + * {@inheritDoc} + *

+ * The default implementation does nothing. + */ + @Override public void enterReturnStatement(@NotNull ImperativeParser.ReturnStatementContext ctx) { } + /** + * {@inheritDoc} + *

+ * The default implementation does nothing. + */ + @Override public void exitReturnStatement(@NotNull ImperativeParser.ReturnStatementContext ctx) { } + + /** + * {@inheritDoc} + *

+ * The default implementation does nothing. + */ + @Override public void enterInit(@NotNull ImperativeParser.InitContext ctx) { } + /** + * {@inheritDoc} + *

+ * The default implementation does nothing. + */ + @Override public void exitInit(@NotNull ImperativeParser.InitContext ctx) { } + + /** + * {@inheritDoc} + *

+ * The default implementation does nothing. + */ + @Override public void enterSkip(@NotNull ImperativeParser.SkipContext ctx) { } + /** + * {@inheritDoc} + *

+ * The default implementation does nothing. + */ + @Override public void exitSkip(@NotNull ImperativeParser.SkipContext ctx) { } + + /** + * {@inheritDoc} + *

+ * The default implementation does nothing. + */ + @Override public void enterIfStatement(@NotNull ImperativeParser.IfStatementContext ctx) { } + /** + * {@inheritDoc} + *

+ * The default implementation does nothing. + */ + @Override public void exitIfStatement(@NotNull ImperativeParser.IfStatementContext ctx) { } + + /** + * {@inheritDoc} + *

+ * The default implementation does nothing. + */ + @Override public void enterStatement(@NotNull ImperativeParser.StatementContext ctx) { } + /** + * {@inheritDoc} + *

+ * The default implementation does nothing. + */ + @Override public void exitStatement(@NotNull ImperativeParser.StatementContext ctx) { } /** * {@inheritDoc} @@ -68,78 +133,78 @@ public class ImperativeBaseListener implements ImperativeListener { *

* The default implementation does nothing. */ - @Override public void enterConstant(@NotNull ImperativeParser.ConstantContext ctx) { } + @Override public void enterFunctionCall(@NotNull ImperativeParser.FunctionCallContext ctx) { } /** * {@inheritDoc} *

* The default implementation does nothing. */ - @Override public void exitConstant(@NotNull ImperativeParser.ConstantContext ctx) { } + @Override public void exitFunctionCall(@NotNull ImperativeParser.FunctionCallContext ctx) { } /** * {@inheritDoc} *

* The default implementation does nothing. */ - @Override public void enterLoopStatement(@NotNull ImperativeParser.LoopStatementContext ctx) { } + @Override public void enterFunctionDefinition(@NotNull ImperativeParser.FunctionDefinitionContext ctx) { } /** * {@inheritDoc} *

* The default implementation does nothing. */ - @Override public void exitLoopStatement(@NotNull ImperativeParser.LoopStatementContext ctx) { } + @Override public void exitFunctionDefinition(@NotNull ImperativeParser.FunctionDefinitionContext ctx) { } /** * {@inheritDoc} *

* The default implementation does nothing. */ - @Override public void enterInit(@NotNull ImperativeParser.InitContext ctx) { } + @Override public void enterFormalParameters(@NotNull ImperativeParser.FormalParametersContext ctx) { } /** * {@inheritDoc} *

* The default implementation does nothing. */ - @Override public void exitInit(@NotNull ImperativeParser.InitContext ctx) { } + @Override public void exitFormalParameters(@NotNull ImperativeParser.FormalParametersContext ctx) { } /** * {@inheritDoc} *

* The default implementation does nothing. */ - @Override public void enterSkip(@NotNull ImperativeParser.SkipContext ctx) { } + @Override public void enterSequence(@NotNull ImperativeParser.SequenceContext ctx) { } /** * {@inheritDoc} *

* The default implementation does nothing. */ - @Override public void exitSkip(@NotNull ImperativeParser.SkipContext ctx) { } + @Override public void exitSequence(@NotNull ImperativeParser.SequenceContext ctx) { } /** * {@inheritDoc} *

* The default implementation does nothing. */ - @Override public void enterActualParameters(@NotNull ImperativeParser.ActualParametersContext ctx) { } + @Override public void enterProcedureDefinition(@NotNull ImperativeParser.ProcedureDefinitionContext ctx) { } /** * {@inheritDoc} *

* The default implementation does nothing. */ - @Override public void exitActualParameters(@NotNull ImperativeParser.ActualParametersContext ctx) { } + @Override public void exitProcedureDefinition(@NotNull ImperativeParser.ProcedureDefinitionContext ctx) { } /** * {@inheritDoc} *

* The default implementation does nothing. */ - @Override public void enterIfStatement(@NotNull ImperativeParser.IfStatementContext ctx) { } + @Override public void enterActualParameters(@NotNull ImperativeParser.ActualParametersContext ctx) { } /** * {@inheritDoc} *

* The default implementation does nothing. */ - @Override public void exitIfStatement(@NotNull ImperativeParser.IfStatementContext ctx) { } + @Override public void exitActualParameters(@NotNull ImperativeParser.ActualParametersContext ctx) { } /** * {@inheritDoc} diff --git a/grammar-imperative/src/ImperativeBaseVisitor.class b/grammar-imperative/src/ImperativeBaseVisitor.class index adb4c57da5fa1e4e60aa59a0380d1c027cf651b3..6be14bed71eb04be18b6c12e6e2f6567f41c0f7f 100644 GIT binary patch delta 1108 zcmZ{j%TE(g6vof#%y6eD@@SElRRaaAMiPN2;gNtKii#Gfuliyv7agEem`>3UjSGz{ z1F2_a;sXBy7m5oL-K#5h#*J>=yLDqc9R?@`SHE+=^WA&SJ#*({^-4qN%ij;50H6(= zVo>2mF(`0Tz%2o{1&n7y-FPP(|5aWxZ>CMBKV_vI!*T>9NL8NW1Z9mzORv;vdZPu@dk7V@ ztOx14W>)NR3+9zFX#^K2;j6$Yn)f}TuNcH>`iW0Et6b|~#!5J5${LW9re)?L0W%0S z+x3kOdvguZve1h+H_^Bj!ei@+j?IL(t1A+Vbs4EL5Kh4v*D&K5 zh6)X5Vc0b|p5a2F;UbK>hKHVEtk4jHD>=jCr=H>JR)gZn*C6h;cpXZZ3#{$}19pQS zg3L;04YQWHpLu}Uzzj1FF(b^Q%ob)VvyFLz*}?2)_CUlBeH@%*VUT&6d5(FW8D)+z JFEKBJ{~zpCD!2du delta 343 zcmW;Hy-Px27zOa>^18VC(XlQH;9NVHNryu9Q8O~k&DH47EeRw9K6s;SiQq~}aCN-MUXj-G0 zMl>yQjg2p}ZQriiPSGhj<=t|{(P$2r>JhHpVKI+K_bDv5sV)c#;zov$ac>9xtwnaP zQgurIgGJ;;T`b{KoZ(pUXt|2b?J~m3fykq-?4arK;KOT*6?}Wo@uP%90a86dO}|iz zvoajE0(dj}VaYK>IB)6}iZX#0pDpBV(tq!=6$K?PlX_51U|<>;OB+4zVeAm>pr$>?rAfzcfw^ diff --git a/grammar-imperative/src/ImperativeBaseVisitor.java b/grammar-imperative/src/ImperativeBaseVisitor.java index 336878d..d936892 100644 --- a/grammar-imperative/src/ImperativeBaseVisitor.java +++ b/grammar-imperative/src/ImperativeBaseVisitor.java @@ -25,7 +25,7 @@ public class ImperativeBaseVisitor extends AbstractParseTreeVisitor implem * The default implementation returns the result of calling * {@link #visitChildren} on {@code ctx}. */ - @Override public T visitStatement(@NotNull ImperativeParser.StatementContext ctx) { return visitChildren(ctx); } + @Override public T visitConstant(@NotNull ImperativeParser.ConstantContext ctx) { return visitChildren(ctx); } /** * {@inheritDoc} @@ -33,7 +33,47 @@ public class ImperativeBaseVisitor extends AbstractParseTreeVisitor implem * The default implementation returns the result of calling * {@link #visitChildren} on {@code ctx}. */ - @Override public T visitFunctionCall(@NotNull ImperativeParser.FunctionCallContext ctx) { return visitChildren(ctx); } + @Override public T visitLoopStatement(@NotNull ImperativeParser.LoopStatementContext ctx) { return visitChildren(ctx); } + + /** + * {@inheritDoc} + *

+ * The default implementation returns the result of calling + * {@link #visitChildren} on {@code ctx}. + */ + @Override public T visitReturnStatement(@NotNull ImperativeParser.ReturnStatementContext ctx) { return visitChildren(ctx); } + + /** + * {@inheritDoc} + *

+ * The default implementation returns the result of calling + * {@link #visitChildren} on {@code ctx}. + */ + @Override public T visitInit(@NotNull ImperativeParser.InitContext ctx) { return visitChildren(ctx); } + + /** + * {@inheritDoc} + *

+ * The default implementation returns the result of calling + * {@link #visitChildren} on {@code ctx}. + */ + @Override public T visitSkip(@NotNull ImperativeParser.SkipContext ctx) { return visitChildren(ctx); } + + /** + * {@inheritDoc} + *

+ * The default implementation returns the result of calling + * {@link #visitChildren} on {@code ctx}. + */ + @Override public T visitIfStatement(@NotNull ImperativeParser.IfStatementContext ctx) { return visitChildren(ctx); } + + /** + * {@inheritDoc} + *

+ * The default implementation returns the result of calling + * {@link #visitChildren} on {@code ctx}. + */ + @Override public T visitStatement(@NotNull ImperativeParser.StatementContext ctx) { return visitChildren(ctx); } /** * {@inheritDoc} @@ -49,7 +89,7 @@ public class ImperativeBaseVisitor extends AbstractParseTreeVisitor implem * The default implementation returns the result of calling * {@link #visitChildren} on {@code ctx}. */ - @Override public T visitConstant(@NotNull ImperativeParser.ConstantContext ctx) { return visitChildren(ctx); } + @Override public T visitFunctionCall(@NotNull ImperativeParser.FunctionCallContext ctx) { return visitChildren(ctx); } /** * {@inheritDoc} @@ -57,7 +97,7 @@ public class ImperativeBaseVisitor extends AbstractParseTreeVisitor implem * The default implementation returns the result of calling * {@link #visitChildren} on {@code ctx}. */ - @Override public T visitLoopStatement(@NotNull ImperativeParser.LoopStatementContext ctx) { return visitChildren(ctx); } + @Override public T visitFunctionDefinition(@NotNull ImperativeParser.FunctionDefinitionContext ctx) { return visitChildren(ctx); } /** * {@inheritDoc} @@ -65,7 +105,7 @@ public class ImperativeBaseVisitor extends AbstractParseTreeVisitor implem * The default implementation returns the result of calling * {@link #visitChildren} on {@code ctx}. */ - @Override public T visitInit(@NotNull ImperativeParser.InitContext ctx) { return visitChildren(ctx); } + @Override public T visitFormalParameters(@NotNull ImperativeParser.FormalParametersContext ctx) { return visitChildren(ctx); } /** * {@inheritDoc} @@ -73,7 +113,7 @@ public class ImperativeBaseVisitor extends AbstractParseTreeVisitor implem * The default implementation returns the result of calling * {@link #visitChildren} on {@code ctx}. */ - @Override public T visitSkip(@NotNull ImperativeParser.SkipContext ctx) { return visitChildren(ctx); } + @Override public T visitSequence(@NotNull ImperativeParser.SequenceContext ctx) { return visitChildren(ctx); } /** * {@inheritDoc} @@ -81,7 +121,7 @@ public class ImperativeBaseVisitor extends AbstractParseTreeVisitor implem * The default implementation returns the result of calling * {@link #visitChildren} on {@code ctx}. */ - @Override public T visitActualParameters(@NotNull ImperativeParser.ActualParametersContext ctx) { return visitChildren(ctx); } + @Override public T visitProcedureDefinition(@NotNull ImperativeParser.ProcedureDefinitionContext ctx) { return visitChildren(ctx); } /** * {@inheritDoc} @@ -89,5 +129,5 @@ public class ImperativeBaseVisitor extends AbstractParseTreeVisitor implem * The default implementation returns the result of calling * {@link #visitChildren} on {@code ctx}. */ - @Override public T visitIfStatement(@NotNull ImperativeParser.IfStatementContext ctx) { return visitChildren(ctx); } + @Override public T visitActualParameters(@NotNull ImperativeParser.ActualParametersContext ctx) { return visitChildren(ctx); } } \ No newline at end of file diff --git a/grammar-imperative/src/ImperativeLexer.class b/grammar-imperative/src/ImperativeLexer.class index 019828f835a999545a309bebea34184e460dd034..a2e95b03e38c18f12256691b3ed37694b863d3c1 100644 GIT binary patch literal 7163 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 H`0f7#@J$}O literal 6007 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 diff --git a/grammar-imperative/src/ImperativeLexer.java b/grammar-imperative/src/ImperativeLexer.java index 88474ee..5829742 100644 --- a/grammar-imperative/src/ImperativeLexer.java +++ b/grammar-imperative/src/ImperativeLexer.java @@ -14,26 +14,29 @@ public class ImperativeLexer extends Lexer { protected static final PredictionContextCache _sharedContextCache = new PredictionContextCache(); public static final int - T__23=1, T__22=2, T__21=3, T__20=4, T__19=5, T__18=6, T__17=7, T__16=8, - T__15=9, T__14=10, T__13=11, T__12=12, T__11=13, T__10=14, T__9=15, T__8=16, - T__7=17, T__6=18, T__5=19, T__4=20, T__3=21, T__2=22, T__1=23, T__0=24, - BOOLEAN=25, STRING=26, NUMBER=27, ID=28, WHITESPACE=29, NEW_LINE=30; + T__30=1, T__29=2, T__28=3, T__27=4, T__26=5, T__25=6, T__24=7, T__23=8, + T__22=9, T__21=10, T__20=11, T__19=12, T__18=13, T__17=14, T__16=15, T__15=16, + T__14=17, T__13=18, T__12=19, T__11=20, T__10=21, T__9=22, T__8=23, T__7=24, + T__6=25, T__5=26, T__4=27, T__3=28, T__2=29, T__1=30, T__0=31, BOOLEAN=32, + STRING=33, NUMBER=34, ID=35, WHITESPACE=36, NEW_LINE=37; public static String[] modeNames = { "DEFAULT_MODE" }; public static final String[] tokenNames = { "", - "'do'", "'loop'", "'endif'", "')'", "','", "'+'", "'-'", "'*'", "'or'", - "'not'", "'('", "'if'", "'<'", "'!='", "'<='", "'>'", "'and'", "':='", - "'then'", "'/'", "'=='", "'skip'", "'>='", "'end'", "BOOLEAN", "STRING", - "NUMBER", "ID", "WHITESPACE", "NEW_LINE" + "'endif'", "','", "'*'", "'-'", "'endfunction'", "'or'", "'not'", "'('", + "':'", "'if'", "'<'", "'!='", "'<='", "'and'", "'skip'", "'endloop'", + "'do'", "'loop'", "'function'", "')'", "'procedure'", "'+'", "'return'", + "'>'", "':='", "'then'", "'begin'", "'/'", "'returns'", "'=='", "'>='", + "BOOLEAN", "STRING", "NUMBER", "ID", "WHITESPACE", "NEW_LINE" }; public static final String[] ruleNames = { - "T__23", "T__22", "T__21", "T__20", "T__19", "T__18", "T__17", "T__16", - "T__15", "T__14", "T__13", "T__12", "T__11", "T__10", "T__9", "T__8", - "T__7", "T__6", "T__5", "T__4", "T__3", "T__2", "T__1", "T__0", "BOOLEAN", - "STRING", "NUMBER", "ID", "WHITESPACE", "NEW_LINE" + "T__30", "T__29", "T__28", "T__27", "T__26", "T__25", "T__24", "T__23", + "T__22", "T__21", "T__20", "T__19", "T__18", "T__17", "T__16", "T__15", + "T__14", "T__13", "T__12", "T__11", "T__10", "T__9", "T__8", "T__7", "T__6", + "T__5", "T__4", "T__3", "T__2", "T__1", "T__0", "BOOLEAN", "STRING", "NUMBER", + "ID", "WHITESPACE", "NEW_LINE" }; @@ -60,9 +63,9 @@ public ImperativeLexer(CharStream input) { @Override public void action(RuleContext _localctx, int ruleIndex, int actionIndex) { switch (ruleIndex) { - case 28: WHITESPACE_action((RuleContext)_localctx, actionIndex); break; + case 35: WHITESPACE_action((RuleContext)_localctx, actionIndex); break; - case 29: NEW_LINE_action((RuleContext)_localctx, actionIndex); break; + case 36: NEW_LINE_action((RuleContext)_localctx, actionIndex); break; } } private void WHITESPACE_action(RuleContext _localctx, int actionIndex) { @@ -77,67 +80,90 @@ private void NEW_LINE_action(RuleContext _localctx, int actionIndex) { } public static final String _serializedATN = - "\3\uacf5\uee8c\u4f5d\u8b0d\u4a45\u78bd\u1b2f\u3378\2 \u00c5\b\1\4\2\t"+ + "\3\uacf5\uee8c\u4f5d\u8b0d\u4a45\u78bd\u1b2f\u3378\2\'\u010d\b\1\4\2\t"+ "\2\4\3\t\3\4\4\t\4\4\5\t\5\4\6\t\6\4\7\t\7\4\b\t\b\4\t\t\t\4\n\t\n\4\13"+ "\t\13\4\f\t\f\4\r\t\r\4\16\t\16\4\17\t\17\4\20\t\20\4\21\t\21\4\22\t\22"+ "\4\23\t\23\4\24\t\24\4\25\t\25\4\26\t\26\4\27\t\27\4\30\t\30\4\31\t\31"+ - "\4\32\t\32\4\33\t\33\4\34\t\34\4\35\t\35\4\36\t\36\4\37\t\37\3\2\3\2\3"+ - "\2\3\3\3\3\3\3\3\3\3\3\3\4\3\4\3\4\3\4\3\4\3\4\3\5\3\5\3\6\3\6\3\7\3\7"+ - "\3\b\3\b\3\t\3\t\3\n\3\n\3\n\3\13\3\13\3\13\3\13\3\f\3\f\3\r\3\r\3\r\3"+ - "\16\3\16\3\17\3\17\3\17\3\20\3\20\3\20\3\21\3\21\3\22\3\22\3\22\3\22\3"+ - "\23\3\23\3\23\3\24\3\24\3\24\3\24\3\24\3\25\3\25\3\26\3\26\3\26\3\27\3"+ - "\27\3\27\3\27\3\27\3\30\3\30\3\30\3\31\3\31\3\31\3\31\3\32\3\32\3\32\3"+ - "\32\3\32\3\32\3\32\3\32\3\32\5\32\u0094\n\32\3\33\3\33\7\33\u0098\n\33"+ - "\f\33\16\33\u009b\13\33\3\33\3\33\3\34\6\34\u00a0\n\34\r\34\16\34\u00a1"+ - "\3\34\3\34\6\34\u00a6\n\34\r\34\16\34\u00a7\7\34\u00aa\n\34\f\34\16\34"+ - "\u00ad\13\34\3\35\5\35\u00b0\n\35\3\35\7\35\u00b3\n\35\f\35\16\35\u00b6"+ - "\13\35\3\36\6\36\u00b9\n\36\r\36\16\36\u00ba\3\36\3\36\3\37\5\37\u00c0"+ - "\n\37\3\37\3\37\3\37\3\37\3\u0099 \3\3\1\5\4\1\7\5\1\t\6\1\13\7\1\r\b"+ - "\1\17\t\1\21\n\1\23\13\1\25\f\1\27\r\1\31\16\1\33\17\1\35\20\1\37\21\1"+ - "!\22\1#\23\1%\24\1\'\25\1)\26\1+\27\1-\30\1/\31\1\61\32\1\63\33\1\65\34"+ - "\1\67\35\19\36\1;\37\2= \3\3\2\6\3\2\62;\5\2C\\aac|\6\2\62;C\\aac|\4\2"+ - "\13\13\"\"\u00cc\2\3\3\2\2\2\2\5\3\2\2\2\2\7\3\2\2\2\2\t\3\2\2\2\2\13"+ - "\3\2\2\2\2\r\3\2\2\2\2\17\3\2\2\2\2\21\3\2\2\2\2\23\3\2\2\2\2\25\3\2\2"+ - "\2\2\27\3\2\2\2\2\31\3\2\2\2\2\33\3\2\2\2\2\35\3\2\2\2\2\37\3\2\2\2\2"+ - "!\3\2\2\2\2#\3\2\2\2\2%\3\2\2\2\2\'\3\2\2\2\2)\3\2\2\2\2+\3\2\2\2\2-\3"+ - "\2\2\2\2/\3\2\2\2\2\61\3\2\2\2\2\63\3\2\2\2\2\65\3\2\2\2\2\67\3\2\2\2"+ - "\29\3\2\2\2\2;\3\2\2\2\2=\3\2\2\2\3?\3\2\2\2\5B\3\2\2\2\7G\3\2\2\2\tM"+ - "\3\2\2\2\13O\3\2\2\2\rQ\3\2\2\2\17S\3\2\2\2\21U\3\2\2\2\23W\3\2\2\2\25"+ - "Z\3\2\2\2\27^\3\2\2\2\31`\3\2\2\2\33c\3\2\2\2\35e\3\2\2\2\37h\3\2\2\2"+ - "!k\3\2\2\2#m\3\2\2\2%q\3\2\2\2\'t\3\2\2\2)y\3\2\2\2+{\3\2\2\2-~\3\2\2"+ - "\2/\u0083\3\2\2\2\61\u0086\3\2\2\2\63\u0093\3\2\2\2\65\u0095\3\2\2\2\67"+ - "\u009f\3\2\2\29\u00af\3\2\2\2;\u00b8\3\2\2\2=\u00bf\3\2\2\2?@\7f\2\2@"+ - "A\7q\2\2A\4\3\2\2\2BC\7n\2\2CD\7q\2\2DE\7q\2\2EF\7r\2\2F\6\3\2\2\2GH\7"+ - "g\2\2HI\7p\2\2IJ\7f\2\2JK\7k\2\2KL\7h\2\2L\b\3\2\2\2MN\7+\2\2N\n\3\2\2"+ - "\2OP\7.\2\2P\f\3\2\2\2QR\7-\2\2R\16\3\2\2\2ST\7/\2\2T\20\3\2\2\2UV\7,"+ - "\2\2V\22\3\2\2\2WX\7q\2\2XY\7t\2\2Y\24\3\2\2\2Z[\7p\2\2[\\\7q\2\2\\]\7"+ - "v\2\2]\26\3\2\2\2^_\7*\2\2_\30\3\2\2\2`a\7k\2\2ab\7h\2\2b\32\3\2\2\2c"+ - "d\7>\2\2d\34\3\2\2\2ef\7#\2\2fg\7?\2\2g\36\3\2\2\2hi\7>\2\2ij\7?\2\2j"+ - " \3\2\2\2kl\7@\2\2l\"\3\2\2\2mn\7c\2\2no\7p\2\2op\7f\2\2p$\3\2\2\2qr\7"+ - "<\2\2rs\7?\2\2s&\3\2\2\2tu\7v\2\2uv\7j\2\2vw\7g\2\2wx\7p\2\2x(\3\2\2\2"+ - "yz\7\61\2\2z*\3\2\2\2{|\7?\2\2|}\7?\2\2},\3\2\2\2~\177\7u\2\2\177\u0080"+ - "\7m\2\2\u0080\u0081\7k\2\2\u0081\u0082\7r\2\2\u0082.\3\2\2\2\u0083\u0084"+ - "\7@\2\2\u0084\u0085\7?\2\2\u0085\60\3\2\2\2\u0086\u0087\7g\2\2\u0087\u0088"+ - "\7p\2\2\u0088\u0089\7f\2\2\u0089\62\3\2\2\2\u008a\u008b\7h\2\2\u008b\u008c"+ - "\7c\2\2\u008c\u008d\7n\2\2\u008d\u008e\7u\2\2\u008e\u0094\7g\2\2\u008f"+ - "\u0090\7v\2\2\u0090\u0091\7t\2\2\u0091\u0092\7w\2\2\u0092\u0094\7g\2\2"+ - "\u0093\u008a\3\2\2\2\u0093\u008f\3\2\2\2\u0094\64\3\2\2\2\u0095\u0099"+ - "\7$\2\2\u0096\u0098\13\2\2\2\u0097\u0096\3\2\2\2\u0098\u009b\3\2\2\2\u0099"+ - "\u009a\3\2\2\2\u0099\u0097\3\2\2\2\u009a\u009c\3\2\2\2\u009b\u0099\3\2"+ - "\2\2\u009c\u009d\7$\2\2\u009d\66\3\2\2\2\u009e\u00a0\t\2\2\2\u009f\u009e"+ - "\3\2\2\2\u00a0\u00a1\3\2\2\2\u00a1\u009f\3\2\2\2\u00a1\u00a2\3\2\2\2\u00a2"+ - "\u00ab\3\2\2\2\u00a3\u00a5\7\60\2\2\u00a4\u00a6\t\2\2\2\u00a5\u00a4\3"+ - "\2\2\2\u00a6\u00a7\3\2\2\2\u00a7\u00a5\3\2\2\2\u00a7\u00a8\3\2\2\2\u00a8"+ - "\u00aa\3\2\2\2\u00a9\u00a3\3\2\2\2\u00aa\u00ad\3\2\2\2\u00ab\u00a9\3\2"+ - "\2\2\u00ab\u00ac\3\2\2\2\u00ac8\3\2\2\2\u00ad\u00ab\3\2\2\2\u00ae\u00b0"+ - "\t\3\2\2\u00af\u00ae\3\2\2\2\u00b0\u00b4\3\2\2\2\u00b1\u00b3\t\4\2\2\u00b2"+ - "\u00b1\3\2\2\2\u00b3\u00b6\3\2\2\2\u00b4\u00b2\3\2\2\2\u00b4\u00b5\3\2"+ - "\2\2\u00b5:\3\2\2\2\u00b6\u00b4\3\2\2\2\u00b7\u00b9\t\5\2\2\u00b8\u00b7"+ - "\3\2\2\2\u00b9\u00ba\3\2\2\2\u00ba\u00b8\3\2\2\2\u00ba\u00bb\3\2\2\2\u00bb"+ - "\u00bc\3\2\2\2\u00bc\u00bd\b\36\2\2\u00bd<\3\2\2\2\u00be\u00c0\7\17\2"+ - "\2\u00bf\u00be\3\2\2\2\u00bf\u00c0\3\2\2\2\u00c0\u00c1\3\2\2\2\u00c1\u00c2"+ - "\7\f\2\2\u00c2\u00c3\3\2\2\2\u00c3\u00c4\b\37\3\2\u00c4>\3\2\2\2\r\2\u0093"+ - "\u0099\u00a1\u00a7\u00ab\u00af\u00b2\u00b4\u00ba\u00bf"; + "\4\32\t\32\4\33\t\33\4\34\t\34\4\35\t\35\4\36\t\36\4\37\t\37\4 \t \4!"+ + "\t!\4\"\t\"\4#\t#\4$\t$\4%\t%\4&\t&\3\2\3\2\3\2\3\2\3\2\3\2\3\3\3\3\3"+ + "\4\3\4\3\5\3\5\3\6\3\6\3\6\3\6\3\6\3\6\3\6\3\6\3\6\3\6\3\6\3\6\3\7\3\7"+ + "\3\7\3\b\3\b\3\b\3\b\3\t\3\t\3\n\3\n\3\13\3\13\3\13\3\f\3\f\3\r\3\r\3"+ + "\r\3\16\3\16\3\16\3\17\3\17\3\17\3\17\3\20\3\20\3\20\3\20\3\20\3\21\3"+ + "\21\3\21\3\21\3\21\3\21\3\21\3\21\3\22\3\22\3\22\3\23\3\23\3\23\3\23\3"+ + "\23\3\24\3\24\3\24\3\24\3\24\3\24\3\24\3\24\3\24\3\25\3\25\3\26\3\26\3"+ + "\26\3\26\3\26\3\26\3\26\3\26\3\26\3\26\3\27\3\27\3\30\3\30\3\30\3\30\3"+ + "\30\3\30\3\30\3\31\3\31\3\32\3\32\3\32\3\33\3\33\3\33\3\33\3\33\3\34\3"+ + "\34\3\34\3\34\3\34\3\34\3\35\3\35\3\36\3\36\3\36\3\36\3\36\3\36\3\36\3"+ + "\36\3\37\3\37\3\37\3 \3 \3 \3!\3!\3!\3!\3!\3!\3!\3!\3!\5!\u00dc\n!\3\""+ + "\3\"\7\"\u00e0\n\"\f\"\16\"\u00e3\13\"\3\"\3\"\3#\6#\u00e8\n#\r#\16#\u00e9"+ + "\3#\3#\6#\u00ee\n#\r#\16#\u00ef\7#\u00f2\n#\f#\16#\u00f5\13#\3$\5$\u00f8"+ + "\n$\3$\7$\u00fb\n$\f$\16$\u00fe\13$\3%\6%\u0101\n%\r%\16%\u0102\3%\3%"+ + "\3&\5&\u0108\n&\3&\3&\3&\3&\3\u00e1\'\3\3\1\5\4\1\7\5\1\t\6\1\13\7\1\r"+ + "\b\1\17\t\1\21\n\1\23\13\1\25\f\1\27\r\1\31\16\1\33\17\1\35\20\1\37\21"+ + "\1!\22\1#\23\1%\24\1\'\25\1)\26\1+\27\1-\30\1/\31\1\61\32\1\63\33\1\65"+ + "\34\1\67\35\19\36\1;\37\1= \1?!\1A\"\1C#\1E$\1G%\1I&\2K\'\3\3\2\6\3\2"+ + "\62;\5\2C\\aac|\6\2\62;C\\aac|\4\2\13\13\"\"\u0114\2\3\3\2\2\2\2\5\3\2"+ + "\2\2\2\7\3\2\2\2\2\t\3\2\2\2\2\13\3\2\2\2\2\r\3\2\2\2\2\17\3\2\2\2\2\21"+ + "\3\2\2\2\2\23\3\2\2\2\2\25\3\2\2\2\2\27\3\2\2\2\2\31\3\2\2\2\2\33\3\2"+ + "\2\2\2\35\3\2\2\2\2\37\3\2\2\2\2!\3\2\2\2\2#\3\2\2\2\2%\3\2\2\2\2\'\3"+ + "\2\2\2\2)\3\2\2\2\2+\3\2\2\2\2-\3\2\2\2\2/\3\2\2\2\2\61\3\2\2\2\2\63\3"+ + "\2\2\2\2\65\3\2\2\2\2\67\3\2\2\2\29\3\2\2\2\2;\3\2\2\2\2=\3\2\2\2\2?\3"+ + "\2\2\2\2A\3\2\2\2\2C\3\2\2\2\2E\3\2\2\2\2G\3\2\2\2\2I\3\2\2\2\2K\3\2\2"+ + "\2\3M\3\2\2\2\5S\3\2\2\2\7U\3\2\2\2\tW\3\2\2\2\13Y\3\2\2\2\re\3\2\2\2"+ + "\17h\3\2\2\2\21l\3\2\2\2\23n\3\2\2\2\25p\3\2\2\2\27s\3\2\2\2\31u\3\2\2"+ + "\2\33x\3\2\2\2\35{\3\2\2\2\37\177\3\2\2\2!\u0084\3\2\2\2#\u008c\3\2\2"+ + "\2%\u008f\3\2\2\2\'\u0094\3\2\2\2)\u009d\3\2\2\2+\u009f\3\2\2\2-\u00a9"+ + "\3\2\2\2/\u00ab\3\2\2\2\61\u00b2\3\2\2\2\63\u00b4\3\2\2\2\65\u00b7\3\2"+ + "\2\2\67\u00bc\3\2\2\29\u00c2\3\2\2\2;\u00c4\3\2\2\2=\u00cc\3\2\2\2?\u00cf"+ + "\3\2\2\2A\u00db\3\2\2\2C\u00dd\3\2\2\2E\u00e7\3\2\2\2G\u00f7\3\2\2\2I"+ + "\u0100\3\2\2\2K\u0107\3\2\2\2MN\7g\2\2NO\7p\2\2OP\7f\2\2PQ\7k\2\2QR\7"+ + "h\2\2R\4\3\2\2\2ST\7.\2\2T\6\3\2\2\2UV\7,\2\2V\b\3\2\2\2WX\7/\2\2X\n\3"+ + "\2\2\2YZ\7g\2\2Z[\7p\2\2[\\\7f\2\2\\]\7h\2\2]^\7w\2\2^_\7p\2\2_`\7e\2"+ + "\2`a\7v\2\2ab\7k\2\2bc\7q\2\2cd\7p\2\2d\f\3\2\2\2ef\7q\2\2fg\7t\2\2g\16"+ + "\3\2\2\2hi\7p\2\2ij\7q\2\2jk\7v\2\2k\20\3\2\2\2lm\7*\2\2m\22\3\2\2\2n"+ + "o\7<\2\2o\24\3\2\2\2pq\7k\2\2qr\7h\2\2r\26\3\2\2\2st\7>\2\2t\30\3\2\2"+ + "\2uv\7#\2\2vw\7?\2\2w\32\3\2\2\2xy\7>\2\2yz\7?\2\2z\34\3\2\2\2{|\7c\2"+ + "\2|}\7p\2\2}~\7f\2\2~\36\3\2\2\2\177\u0080\7u\2\2\u0080\u0081\7m\2\2\u0081"+ + "\u0082\7k\2\2\u0082\u0083\7r\2\2\u0083 \3\2\2\2\u0084\u0085\7g\2\2\u0085"+ + "\u0086\7p\2\2\u0086\u0087\7f\2\2\u0087\u0088\7n\2\2\u0088\u0089\7q\2\2"+ + "\u0089\u008a\7q\2\2\u008a\u008b\7r\2\2\u008b\"\3\2\2\2\u008c\u008d\7f"+ + "\2\2\u008d\u008e\7q\2\2\u008e$\3\2\2\2\u008f\u0090\7n\2\2\u0090\u0091"+ + "\7q\2\2\u0091\u0092\7q\2\2\u0092\u0093\7r\2\2\u0093&\3\2\2\2\u0094\u0095"+ + "\7h\2\2\u0095\u0096\7w\2\2\u0096\u0097\7p\2\2\u0097\u0098\7e\2\2\u0098"+ + "\u0099\7v\2\2\u0099\u009a\7k\2\2\u009a\u009b\7q\2\2\u009b\u009c\7p\2\2"+ + "\u009c(\3\2\2\2\u009d\u009e\7+\2\2\u009e*\3\2\2\2\u009f\u00a0\7r\2\2\u00a0"+ + "\u00a1\7t\2\2\u00a1\u00a2\7q\2\2\u00a2\u00a3\7e\2\2\u00a3\u00a4\7g\2\2"+ + "\u00a4\u00a5\7f\2\2\u00a5\u00a6\7w\2\2\u00a6\u00a7\7t\2\2\u00a7\u00a8"+ + "\7g\2\2\u00a8,\3\2\2\2\u00a9\u00aa\7-\2\2\u00aa.\3\2\2\2\u00ab\u00ac\7"+ + "t\2\2\u00ac\u00ad\7g\2\2\u00ad\u00ae\7v\2\2\u00ae\u00af\7w\2\2\u00af\u00b0"+ + "\7t\2\2\u00b0\u00b1\7p\2\2\u00b1\60\3\2\2\2\u00b2\u00b3\7@\2\2\u00b3\62"+ + "\3\2\2\2\u00b4\u00b5\7<\2\2\u00b5\u00b6\7?\2\2\u00b6\64\3\2\2\2\u00b7"+ + "\u00b8\7v\2\2\u00b8\u00b9\7j\2\2\u00b9\u00ba\7g\2\2\u00ba\u00bb\7p\2\2"+ + "\u00bb\66\3\2\2\2\u00bc\u00bd\7d\2\2\u00bd\u00be\7g\2\2\u00be\u00bf\7"+ + "i\2\2\u00bf\u00c0\7k\2\2\u00c0\u00c1\7p\2\2\u00c18\3\2\2\2\u00c2\u00c3"+ + "\7\61\2\2\u00c3:\3\2\2\2\u00c4\u00c5\7t\2\2\u00c5\u00c6\7g\2\2\u00c6\u00c7"+ + "\7v\2\2\u00c7\u00c8\7w\2\2\u00c8\u00c9\7t\2\2\u00c9\u00ca\7p\2\2\u00ca"+ + "\u00cb\7u\2\2\u00cb<\3\2\2\2\u00cc\u00cd\7?\2\2\u00cd\u00ce\7?\2\2\u00ce"+ + ">\3\2\2\2\u00cf\u00d0\7@\2\2\u00d0\u00d1\7?\2\2\u00d1@\3\2\2\2\u00d2\u00d3"+ + "\7h\2\2\u00d3\u00d4\7c\2\2\u00d4\u00d5\7n\2\2\u00d5\u00d6\7u\2\2\u00d6"+ + "\u00dc\7g\2\2\u00d7\u00d8\7v\2\2\u00d8\u00d9\7t\2\2\u00d9\u00da\7w\2\2"+ + "\u00da\u00dc\7g\2\2\u00db\u00d2\3\2\2\2\u00db\u00d7\3\2\2\2\u00dcB\3\2"+ + "\2\2\u00dd\u00e1\7$\2\2\u00de\u00e0\13\2\2\2\u00df\u00de\3\2\2\2\u00e0"+ + "\u00e3\3\2\2\2\u00e1\u00e2\3\2\2\2\u00e1\u00df\3\2\2\2\u00e2\u00e4\3\2"+ + "\2\2\u00e3\u00e1\3\2\2\2\u00e4\u00e5\7$\2\2\u00e5D\3\2\2\2\u00e6\u00e8"+ + "\t\2\2\2\u00e7\u00e6\3\2\2\2\u00e8\u00e9\3\2\2\2\u00e9\u00e7\3\2\2\2\u00e9"+ + "\u00ea\3\2\2\2\u00ea\u00f3\3\2\2\2\u00eb\u00ed\7\60\2\2\u00ec\u00ee\t"+ + "\2\2\2\u00ed\u00ec\3\2\2\2\u00ee\u00ef\3\2\2\2\u00ef\u00ed\3\2\2\2\u00ef"+ + "\u00f0\3\2\2\2\u00f0\u00f2\3\2\2\2\u00f1\u00eb\3\2\2\2\u00f2\u00f5\3\2"+ + "\2\2\u00f3\u00f1\3\2\2\2\u00f3\u00f4\3\2\2\2\u00f4F\3\2\2\2\u00f5\u00f3"+ + "\3\2\2\2\u00f6\u00f8\t\3\2\2\u00f7\u00f6\3\2\2\2\u00f8\u00fc\3\2\2\2\u00f9"+ + "\u00fb\t\4\2\2\u00fa\u00f9\3\2\2\2\u00fb\u00fe\3\2\2\2\u00fc\u00fa\3\2"+ + "\2\2\u00fc\u00fd\3\2\2\2\u00fdH\3\2\2\2\u00fe\u00fc\3\2\2\2\u00ff\u0101"+ + "\t\5\2\2\u0100\u00ff\3\2\2\2\u0101\u0102\3\2\2\2\u0102\u0100\3\2\2\2\u0102"+ + "\u0103\3\2\2\2\u0103\u0104\3\2\2\2\u0104\u0105\b%\2\2\u0105J\3\2\2\2\u0106"+ + "\u0108\7\17\2\2\u0107\u0106\3\2\2\2\u0107\u0108\3\2\2\2\u0108\u0109\3"+ + "\2\2\2\u0109\u010a\7\f\2\2\u010a\u010b\3\2\2\2\u010b\u010c\b&\3\2\u010c"+ + "L\3\2\2\2\r\2\u00db\u00e1\u00e9\u00ef\u00f3\u00f7\u00fa\u00fc\u0102\u0107"; public static final ATN _ATN = ATNSimulator.deserialize(_serializedATN.toCharArray()); static { diff --git a/grammar-imperative/src/ImperativeLexer.tokens b/grammar-imperative/src/ImperativeLexer.tokens index 5e0d877..7878765 100644 --- a/grammar-imperative/src/ImperativeLexer.tokens +++ b/grammar-imperative/src/ImperativeLexer.tokens @@ -1,54 +1,68 @@ -T__23=1 -T__22=2 -T__21=3 -T__20=4 -NUMBER=27 -WHITESPACE=29 -ID=28 -T__9=15 -T__8=16 -T__7=17 -T__6=18 -T__5=19 -T__4=20 -T__19=5 -BOOLEAN=25 -T__16=8 -T__15=9 -T__18=6 -T__17=7 -T__12=12 -T__11=13 -T__14=10 -T__13=11 -T__1=23 -T__0=24 -T__10=14 -T__3=21 -T__2=22 -NEW_LINE=30 -STRING=26 -'end'=24 -'>='=23 -'skip'=22 -'=='=21 -'/'=20 -'then'=19 -':='=18 -'and'=17 -'>'=16 -'<='=15 -'!='=14 -'<'=13 -'if'=12 -'not'=10 -'('=11 -'-'=7 -'*'=8 -'or'=9 -'+'=6 -','=5 -'endif'=3 -')'=4 -'loop'=2 -'do'=1 +T__29=2 +T__28=3 +T__27=4 +T__26=5 +T__25=6 +T__24=7 +T__23=8 +T__22=9 +T__21=10 +T__20=11 +NUMBER=34 +WHITESPACE=36 +ID=35 +T__9=22 +T__8=23 +T__7=24 +T__6=25 +T__5=26 +T__4=27 +T__19=12 +T__30=1 +BOOLEAN=32 +T__16=15 +T__15=16 +T__18=13 +T__17=14 +T__12=19 +T__11=20 +T__14=17 +T__13=18 +T__1=30 +T__0=31 +T__3=28 +T__10=21 +T__2=29 +NEW_LINE=37 +STRING=33 +'>='=31 +'=='=30 +'returns'=29 +'/'=28 +'begin'=27 +'then'=26 +':='=25 +'>'=24 +'return'=23 +'+'=22 +'procedure'=21 +'function'=19 +')'=20 +'loop'=18 +'do'=17 +'endloop'=16 +'skip'=15 +'and'=14 +'<='=13 +'!='=12 +'<'=11 +'if'=10 +':'=9 +'('=8 +'not'=7 +'or'=6 +'endfunction'=5 +'-'=4 +'*'=3 +','=2 +'endif'=1 diff --git a/grammar-imperative/src/ImperativeListener.class b/grammar-imperative/src/ImperativeListener.class index 79509c717301a7b273891a75abe0a2ccf3490db2..4efcda0ebdc48da09b3d0b8be96b315a28da497b 100644 GIT binary patch literal 3210 zcmaKu>2}mc5QVGRgu%uuHV^_BY`g&?fsn-si7^-k24g&|Ss?Pzc0@FiBWZkmcrTkrcPM4z~%XFq_X13YrZ0j`0!yUaAq?t~q*i(yhaF|-}#(CJ$ zjd&-_!i~t#K}W-NDUOpI1(FyAFEx{N%Mao_O8uRie!BON-wCs}znbK$-6&dAbVBcj zdFi8Qz|J4D%yK;I(Q7QJ7`eGm3zMxucB=iRdXZ2xVrw^(WV?lF>JEk;{iQ`sCyTn)Z(ZlzG_E-Qrf9qtbe>lPPnor@qsFzCSJY>H8*zx`{jTV^`Q;oY z1&0b?%N{jlO|Yod`a9hA=nvE~zdl>50+h8(P|?udyf!O)@dj_DQ3hP)S!tGxvj&59 zvSrR3Dsu-aE^p!OhR)-%;8CZn!+>#cnc|Ku;eKt!dxz*x+_7@(9HdLdFl%A&L7751 zyM~o++&1@VIfx>U0!5?Mi1V2fRw97bX~-<5np8B=<8@bWhIsY1cWfv+U9e@``TC#n zWw>=8uez6rqLX`bNYYLaxrUN?)W-ByYEkEZRq~f%>po`PYe3O+TKb=^j@#O!cX-9c z$azUUrv_OM+jEM9qEmKVYiZKf@4Bfjm+X;NbVf)x$LqrC_UEnngjt}#6#Ki>&bz() zyNUg+N8Jph{oMyH_qPrxI@U_MX3uDuU-aJENy2KUzF{3wXG z{3jdlbsH^dLHw}fsn)*za6QAXqO?a_iY}Ig_xrLby1*c8LuNigZabzK($nxAH^aDE zi+1E$Mpjy}BA%{vSA1gm(`6fU9+Ql6t;{iehss{$pea_UXbq-4Ic$DktUUY~=nx&ns1GC0q>d3Gcw7qh z(;z2@q~I`(aq^@T9H-NqJR=3apmUr&F9k2qB~DIB!D*W1mU2CIx-^nv*xA z;7$6Llix|f@99TQ{v-u&(-J4|NWo=V;pBZO_<$a9vMB{0(;6qAvLMdiI?mexYLN&1 zfFpF6UeXbq!U5NaIsrWeJq!I3Itjf9y$qd!EsGz!?nbf7#D_SeM=yYA9$zSe39$l-V3NbUFJsN>A; zC${h=upbWkiG17cy0!nFy!Um&wz0&HG0sO=0d;Q5MFzvwX2Zb@Pv9+|#EcYUB`ivH zeB>(I!FPU$_tN#iE(6W0Xqc3BbmSD8auUnJ#8;8UH#vfrQWSrMflXzajX(92J9Y{j ymg#E_DZ#$q*SKRWeG($SE>G&X5|ZlPNMy&XRNFJh@0Nf$|5o_EOaV diff --git a/grammar-imperative/src/ImperativeListener.java b/grammar-imperative/src/ImperativeListener.java index e886c54..b9d3b6f 100644 --- a/grammar-imperative/src/ImperativeListener.java +++ b/grammar-imperative/src/ImperativeListener.java @@ -19,26 +19,81 @@ public interface ImperativeListener extends ParseTreeListener { void exitExpression(@NotNull ImperativeParser.ExpressionContext ctx); /** - * Enter a parse tree produced by {@link ImperativeParser#statement}. + * Enter a parse tree produced by {@link ImperativeParser#constant}. * @param ctx the parse tree */ - void enterStatement(@NotNull ImperativeParser.StatementContext ctx); + void enterConstant(@NotNull ImperativeParser.ConstantContext ctx); /** - * Exit a parse tree produced by {@link ImperativeParser#statement}. + * Exit a parse tree produced by {@link ImperativeParser#constant}. * @param ctx the parse tree */ - void exitStatement(@NotNull ImperativeParser.StatementContext ctx); + void exitConstant(@NotNull ImperativeParser.ConstantContext ctx); /** - * Enter a parse tree produced by {@link ImperativeParser#functionCall}. + * Enter a parse tree produced by {@link ImperativeParser#loopStatement}. * @param ctx the parse tree */ - void enterFunctionCall(@NotNull ImperativeParser.FunctionCallContext ctx); + void enterLoopStatement(@NotNull ImperativeParser.LoopStatementContext ctx); /** - * Exit a parse tree produced by {@link ImperativeParser#functionCall}. + * Exit a parse tree produced by {@link ImperativeParser#loopStatement}. * @param ctx the parse tree */ - void exitFunctionCall(@NotNull ImperativeParser.FunctionCallContext ctx); + void exitLoopStatement(@NotNull ImperativeParser.LoopStatementContext ctx); + + /** + * Enter a parse tree produced by {@link ImperativeParser#returnStatement}. + * @param ctx the parse tree + */ + void enterReturnStatement(@NotNull ImperativeParser.ReturnStatementContext ctx); + /** + * Exit a parse tree produced by {@link ImperativeParser#returnStatement}. + * @param ctx the parse tree + */ + void exitReturnStatement(@NotNull ImperativeParser.ReturnStatementContext ctx); + + /** + * Enter a parse tree produced by {@link ImperativeParser#init}. + * @param ctx the parse tree + */ + void enterInit(@NotNull ImperativeParser.InitContext ctx); + /** + * Exit a parse tree produced by {@link ImperativeParser#init}. + * @param ctx the parse tree + */ + void exitInit(@NotNull ImperativeParser.InitContext ctx); + + /** + * Enter a parse tree produced by {@link ImperativeParser#skip}. + * @param ctx the parse tree + */ + void enterSkip(@NotNull ImperativeParser.SkipContext ctx); + /** + * Exit a parse tree produced by {@link ImperativeParser#skip}. + * @param ctx the parse tree + */ + void exitSkip(@NotNull ImperativeParser.SkipContext ctx); + + /** + * Enter a parse tree produced by {@link ImperativeParser#ifStatement}. + * @param ctx the parse tree + */ + void enterIfStatement(@NotNull ImperativeParser.IfStatementContext ctx); + /** + * Exit a parse tree produced by {@link ImperativeParser#ifStatement}. + * @param ctx the parse tree + */ + void exitIfStatement(@NotNull ImperativeParser.IfStatementContext ctx); + + /** + * Enter a parse tree produced by {@link ImperativeParser#statement}. + * @param ctx the parse tree + */ + void enterStatement(@NotNull ImperativeParser.StatementContext ctx); + /** + * Exit a parse tree produced by {@link ImperativeParser#statement}. + * @param ctx the parse tree + */ + void exitStatement(@NotNull ImperativeParser.StatementContext ctx); /** * Enter a parse tree produced by {@link ImperativeParser#assignment}. @@ -52,68 +107,68 @@ public interface ImperativeListener extends ParseTreeListener { void exitAssignment(@NotNull ImperativeParser.AssignmentContext ctx); /** - * Enter a parse tree produced by {@link ImperativeParser#constant}. + * Enter a parse tree produced by {@link ImperativeParser#functionCall}. * @param ctx the parse tree */ - void enterConstant(@NotNull ImperativeParser.ConstantContext ctx); + void enterFunctionCall(@NotNull ImperativeParser.FunctionCallContext ctx); /** - * Exit a parse tree produced by {@link ImperativeParser#constant}. + * Exit a parse tree produced by {@link ImperativeParser#functionCall}. * @param ctx the parse tree */ - void exitConstant(@NotNull ImperativeParser.ConstantContext ctx); + void exitFunctionCall(@NotNull ImperativeParser.FunctionCallContext ctx); /** - * Enter a parse tree produced by {@link ImperativeParser#loopStatement}. + * Enter a parse tree produced by {@link ImperativeParser#functionDefinition}. * @param ctx the parse tree */ - void enterLoopStatement(@NotNull ImperativeParser.LoopStatementContext ctx); + void enterFunctionDefinition(@NotNull ImperativeParser.FunctionDefinitionContext ctx); /** - * Exit a parse tree produced by {@link ImperativeParser#loopStatement}. + * Exit a parse tree produced by {@link ImperativeParser#functionDefinition}. * @param ctx the parse tree */ - void exitLoopStatement(@NotNull ImperativeParser.LoopStatementContext ctx); + void exitFunctionDefinition(@NotNull ImperativeParser.FunctionDefinitionContext ctx); /** - * Enter a parse tree produced by {@link ImperativeParser#init}. + * Enter a parse tree produced by {@link ImperativeParser#formalParameters}. * @param ctx the parse tree */ - void enterInit(@NotNull ImperativeParser.InitContext ctx); + void enterFormalParameters(@NotNull ImperativeParser.FormalParametersContext ctx); /** - * Exit a parse tree produced by {@link ImperativeParser#init}. + * Exit a parse tree produced by {@link ImperativeParser#formalParameters}. * @param ctx the parse tree */ - void exitInit(@NotNull ImperativeParser.InitContext ctx); + void exitFormalParameters(@NotNull ImperativeParser.FormalParametersContext ctx); /** - * Enter a parse tree produced by {@link ImperativeParser#skip}. + * Enter a parse tree produced by {@link ImperativeParser#sequence}. * @param ctx the parse tree */ - void enterSkip(@NotNull ImperativeParser.SkipContext ctx); + void enterSequence(@NotNull ImperativeParser.SequenceContext ctx); /** - * Exit a parse tree produced by {@link ImperativeParser#skip}. + * Exit a parse tree produced by {@link ImperativeParser#sequence}. * @param ctx the parse tree */ - void exitSkip(@NotNull ImperativeParser.SkipContext ctx); + void exitSequence(@NotNull ImperativeParser.SequenceContext ctx); /** - * Enter a parse tree produced by {@link ImperativeParser#actualParameters}. + * Enter a parse tree produced by {@link ImperativeParser#procedureDefinition}. * @param ctx the parse tree */ - void enterActualParameters(@NotNull ImperativeParser.ActualParametersContext ctx); + void enterProcedureDefinition(@NotNull ImperativeParser.ProcedureDefinitionContext ctx); /** - * Exit a parse tree produced by {@link ImperativeParser#actualParameters}. + * Exit a parse tree produced by {@link ImperativeParser#procedureDefinition}. * @param ctx the parse tree */ - void exitActualParameters(@NotNull ImperativeParser.ActualParametersContext ctx); + void exitProcedureDefinition(@NotNull ImperativeParser.ProcedureDefinitionContext ctx); /** - * Enter a parse tree produced by {@link ImperativeParser#ifStatement}. + * Enter a parse tree produced by {@link ImperativeParser#actualParameters}. * @param ctx the parse tree */ - void enterIfStatement(@NotNull ImperativeParser.IfStatementContext ctx); + void enterActualParameters(@NotNull ImperativeParser.ActualParametersContext ctx); /** - * Exit a parse tree produced by {@link ImperativeParser#ifStatement}. + * Exit a parse tree produced by {@link ImperativeParser#actualParameters}. * @param ctx the parse tree */ - void exitIfStatement(@NotNull ImperativeParser.IfStatementContext ctx); + void exitActualParameters(@NotNull ImperativeParser.ActualParametersContext ctx); } \ No newline at end of file diff --git a/grammar-imperative/src/ImperativeParser$ActualParametersContext.class b/grammar-imperative/src/ImperativeParser$ActualParametersContext.class index b8f8767e4a73a26d5db3a137baf79acec9fee104..4a8971af7bd43cb61e1fcdbee8adf2811d527e85 100644 GIT binary patch delta 106 zcmeyw`-yi$JS!8^-^q!rI!w$AllxhX^_iI&*qB)u7#SoOB!Q$L0|SFJkY)tZ%mO@X zfD|Kx5Rha82{E%y{>W;^#>~MW$jmuem(8AynFq+^om|A`&c-ajAjB*I!uhWCik-%>oeYEU}L<;z{nuMAPFP|85kI(fixqKW)@&y z1Ed%kgn%R)NQm+NbZ>1Q{Ps)@8G2V|)f=KA&8~=FZ0Wib06+_2m6*#sH#- B7O(&S diff --git a/grammar-imperative/src/ImperativeParser$AssignmentContext.class b/grammar-imperative/src/ImperativeParser$AssignmentContext.class index 7b832ec93dec67b047e5061003f0ef6468c7e6ff..de0e1570d52e0b0912ffbc9a113c37278f5564ec 100644 GIT binary patch delta 111 zcmZ3)yO?(YE2HvcMpj`aCiBT+tOiU>mXkeLwe^{77}%I>85kMF86~Ql z(#!%JYk(9Zg8-0Z0|_zNOV8xAjsr2`7WzH8>}60h=)Z3KteX diff --git a/grammar-imperative/src/ImperativeParser$ConstantContext.class b/grammar-imperative/src/ImperativeParser$ConstantContext.class index 07c3f214258c20ffd6d8d74066261697d155e867..016d0f06549ec9146e0427772866be64cbe1164a 100644 GIT binary patch delta 174 zcmZqTY2w*n%i^NIyp4fz0|NsCBLg3hWCPL+%$tBDKLZbt;bl(%4k@ zPHtq85R<|t)i-%Pi#8k61O_&yiIX3&hzoJ9L9=SoWKLEyHm0czf=tsUyRzD|G0g-r VXHD*6b!TIm%OJ!wZ}N3kZ2&j~86^M! diff --git a/grammar-imperative/src/ImperativeParser$ExpressionContext.class b/grammar-imperative/src/ImperativeParser$ExpressionContext.class index 22b8db6f57eccae53a1d4b46b5ebaa8730c37cf9..f0ac8526abdd21ae8a9e370c889ca82af9f81a30 100644 GIT binary patch delta 166 zcmZn^Y82WqkBy1hdh!A`0|RC|21W*H1{okJ#=yX!z`zV-F)(mw2`DpfV_?|;WHT~| z14%ZJIJ3hfb{!^Wr^$Nk7EH{plQY=0nV8)tPh~gYV)kTUWAM7-;|i delta 166 zcmZ9DJq`g;6h^=KM&7%j;U$dl5+i=XU@}A@QHaV`Y(Y6&aHACqP)ubBT3hn8nv;{0 zoYIx9x*M{s4^tHEB0?WNumd1P91M`G>Ejn_RqzN&p!s$7u69X!&FzjH=-DpFq26p! u=Lm*lG&s?ZO*-=YJE!5F=}}Vk;tc0#G1ILa3|B#Oy~xRM4abeXW&Z{4S{3a8 diff --git a/grammar-imperative/src/ImperativeParser$FormalParametersContext.class b/grammar-imperative/src/ImperativeParser$FormalParametersContext.class new file mode 100644 index 0000000000000000000000000000000000000000..650b8efb76b4bed9b27d2a90c8ec07b652129aa6 GIT binary patch literal 1660 zcmb7ET~pIQ6g``krXMNNLO}rq1hF4LP*IR}(3v{SWTv1a9p0C+Qv+$rq-lr0!hi4q zUvTun(N}+z*=vCn~Oq*M~#9Z8>8ilNp8x+qF zDVetEZZRxn`zO8QPD?oN+m0kgWb#@~oVX0H2cq3KTc+D2R(}K*x9j@b zgCkLsL)a-*H+$n-w;?VSs#R)sj#h^FUbF4g#I`91nK2qC!r`vj5q{@ZqzN?WSk>?Z zPc@8UjNEYryKI3*UR%@f9BT}ztIxqvG`zsNiVY1fv8jT}X0I@QrG@RL)8H1p@P?o{ zw1R;#Ox*ZIGi>U9+2XC1XfZ7I^_fq9%>p!O8h^EUENn^|m4@rFdh`+@t!3QCk{QoM z-I5uWvz0-Q?Ad8d+NYN$(~;)rjgtWer|@qWrZ_$fG8zRT|nv18X_EdIzZ18Iz(tSUzq-k&?kEIOT;A!iz32e6v<#bNSLHu zYEmK}|6qMNaf(miZh%{-d?_Pc_<`^ll7;UG=f7Y`fvll;$M9<;kz&KRN6`?NJj>+& zNFu!?DI!TftK~r%Bs7`XSAe+MEH>^TzOxGC%nQlyGVY6prx(#IBne55t&c<|~L5S(W^Tzj2jsQ88=O4VY6pr+zMoFo9xNv&c?WtL5OkJk diff --git a/grammar-imperative/src/ImperativeParser$FunctionDefinitionContext.class b/grammar-imperative/src/ImperativeParser$FunctionDefinitionContext.class new file mode 100644 index 0000000000000000000000000000000000000000..5ae8c62e243055947fc2258229b1b46b6eea80f5 GIT binary patch literal 2124 zcmb7F-*3}a6#lLg>Lztde+&wRjY2b)#0<0Xn`EUdU0J44xvn_fDD<8+Qw^%)^e znlz9=0s;R55A3DWc$nDh{-}xXI!?=MXX{?>xjy%t@BFymx&G_#H-7*)k8koAMOnug zB|p`1R!J+5F`U!!*$8xeu9ovUE{q_LizB#%%Q~*;xF(?07X>DZrRBT!mTh$d$F-K7 zPEZlZ*4pb*;NY_3$y?pln)Dm?noCV?)!FdupzCvAO?Xz9+x~`Sdx7g)TNf<9>jh3r zT7fU6)sTM6@oe`Nkt_3zF@C4*w`})2+qYXXkbXyCdMT!=wY@-Y2LeXj^Q2#M?M_G1 z@C-xOTbt6i17}MTq9gsn0B438?#Lgz(rc=cR-^4MbRi8ZWZRMPb3+D7S@+iEwm_y>s-h_ z3%Ft6Lwv*$*)#4p*1(sj8CXP3U}En$YLJ1iu%zRrfv>^)EAJWfsoM3Lfz$RDD2K`P>GBojT-HH(&Ma5DdHw3d_10$z*xk+-BhZ@_wF;CJ(6_4bmr9c zlTcGoALN;Q9QY1|gikg?z$&K9{h)@0>_4p7o(46&rP!Qy!eNMar;xPk&u!{3lv8i& zpF;T=}<|QO`j5hNi^DNxuGL{4oGI@U6o*G)(a81f`(V%j0u9 z5U;rid}DUc(3cI)o!!l~Vzk@YE#U(eYI=bEBO)iCvhsWyG(zT#-#Zt^ye5g-!jJU7}lU-Xkn{*F&?uuPcTO;kyxH04a#XA_4>j4Vuk=SUS3SCM-MI&&%9 literal 0 HcmV?d00001 diff --git a/grammar-imperative/src/ImperativeParser$IfStatementContext.class b/grammar-imperative/src/ImperativeParser$IfStatementContext.class index 4185dedee76fa95ec1bb9667919e0c95ca48baac..1848a1adba1b5ccb23c1aab5f0b7bd8b93d19562 100644 GIT binary patch literal 1706 zcmb7E*>Vy=6g@p88J5WcF)lG`7K|)0L=(*dMyn{TqKZUIsJu@|2PeWndIk#pll+4Z z@kL7?toZ6jS>7H7f&(hP^mgw(_uRgx`^V3(-vF#*SH;~RLReODF9;1W74Z;8k&r`D z#YzZ%+z(+DDHUrf9x?=Zt1h@@88wq3{Jgu#)=ZnXYz8f7np|Wnx@B>TVL2Ah=c;us zblYh1SGusci1vl08Ah_TBhE0HH%z|Ys2*}r)DJ6k;Vw&);uj~9WD zWen4>cNtb<`I;!FbknYgRC6OG8m4Vjd8$q9b)&*v=yWcAK*f}~Ee~_%5pOa0V(}b9 zfK#bL9y6@{0nZlP1ufDlZ&)^`TS-gI@q(?F-tOu3PJO&(I7x`6UMlfAUE;H$U=Iw- zuxo^xKhc|ds-m0a)XT#YUb3m=K*1=Ry4?`OaxYWd>G#?FpCp-Nv6$XX$7v)H6lx7o z;x7z&1vB3Eu1Yp4))^MPrvA=r*uW!(`94oi6E$4LHHOHgU*}RaJjSMmEo_n?FU{`d zXxPS%inN9do-iz3I=EWQ9aBGSUZtjXRTUX@xICP27^b{A7$#gDbu(mQJ^gSV3khym zX;KPDf;}u5VzK^r*5lBTwN&7wR9ugZ@S0Leza4E4iPuv{S9^(pSM~dwaQj2=!O5L{ zV^od=r%z?;Z?crHZl6AiL7K+`ePtSbY=8>F#T1QU+C|}`6`&=i!F->fT!5X^p5#R1 zn6xR!G)`lNMsI|#9pUpv801TubR(81hmX+IL~`ykMm~1ogHQ;*f-$8^uGewH4Y*0O zB;}h5eCRs2xtL^_g>;ZyHVJ?r5J`T==o!Y77Z^=^Aw0+=ic>>7$tl8$z#N@Yy$AEZGb&0dh(xItRfJHFxm=_3U b(OE5FlIB^bJyA>`K&vRO&>W)q0Rq1Or>M7C literal 1909 zcmb7F+foxj5IvJ%mW1UN#0z-izDbk-A_$3qMy*O!Kuc1*FJZ*Ru%UK06u;s>_<%23 z`e5O!A7yza*}#%T#h2;Xp6=5<-KS@N{`&SEz(YLOU?iX;r6H|kCV_6;*YKbVF-)r^ zt6`=Kam;pM4i7cVYgiD7yPoOEeQA3FNh4L-GY`#d-LtCMlI40ifsR6LM+)?oEL(2W z_qU}}Hn*$P#5b*7+w|%V_kEi!ltRt+?TINnwUb1*Oh1t#gD(~0L1HbH@^2llgVVY*8A`e*WwM)TnS+3>Ph}vv&)wFlB zueSGOMYVZ7UtSLDSN;b$pDCBwu@qN!ZL?N)D)ObJu07b^o@qrh4T}OJ?MERJ=y;4J zfzgm*sKq*#k<&4RVRHG*yj4yec|6gvf+ytB*|A?19jjQ=@Knb$6a>c34197H-?lSF zMY%vZc{$2(YT9FP%zOsje%+%KN}C>l_>9Og_v9GYn9_^8NOB*+Aiu8R z23O@Zj;K0?POoV6GdfNXZTB3dMGtNUJR-h_7;booc8>|#asqshF~*3}LrZ6FeZiGa z+%^+SFdYa3F_EI?7H<0vLzF71i1zW+wt0y(^>=XBw_BvYN+p^3f!GIhXHF1He}xu- ziVn+C%p}fC5)m9{ sD7z@zGJ1rhSZIMI{oafdW};y@iK~=DjqXfgfWOQrrf{87r+kF?Z^rNFQ~&?~ diff --git a/grammar-imperative/src/ImperativeParser$InitContext.class b/grammar-imperative/src/ImperativeParser$InitContext.class index cf00bbd905d7a513359337bb208bc0785777ad36..6b87b94e87947acba0ef60332bf8f9a58fd3bba2 100644 GIT binary patch literal 1896 zcmb7FTUQcM6#foF441(RW+hp9%ea`BS(*@Pm}}8OGhz8Y!jZ;spkZM7SNsn>*h{T? zXxVE&s?|O)AP%7Rz}aW^+56ky+2=clKYxGz0`MFu8DTFJL}Wx|%z5F*QyKFAN@}&r zs|>MFIFmlEa6>hdeyN-5qRLRrsu^jI`=cS)#YsC&iBIY8&4Hn3DKt{!(1p+Hi|J-H%msWz7#WR zx~U!WShELvwGy|A#M9w@>RXYU!kN|!{DeUYh0_ckPF*#Gn_;03o@sCkG)J?HRy8>t zKwMz@v!7j?}suE2(-h_Wt0A=S|wO zC#w~8)g+ZLY$tN7-7(4kDUyiha`9w5Oe2FgTdo;-zNLv4jM|knFWAUfVTjt7t`M1m zS6F43=t{Bag(1=v()Z{U1aY4Pc9GFK3I%Z_6ud@)VfbR%YN>)G)?}uk_m_luQwg`ED(EpxhPv;32l0kB-9n4a za8F&Rt2tl1F13SXTY!K=9@(9ErpKbft3&>E4JZ~zO-YTUI*gt2H7T%olcM` zOj8xn#x;vckeGN*F+fZ_#Kh~sS(L1gtc}qJ%G+y!1?c1i;m7owZOoovi0l-c#5IIL T`hS$jj*@kfy+>9d`x2gi$vo*o literal 1688 zcmb7E+foxj5IvIso67=w+%Mpk~WBCK4VI=F0Sx)B7nv)Xf%U1WLz;NEQtCk~=2&U&OOWN78QLD+Cz)BZ(I-jc?O51SEhJ0t( zHEGXuqNFk;FdNOqdblbukTxyT$q39v^HsZ)G%TlVCmTyiyKXsVMJAhB-q*|0W0}gu zcFD9P9p%hf`|?P@AC2W$9XldzX&56DTO)6Qi>n9j6<(k0eNJ) zNl4Qu7Udy3^r9!&U9)C7RiZXWQ#Pzp^6lP%EUMvbr3>rb{>=XXrxS$&`yAsc5ZbBM z?V{W?RoP>m^O;xT(6A^l)%mGwbUFpOq~jTub=<&Bit8ez)hQh-Skg2@*Pc1o4`&@3}OQ+f1=1<{vqEhLe96V@hcRJeEV^`6wX|z9-q04as z>FzKpxi@B7q1F!tLtaoor)ViB3 z`@t;l+tLzP{g?dIi`wQNrPaZ9J!6VLE}j1}Km&0x1RsWZx=$-;1MyLaQ}|A}=j^x+ zxc+5~aPPx)o(3_-RYlFfPamMGsEJef&mcM@*Laum^dhDi;b(*vPfUJ6-)C-{X+kbg zn(3a?a|^e}L;pA?yn8E*S5zX2ALu{EVB!q@@vj*0LFMqdr8INA zWGSyONv|JbgyDCt0@1obUK3=q9po$IB4lzZ_3Mrk8F^P$iNIm2lzAov?y52$ni diff --git a/grammar-imperative/src/ImperativeParser$LoopStatementContext.class b/grammar-imperative/src/ImperativeParser$LoopStatementContext.class index bc0b31e7ef26d6641019407a03e46f1c4cdd29dd..9ee409ee41c7ea409b57075c77ee01afd284c5a9 100644 GIT binary patch delta 755 zcmaixO=}ZT6o%h>C+SUQCQXyJe#B^NGi}pMtF2X|^=simge-)BTM2TJK}>ZrwcTaW zUl3;1f}lbLMWrJ6wUD~?U$_(e4T|q1Vnd)zS~v zbn~_r$kyZV>S{C48-ajR4j09kim$_(_-Ur=-koM6So3vwO|FaO@VlICpT-%1$?Ny- zYrheA5A}_P-_pJ_z_W1x2LlFYbwX z%0vNCK_sS101?Q$Uy$5F#@$1*@{v45Lu7Y}-jMbVa`G99yynI^_88PRNVD zA;&PmF_Dxjv6KR(q_!|jDJe=xOYFMzb(6t>rdPch#^^2jC8U1?03mXj literal 1923 zcmb7F+foxj5IvJ%HVF%ucn7>7h`Au~f`TMmG-_3<;-w_z`w~W6Og3?MlS2Q5fAB$H zwDiH!S3k<~OtOJw7ZqQoXM4I&_jI40{rT(bHvqTrKtn1H9cc|2C9`piU{1reVMH*m zmYjy`!-(O=FmB?Oh6N3G1Y(YBxUw!SS0I^6mv@Y|k!!hTEmt-jH!m<$Y-~w^v9f8& zC$0LXv@6DDjhfhoxosJ4%jW+0Mh~Ufuw1!IFui11(k|8v$B~Y}VgS2PF4ddTHe9nU zpBc6z?HNBxew7KtYEwHI=B%W}=S%ysj9-l|D2i+m~lf_L7Qu2Pn)Ex9WYPNhq%6KgANr53pU z2Rzr79%zL-Re8zc-8hSzAzorZ4kBFeie|zQ?%`_|uO!pk3}A}I6Tv-zSeX`s@KH+NgW;Z6DS1TH~>e>j4e!dh&ymU zflMkmYXc^|fl%B{D6S5i61A;p=u_s8jM`U-eePxsz0%-Jd0pl_b>bIanYArj@YhV_YxNM7jV(DTcp2AC7Jz!$R0+r-x0}t zffj;_5$asN8{-WU!p0?PdEErvr~U;J4T7`?((VVjjA=$uWnA+z8D}Q3J&ZDw7&D27 v@F7b%OzF$$Et2A04=m~RW`;0VI)<}2Njcu>&Q+Y?4>XLcI76vZ-bU;<&jIoP diff --git a/grammar-imperative/src/ImperativeParser$ProcedureDefinitionContext.class b/grammar-imperative/src/ImperativeParser$ProcedureDefinitionContext.class new file mode 100644 index 0000000000000000000000000000000000000000..7dbd7adb23c0bb9e970672ea0efd2c8c502f2d59 GIT binary patch literal 1949 zcmb7FTTc@~7(KIvE-ecpUQoQDRP9BrchpuyOH7*JCDQo5lo40kU7T(Sf5rdcgT83= z!RUiAF;NpuG|~TJJhLnXw~NZl%yi~_=R5Pw`L-W^y?PDc45rhtaMVOj&v_GtGzM_Y z#PNP4aY7G86DRwT!l{0o#u*c5O`I1ns?!4bY;ML=3q{-Y8>+Z;wy4^!?=)r6S5g*h zQZ*gdZrt?dWl5l?!dYO;jN{6i?dF_RHG8hXouPZ4YTAw4wz8Yjm#QT&ay_zD@myan z`vO+gb)~8_>{d$>c#I0F%|)qf-&vBRXi1gXAeb8ZTJlj_x^=B%He7b7GjUuI6giS* z$94Qkojd;WD=O}^8#1IWRdaW#d_nqpv+B;vWr0LCR~1M}-b?9ifs-5X1;q?VYb@)G z)AA)tP|}D0sxGfPx&%9-Z+Swiu`q!P zCN2tOqvspFwS`L{`B)b|@}3rUV^m;x4Yyif3uRokFp0|oTi1@mI$5}aDHB&MTth{m zum%V{cw2dOInRns%X``{j^}oaHu|^2Be4zD&p;peHrT>(h`+{= z;EKEXq4C6Xh^JiBog9eD6QO&sHw@5$`U*zxlMZ%8{Acd(!~PIA!FbIu zTzHG*V+<7DAeny&(}2!l1eadP@rCQJIKW*NXDh?U{zcN)P4bN--`A5I#35$UWxNt9 z8KsicV+>MBib~Q3o)$RwbB-wb!AJPHN;Zt~;5b8?!@=qZwsRh(TmxBb<6mnJ=Ml~p I=W|H?1{1*p_W%F@ literal 0 HcmV?d00001 diff --git a/grammar-imperative/src/ImperativeParser$ReturnStatementContext.class b/grammar-imperative/src/ImperativeParser$ReturnStatementContext.class new file mode 100644 index 0000000000000000000000000000000000000000..54c3fcd6f664452876bfd21321d53a4d8f695111 GIT binary patch literal 1569 zcmb7E+fEZv6kVsS9okO0l#7a}Tq^W}3?d5J3MP#vO$r)lcpu719c-t~nbW4f!Y7!Z z0TVIsVDQzCGVU3M0@I@Sa;|%?z0TfipI^UEegJri7YZiA2xBsg2&NRoBM9J;JxnW@ zi9kUjf+SK3(h43kgn6qjxMdkNlVRXZdy}h~lD8y-nm0`@auwaOxWzD?NEY(dIv2V$ zn*6;kEH2_5ZW)F^uC~J&`U-~0*BjMsE{ghgg-(K5!!+ay!)&5Z6J<>|WkqPsMNKqJ zX;is(2D;IxaF;|TpWGrMWiIW*yt%_$4E{ti&k*87Q`pB0^Vi@>!ClZItqO)EIlU-j zV@5ZnUi!GE*IjNsyk$5+h^AgD@j4~o^^IV+49k!;LM`m-O^F)i!VEER{keQHeD=cRx(K%seqfchA8p3hMj_8Z)xUiHVWn#CcRgkRa2p1 zUPTOp46zII^Ngu@f(4Z{wm?d`xOQKzViC_2JXf)VWrmpx16L#)oDyJC!X>X#)!G6Z zx$a{6X6j(*_r_xAb;Z(-l1*Gnx}#=N)lK!sFm$G~t50ww?2R4o{v1bcgO0qsAVW=C zJ03TNSBcI>^BA4?M_19Mx~A`HGq|;*MsPUfJ{Xl9!RaSh{+k}{c3Y?J?k09j(B~7O zuLuZ&nihRD_R}s7Kdk^YH3;TEg6|aUfcB&%*B0y(?MQvD#}s+^=}t+d$G*dV*ftKs zM}GSVvd?5XgkjfVlx91GuV=q)Ym)%`LgNT-(`Zv!B7Z_aEd3LKJw(%|2&9g2%LhA# z&mnXc;}8SvEAG%Kksl!UyZ-_Sc7l8(kfX~Wqqs*=Y$mHNlTl)#?4g&KD8!`4hl4cD oA(}mmjuB%g=U_36IoJ0I=7F<%h+djwv}YJc6d|g{IA#(00{{b^g#Z8m literal 0 HcmV?d00001 diff --git a/grammar-imperative/src/ImperativeParser$SequenceContext.class b/grammar-imperative/src/ImperativeParser$SequenceContext.class new file mode 100644 index 0000000000000000000000000000000000000000..d5a6fa91758963d837f129e7f948ffedc21f055b GIT binary patch literal 1717 zcmb7ET~8B16g|^Iw=G*fiueJjARqPvDJlZe3MNfVniMqB@V=A@E|x8Bw}ijKfA9fc zF#2Hd)prvUHPJ*9{S(GB?Ut4nwZ6=qxjXmVbMHN~?|!|01K>86HH-(*g$cDx2BG7+ zhDaAW5mie}L%a)qOm*P~rZprq+!P3u9K(@2(sBgCk!W_?*fSDk$1EhWX30qkbfk-$ zQlKYmT5`3#vmx!Au~DEWux4&qhEuk=?_H~*q>Gj#_X(zFEKAzyf>A2TlE8cmb}F0M z*_F28n0xY(VV9&m-i(r5B7w|Her`7$J~*L zYL>_4f^=CXGtqT2-I9)SW~@!QFW`+tGpvpsk+yOR%=`h*v84-|<4*NUvgD+~46&5_ z(-mXaZI)l|o0TM_Y2@>AmmRv_7VNrNGMyq(tD`9x)>h)-#;jE-`i>>~p{{c?L zb2;`o%2gn^RxI0j`M^|V4>ZqbT8Tr$ErHSIPc5UlkMq%0&Yepnkx%eE7b5< zq@mXpW!I+C_+YwE#|flb!>H)?m~kediV|z32~0%JcnzluuSif=lB_LPw7=ec%Z z8tOgKTHu-j@ilF`b=Yv`v9^UT*n8{iPfFoVEvm%zIS literal 0 HcmV?d00001 diff --git a/grammar-imperative/src/ImperativeParser$SkipContext.class b/grammar-imperative/src/ImperativeParser$SkipContext.class index b0a7c0b6a0f22da0409bc7b1c750d6ea7036764b..5e61c681ba38502ac9a547d89002239ee15d43b5 100644 GIT binary patch delta 100 zcmX@dd7g8_a%N*D0R}cEK?X(!J_ddu$-}_FAPuA$fi$xK`x+p{$iNFE*+4=}LO@br tvK))TuHil~qLJZd@FJaLJ02W{o@Bjb+ diff --git a/grammar-imperative/src/ImperativeParser$StatementContext.class b/grammar-imperative/src/ImperativeParser$StatementContext.class index 6a270a62d202609cd4d635bbe68d123b014d1724..432bfe3b114ae481153304898b81bbb96554d054 100644 GIT binary patch delta 926 zcmah|!EO>!6g_VS<`tM08EjPq6{*rPRjajDtFVFvDm}OynCH zR^6Dma${nfCK_Fsx^3LLcIjUj&j5l&qqBJDzI*RE_q?0T>(F;2v;E`aCjb*zl9==( zh%*vX5@#jONlZ(e_hT0>NX!J_!$tR)mADjuj>`dDL0aOfL}nwM6}g~oIZy1$vQu=d zvQ=>ehL(0_($$J%J!8Qf8O>+Qk1f0Cl%86JqFuA>;oq7!Ux=^5Gba#TEl2xwTt`+Q zvHB&^c&RSNlK-MMzNwR$qeu!E-L`zG=2#WW)-jKqjy!S#p>BDlR4X}ERu`}+aYIJ| zHwEI2ac_L{x#z722e}0I3xGWA<~i7y(PD!`%xSzq%<1@AiVTw`ZSfwx0A{1=ASVradLW%ed;q|2x?Yz>hu zitMGVu!9S1QxdeLk|9%O^ga4EI*$BMXzms?aht6p7;O_GM0bQD-*kFgJG#Ssst&W= zI7I0b0>%rC-6iNgN>dSb7LUJo;tHz<9HKk}{{7(FDT8X-Jwq4THap cO596KdKm0y;3Xa)YQ#8E5{HRF;x+hw0`T5|qW}N^ delta 737 zcmZ{i&5uiA6vlt|L*Mq^JEf(DnqqV?(_(4{<9jfa`dUgXEoRY$pc)d16bT7JB6l?l zYa5GBCLt_jtRyxT*4E~4un^C^9i67)F3$75=bYy`&$;*h%)ZIYeEt3L6EMjo!(NXx z6NX8{KEr;)0gu&884mg+ITVG%h9f>cM}3ZQ+%Ro8IbW?=3rp4)%Q_Xdo#Dg`r!9)F zz7@k?&gHP-jyl^YhOgbhu`^Ty&Qi6=)UMy0ZCq>C@62AQ->x@rGy=|1Gn@~&z{Q0h z?suz|*7WG{uvo)d#dW%k;OGQFNg3xI_99kWcZ-~2BCg$1T+ar@eumRwIQ@*KdN;DE zml2MeTy914u4+SUjyl4trqENlr`#5XVYI64zU}sQ7JQ`q4t6g0O^F{VWXqpP&b1gQFOn>MAY~H`vEw(> z8SIBHq6uPbKoKSENK)Q=%QGv0Jg1yuA2xq-DjImB6N577hse zEWIGh%fD(_cE#o064?`<##M%i_{&x_I3?#528FILFI*)o2ou7sq>}oJE1V$p2crE? AWB>pF diff --git a/grammar-imperative/src/ImperativeParser.class b/grammar-imperative/src/ImperativeParser.class index e9d1d63c6d6d6aa716ad1d636c81cd99c7e9c024..209ea6413ec925a3c305b91146f9c96750c453f4 100644 GIT binary patch literal 15954 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 diff --git a/grammar-imperative/src/ImperativeParser.java b/grammar-imperative/src/ImperativeParser.java index 43663b2..79ad44e 100644 --- a/grammar-imperative/src/ImperativeParser.java +++ b/grammar-imperative/src/ImperativeParser.java @@ -14,23 +14,28 @@ public class ImperativeParser extends Parser { protected static final PredictionContextCache _sharedContextCache = new PredictionContextCache(); public static final int - T__23=1, T__22=2, T__21=3, T__20=4, T__19=5, T__18=6, T__17=7, T__16=8, - T__15=9, T__14=10, T__13=11, T__12=12, T__11=13, T__10=14, T__9=15, T__8=16, - T__7=17, T__6=18, T__5=19, T__4=20, T__3=21, T__2=22, T__1=23, T__0=24, - BOOLEAN=25, STRING=26, NUMBER=27, ID=28, WHITESPACE=29, NEW_LINE=30; + T__30=1, T__29=2, T__28=3, T__27=4, T__26=5, T__25=6, T__24=7, T__23=8, + T__22=9, T__21=10, T__20=11, T__19=12, T__18=13, T__17=14, T__16=15, T__15=16, + T__14=17, T__13=18, T__12=19, T__11=20, T__10=21, T__9=22, T__8=23, T__7=24, + T__6=25, T__5=26, T__4=27, T__3=28, T__2=29, T__1=30, T__0=31, BOOLEAN=32, + STRING=33, NUMBER=34, ID=35, WHITESPACE=36, NEW_LINE=37; public static final String[] tokenNames = { - "", "'do'", "'loop'", "'endif'", "')'", "','", "'+'", "'-'", - "'*'", "'or'", "'not'", "'('", "'if'", "'<'", "'!='", "'<='", "'>'", "'and'", - "':='", "'then'", "'/'", "'=='", "'skip'", "'>='", "'end'", "BOOLEAN", - "STRING", "NUMBER", "ID", "WHITESPACE", "NEW_LINE" + "", "'endif'", "','", "'*'", "'-'", "'endfunction'", "'or'", + "'not'", "'('", "':'", "'if'", "'<'", "'!='", "'<='", "'and'", "'skip'", + "'endloop'", "'do'", "'loop'", "'function'", "')'", "'procedure'", "'+'", + "'return'", "'>'", "':='", "'then'", "'begin'", "'/'", "'returns'", "'=='", + "'>='", "BOOLEAN", "STRING", "NUMBER", "ID", "WHITESPACE", "NEW_LINE" }; public static final int - RULE_init = 0, RULE_statement = 1, RULE_skip = 2, RULE_assignment = 3, - RULE_ifStatement = 4, RULE_loopStatement = 5, RULE_functionCall = 6, RULE_actualParameters = 7, - RULE_expression = 8, RULE_constant = 9; + RULE_init = 0, RULE_functionDefinition = 1, RULE_procedureDefinition = 2, + RULE_formalParameters = 3, RULE_statement = 4, RULE_returnStatement = 5, + RULE_sequence = 6, RULE_skip = 7, RULE_assignment = 8, RULE_ifStatement = 9, + RULE_loopStatement = 10, RULE_functionCall = 11, RULE_actualParameters = 12, + RULE_expression = 13, RULE_constant = 14; public static final String[] ruleNames = { - "init", "statement", "skip", "assignment", "ifStatement", "loopStatement", - "functionCall", "actualParameters", "expression", "constant" + "init", "functionDefinition", "procedureDefinition", "formalParameters", + "statement", "returnStatement", "sequence", "skip", "assignment", "ifStatement", + "loopStatement", "functionCall", "actualParameters", "expression", "constant" }; @Override @@ -50,11 +55,14 @@ public ImperativeParser(TokenStream input) { _interp = new ParserATNSimulator(this,_ATN,_decisionToDFA,_sharedContextCache); } public static class InitContext extends ParserRuleContext { - public List statement() { - return getRuleContexts(StatementContext.class); + public ProcedureDefinitionContext procedureDefinition() { + return getRuleContext(ProcedureDefinitionContext.class,0); } - public StatementContext statement(int i) { - return getRuleContext(StatementContext.class,i); + public SequenceContext sequence() { + return getRuleContext(SequenceContext.class,0); + } + public FunctionDefinitionContext functionDefinition() { + return getRuleContext(FunctionDefinitionContext.class,0); } public InitContext(ParserRuleContext parent, int invokingState) { super(parent, invokingState); @@ -78,23 +86,229 @@ public T accept(ParseTreeVisitor visitor) { public final InitContext init() throws RecognitionException { InitContext _localctx = new InitContext(_ctx, getState()); enterRule(_localctx, 0, RULE_init); + try { + setState(33); + switch (_input.LA(1)) { + case 10: + case 15: + case 18: + case 23: + case ID: + enterOuterAlt(_localctx, 1); + { + setState(30); sequence(); + } + break; + case 19: + enterOuterAlt(_localctx, 2); + { + setState(31); functionDefinition(); + } + break; + case 21: + enterOuterAlt(_localctx, 3); + { + setState(32); procedureDefinition(); + } + break; + default: + throw new NoViableAltException(this); + } + } + catch (RecognitionException re) { + _localctx.exception = re; + _errHandler.reportError(this, re); + _errHandler.recover(this, re); + } + finally { + exitRule(); + } + return _localctx; + } + + public static class FunctionDefinitionContext extends ParserRuleContext { + public List ID() { return getTokens(ImperativeParser.ID); } + public FormalParametersContext formalParameters() { + return getRuleContext(FormalParametersContext.class,0); + } + public SequenceContext sequence() { + return getRuleContext(SequenceContext.class,0); + } + public TerminalNode ID(int i) { + return getToken(ImperativeParser.ID, i); + } + public FunctionDefinitionContext(ParserRuleContext parent, int invokingState) { + super(parent, invokingState); + } + @Override public int getRuleIndex() { return RULE_functionDefinition; } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof ImperativeListener ) ((ImperativeListener)listener).enterFunctionDefinition(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof ImperativeListener ) ((ImperativeListener)listener).exitFunctionDefinition(this); + } + @Override + public T accept(ParseTreeVisitor visitor) { + if ( visitor instanceof ImperativeVisitor ) return ((ImperativeVisitor)visitor).visitFunctionDefinition(this); + else return visitor.visitChildren(this); + } + } + + public final FunctionDefinitionContext functionDefinition() throws RecognitionException { + FunctionDefinitionContext _localctx = new FunctionDefinitionContext(_ctx, getState()); + enterRule(_localctx, 2, RULE_functionDefinition); + int _la; + try { + enterOuterAlt(_localctx, 1); + { + setState(35); match(19); + setState(36); match(ID); + setState(37); match(8); + setState(39); + _la = _input.LA(1); + if (_la==ID) { + { + setState(38); formalParameters(); + } + } + + setState(41); match(20); + setState(42); match(29); + setState(43); match(ID); + setState(44); match(27); + setState(45); sequence(); + setState(46); match(5); + } + } + catch (RecognitionException re) { + _localctx.exception = re; + _errHandler.reportError(this, re); + _errHandler.recover(this, re); + } + finally { + exitRule(); + } + return _localctx; + } + + public static class ProcedureDefinitionContext extends ParserRuleContext { + public TerminalNode ID() { return getToken(ImperativeParser.ID, 0); } + public FormalParametersContext formalParameters() { + return getRuleContext(FormalParametersContext.class,0); + } + public SequenceContext sequence() { + return getRuleContext(SequenceContext.class,0); + } + public ProcedureDefinitionContext(ParserRuleContext parent, int invokingState) { + super(parent, invokingState); + } + @Override public int getRuleIndex() { return RULE_procedureDefinition; } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof ImperativeListener ) ((ImperativeListener)listener).enterProcedureDefinition(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof ImperativeListener ) ((ImperativeListener)listener).exitProcedureDefinition(this); + } + @Override + public T accept(ParseTreeVisitor visitor) { + if ( visitor instanceof ImperativeVisitor ) return ((ImperativeVisitor)visitor).visitProcedureDefinition(this); + else return visitor.visitChildren(this); + } + } + + public final ProcedureDefinitionContext procedureDefinition() throws RecognitionException { + ProcedureDefinitionContext _localctx = new ProcedureDefinitionContext(_ctx, getState()); + enterRule(_localctx, 4, RULE_procedureDefinition); + int _la; + try { + enterOuterAlt(_localctx, 1); + { + setState(48); match(21); + setState(49); match(ID); + setState(50); match(8); + setState(52); + _la = _input.LA(1); + if (_la==ID) { + { + setState(51); formalParameters(); + } + } + + setState(54); match(20); + setState(55); match(27); + setState(56); sequence(); + setState(57); match(5); + } + } + catch (RecognitionException re) { + _localctx.exception = re; + _errHandler.reportError(this, re); + _errHandler.recover(this, re); + } + finally { + exitRule(); + } + return _localctx; + } + + public static class FormalParametersContext extends ParserRuleContext { + public List ID() { return getTokens(ImperativeParser.ID); } + public TerminalNode ID(int i) { + return getToken(ImperativeParser.ID, i); + } + public FormalParametersContext(ParserRuleContext parent, int invokingState) { + super(parent, invokingState); + } + @Override public int getRuleIndex() { return RULE_formalParameters; } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof ImperativeListener ) ((ImperativeListener)listener).enterFormalParameters(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof ImperativeListener ) ((ImperativeListener)listener).exitFormalParameters(this); + } + @Override + public T accept(ParseTreeVisitor visitor) { + if ( visitor instanceof ImperativeVisitor ) return ((ImperativeVisitor)visitor).visitFormalParameters(this); + else return visitor.visitChildren(this); + } + } + + public final FormalParametersContext formalParameters() throws RecognitionException { + FormalParametersContext _localctx = new FormalParametersContext(_ctx, getState()); + enterRule(_localctx, 6, RULE_formalParameters); int _la; try { enterOuterAlt(_localctx, 1); { - setState(21); + { + setState(59); match(ID); + setState(60); match(9); + setState(61); match(ID); + } + setState(69); _errHandler.sync(this); _la = _input.LA(1); - do { + while (_la==2) { + { { + setState(63); match(2); { - setState(20); statement(); + setState(64); match(ID); + setState(65); match(9); + setState(66); match(ID); } } - setState(23); + } + setState(71); _errHandler.sync(this); _la = _input.LA(1); - } while ( (((_la) & ~0x3f) == 0 && ((1L << _la) & ((1L << 2) | (1L << 12) | (1L << 22) | (1L << ID))) != 0) ); + } } } catch (RecognitionException re) { @@ -121,6 +335,9 @@ public FunctionCallContext functionCall() { public AssignmentContext assignment() { return getRuleContext(AssignmentContext.class,0); } + public ReturnStatementContext returnStatement() { + return getRuleContext(ReturnStatementContext.class,0); + } public LoopStatementContext loopStatement() { return getRuleContext(LoopStatementContext.class,0); } @@ -145,42 +362,49 @@ public T accept(ParseTreeVisitor visitor) { public final StatementContext statement() throws RecognitionException { StatementContext _localctx = new StatementContext(_ctx, getState()); - enterRule(_localctx, 2, RULE_statement); + enterRule(_localctx, 8, RULE_statement); try { - setState(30); - switch ( getInterpreter().adaptivePredict(_input,1,_ctx) ) { + setState(78); + switch ( getInterpreter().adaptivePredict(_input,4,_ctx) ) { case 1: enterOuterAlt(_localctx, 1); { - setState(25); skip(); + setState(72); skip(); } break; case 2: enterOuterAlt(_localctx, 2); { - setState(26); assignment(); + setState(73); assignment(); } break; case 3: enterOuterAlt(_localctx, 3); { - setState(27); functionCall(); + setState(74); returnStatement(); } break; case 4: enterOuterAlt(_localctx, 4); { - setState(28); ifStatement(); + setState(75); functionCall(); } break; case 5: enterOuterAlt(_localctx, 5); { - setState(29); loopStatement(); + setState(76); ifStatement(); + } + break; + + case 6: + enterOuterAlt(_localctx, 6); + { + setState(77); loopStatement(); } break; } @@ -196,6 +420,109 @@ public final StatementContext statement() throws RecognitionException { return _localctx; } + public static class ReturnStatementContext extends ParserRuleContext { + public ExpressionContext expression() { + return getRuleContext(ExpressionContext.class,0); + } + public ReturnStatementContext(ParserRuleContext parent, int invokingState) { + super(parent, invokingState); + } + @Override public int getRuleIndex() { return RULE_returnStatement; } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof ImperativeListener ) ((ImperativeListener)listener).enterReturnStatement(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof ImperativeListener ) ((ImperativeListener)listener).exitReturnStatement(this); + } + @Override + public T accept(ParseTreeVisitor visitor) { + if ( visitor instanceof ImperativeVisitor ) return ((ImperativeVisitor)visitor).visitReturnStatement(this); + else return visitor.visitChildren(this); + } + } + + public final ReturnStatementContext returnStatement() throws RecognitionException { + ReturnStatementContext _localctx = new ReturnStatementContext(_ctx, getState()); + enterRule(_localctx, 10, RULE_returnStatement); + try { + enterOuterAlt(_localctx, 1); + { + setState(80); match(23); + setState(81); expression(0); + } + } + catch (RecognitionException re) { + _localctx.exception = re; + _errHandler.reportError(this, re); + _errHandler.recover(this, re); + } + finally { + exitRule(); + } + return _localctx; + } + + public static class SequenceContext extends ParserRuleContext { + public List statement() { + return getRuleContexts(StatementContext.class); + } + public StatementContext statement(int i) { + return getRuleContext(StatementContext.class,i); + } + public SequenceContext(ParserRuleContext parent, int invokingState) { + super(parent, invokingState); + } + @Override public int getRuleIndex() { return RULE_sequence; } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof ImperativeListener ) ((ImperativeListener)listener).enterSequence(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof ImperativeListener ) ((ImperativeListener)listener).exitSequence(this); + } + @Override + public T accept(ParseTreeVisitor visitor) { + if ( visitor instanceof ImperativeVisitor ) return ((ImperativeVisitor)visitor).visitSequence(this); + else return visitor.visitChildren(this); + } + } + + public final SequenceContext sequence() throws RecognitionException { + SequenceContext _localctx = new SequenceContext(_ctx, getState()); + enterRule(_localctx, 12, RULE_sequence); + int _la; + try { + enterOuterAlt(_localctx, 1); + { + setState(84); + _errHandler.sync(this); + _la = _input.LA(1); + do { + { + { + setState(83); statement(); + } + } + setState(86); + _errHandler.sync(this); + _la = _input.LA(1); + } while ( (((_la) & ~0x3f) == 0 && ((1L << _la) & ((1L << 10) | (1L << 15) | (1L << 18) | (1L << 23) | (1L << ID))) != 0) ); + } + } + catch (RecognitionException re) { + _localctx.exception = re; + _errHandler.reportError(this, re); + _errHandler.recover(this, re); + } + finally { + exitRule(); + } + return _localctx; + } + public static class SkipContext extends ParserRuleContext { public SkipContext(ParserRuleContext parent, int invokingState) { super(parent, invokingState); @@ -218,11 +545,11 @@ public T accept(ParseTreeVisitor visitor) { public final SkipContext skip() throws RecognitionException { SkipContext _localctx = new SkipContext(_ctx, getState()); - enterRule(_localctx, 4, RULE_skip); + enterRule(_localctx, 14, RULE_skip); try { enterOuterAlt(_localctx, 1); { - setState(32); match(22); + setState(88); match(15); } } catch (RecognitionException re) { @@ -262,13 +589,13 @@ public T accept(ParseTreeVisitor visitor) { public final AssignmentContext assignment() throws RecognitionException { AssignmentContext _localctx = new AssignmentContext(_ctx, getState()); - enterRule(_localctx, 6, RULE_assignment); + enterRule(_localctx, 16, RULE_assignment); try { enterOuterAlt(_localctx, 1); { - setState(34); match(ID); - setState(35); match(18); - setState(36); expression(0); + setState(90); match(ID); + setState(91); match(25); + setState(92); expression(0); } } catch (RecognitionException re) { @@ -283,14 +610,11 @@ public final AssignmentContext assignment() throws RecognitionException { } public static class IfStatementContext extends ParserRuleContext { - public List statement() { - return getRuleContexts(StatementContext.class); - } public ExpressionContext expression() { return getRuleContext(ExpressionContext.class,0); } - public StatementContext statement(int i) { - return getRuleContext(StatementContext.class,i); + public SequenceContext sequence() { + return getRuleContext(SequenceContext.class,0); } public IfStatementContext(ParserRuleContext parent, int invokingState) { super(parent, invokingState); @@ -313,30 +637,17 @@ public T accept(ParseTreeVisitor visitor) { public final IfStatementContext ifStatement() throws RecognitionException { IfStatementContext _localctx = new IfStatementContext(_ctx, getState()); - enterRule(_localctx, 8, RULE_ifStatement); - int _la; + enterRule(_localctx, 18, RULE_ifStatement); try { enterOuterAlt(_localctx, 1); { - setState(38); match(12); - setState(39); match(11); - setState(40); expression(0); - setState(41); match(4); - setState(42); match(19); - setState(44); - _errHandler.sync(this); - _la = _input.LA(1); - do { - { - { - setState(43); statement(); - } - } - setState(46); - _errHandler.sync(this); - _la = _input.LA(1); - } while ( (((_la) & ~0x3f) == 0 && ((1L << _la) & ((1L << 2) | (1L << 12) | (1L << 22) | (1L << ID))) != 0) ); - setState(48); match(3); + setState(94); match(10); + setState(95); match(8); + setState(96); expression(0); + setState(97); match(20); + setState(98); match(26); + setState(99); sequence(); + setState(100); match(1); } } catch (RecognitionException re) { @@ -351,14 +662,11 @@ public final IfStatementContext ifStatement() throws RecognitionException { } public static class LoopStatementContext extends ParserRuleContext { - public List statement() { - return getRuleContexts(StatementContext.class); - } public ExpressionContext expression() { return getRuleContext(ExpressionContext.class,0); } - public StatementContext statement(int i) { - return getRuleContext(StatementContext.class,i); + public SequenceContext sequence() { + return getRuleContext(SequenceContext.class,0); } public LoopStatementContext(ParserRuleContext parent, int invokingState) { super(parent, invokingState); @@ -381,31 +689,17 @@ public T accept(ParseTreeVisitor visitor) { public final LoopStatementContext loopStatement() throws RecognitionException { LoopStatementContext _localctx = new LoopStatementContext(_ctx, getState()); - enterRule(_localctx, 10, RULE_loopStatement); - int _la; + enterRule(_localctx, 20, RULE_loopStatement); try { enterOuterAlt(_localctx, 1); { - setState(50); match(2); - setState(51); match(11); - setState(52); expression(0); - setState(53); match(4); - setState(54); match(1); - setState(56); - _errHandler.sync(this); - _la = _input.LA(1); - do { - { - { - setState(55); statement(); - } - } - setState(58); - _errHandler.sync(this); - _la = _input.LA(1); - } while ( (((_la) & ~0x3f) == 0 && ((1L << _la) & ((1L << 2) | (1L << 12) | (1L << 22) | (1L << ID))) != 0) ); - setState(60); match(24); - setState(61); match(2); + setState(102); match(18); + setState(103); match(8); + setState(104); expression(0); + setState(105); match(20); + setState(106); match(17); + setState(107); sequence(); + setState(108); match(16); } } catch (RecognitionException re) { @@ -445,14 +739,14 @@ public T accept(ParseTreeVisitor visitor) { public final FunctionCallContext functionCall() throws RecognitionException { FunctionCallContext _localctx = new FunctionCallContext(_ctx, getState()); - enterRule(_localctx, 12, RULE_functionCall); + enterRule(_localctx, 22, RULE_functionCall); try { enterOuterAlt(_localctx, 1); { - setState(63); match(ID); - setState(64); match(11); - setState(65); actualParameters(); - setState(66); match(4); + setState(110); match(ID); + setState(111); match(8); + setState(112); actualParameters(); + setState(113); match(20); } } catch (RecognitionException re) { @@ -494,23 +788,23 @@ public T accept(ParseTreeVisitor visitor) { public final ActualParametersContext actualParameters() throws RecognitionException { ActualParametersContext _localctx = new ActualParametersContext(_ctx, getState()); - enterRule(_localctx, 14, RULE_actualParameters); + enterRule(_localctx, 24, RULE_actualParameters); int _la; try { enterOuterAlt(_localctx, 1); { - setState(68); expression(0); - setState(73); + setState(115); expression(0); + setState(120); _errHandler.sync(this); _la = _input.LA(1); - while (_la==5) { + while (_la==2) { { { - setState(69); match(5); - setState(70); expression(0); + setState(116); match(2); + setState(117); expression(0); } } - setState(75); + setState(122); _errHandler.sync(this); _la = _input.LA(1); } @@ -568,49 +862,49 @@ public final ExpressionContext expression(int _p) throws RecognitionException { int _parentState = getState(); ExpressionContext _localctx = new ExpressionContext(_ctx, _parentState, _p); ExpressionContext _prevctx = _localctx; - int _startState = 16; + int _startState = 26; enterRecursionRule(_localctx, RULE_expression); int _la; try { int _alt; enterOuterAlt(_localctx, 1); { - setState(82); - switch ( getInterpreter().adaptivePredict(_input,5,_ctx) ) { + setState(129); + switch ( getInterpreter().adaptivePredict(_input,7,_ctx) ) { case 1: { - setState(77); + setState(124); _la = _input.LA(1); - if ( !(_la==7 || _la==10) ) { + if ( !(_la==4 || _la==7) ) { _errHandler.recoverInline(this); } consume(); - setState(78); expression(2); + setState(125); expression(2); } break; case 2: { - setState(79); constant(); + setState(126); constant(); } break; case 3: { - setState(80); match(ID); + setState(127); match(ID); } break; case 4: { - setState(81); functionCall(); + setState(128); functionCall(); } break; } _ctx.stop = _input.LT(-1); - setState(89); + setState(136); _errHandler.sync(this); - _alt = getInterpreter().adaptivePredict(_input,6,_ctx); + _alt = getInterpreter().adaptivePredict(_input,8,_ctx); while ( _alt!=2 && _alt!=-1 ) { if ( _alt==1 ) { if ( _parseListeners!=null ) triggerExitRuleEvent(); @@ -619,21 +913,21 @@ public final ExpressionContext expression(int _p) throws RecognitionException { { _localctx = new ExpressionContext(_parentctx, _parentState, _p); pushNewRecursionContext(_localctx, _startState, RULE_expression); - setState(84); + setState(131); if (!(1 >= _localctx._p)) throw new FailedPredicateException(this, "1 >= $_p"); - setState(85); + setState(132); _la = _input.LA(1); - if ( !((((_la) & ~0x3f) == 0 && ((1L << _la) & ((1L << 6) | (1L << 7) | (1L << 8) | (1L << 9) | (1L << 13) | (1L << 14) | (1L << 15) | (1L << 16) | (1L << 17) | (1L << 20) | (1L << 21) | (1L << 23))) != 0)) ) { + if ( !((((_la) & ~0x3f) == 0 && ((1L << _la) & ((1L << 3) | (1L << 4) | (1L << 6) | (1L << 11) | (1L << 12) | (1L << 13) | (1L << 14) | (1L << 22) | (1L << 24) | (1L << 28) | (1L << 30) | (1L << 31))) != 0)) ) { _errHandler.recoverInline(this); } consume(); - setState(86); expression(2); + setState(133); expression(2); } } } - setState(91); + setState(138); _errHandler.sync(this); - _alt = getInterpreter().adaptivePredict(_input,6,_ctx); + _alt = getInterpreter().adaptivePredict(_input,8,_ctx); } } } @@ -673,12 +967,12 @@ public T accept(ParseTreeVisitor visitor) { public final ConstantContext constant() throws RecognitionException { ConstantContext _localctx = new ConstantContext(_ctx, getState()); - enterRule(_localctx, 18, RULE_constant); + enterRule(_localctx, 28, RULE_constant); int _la; try { enterOuterAlt(_localctx, 1); { - setState(92); + setState(139); _la = _input.LA(1); if ( !((((_la) & ~0x3f) == 0 && ((1L << _la) & ((1L << BOOLEAN) | (1L << STRING) | (1L << NUMBER))) != 0)) ) { _errHandler.recoverInline(this); @@ -699,7 +993,7 @@ public final ConstantContext constant() throws RecognitionException { public boolean sempred(RuleContext _localctx, int ruleIndex, int predIndex) { switch (ruleIndex) { - case 8: return expression_sempred((ExpressionContext)_localctx, predIndex); + case 13: return expression_sempred((ExpressionContext)_localctx, predIndex); } return true; } @@ -711,30 +1005,44 @@ private boolean expression_sempred(ExpressionContext _localctx, int predIndex) { } public static final String _serializedATN = - "\3\uacf5\uee8c\u4f5d\u8b0d\u4a45\u78bd\u1b2f\u3378\3 a\4\2\t\2\4\3\t\3"+ - "\4\4\t\4\4\5\t\5\4\6\t\6\4\7\t\7\4\b\t\b\4\t\t\t\4\n\t\n\4\13\t\13\3\2"+ - "\6\2\30\n\2\r\2\16\2\31\3\3\3\3\3\3\3\3\3\3\5\3!\n\3\3\4\3\4\3\5\3\5\3"+ - "\5\3\5\3\6\3\6\3\6\3\6\3\6\3\6\6\6/\n\6\r\6\16\6\60\3\6\3\6\3\7\3\7\3"+ - "\7\3\7\3\7\3\7\6\7;\n\7\r\7\16\7<\3\7\3\7\3\7\3\b\3\b\3\b\3\b\3\b\3\t"+ - "\3\t\3\t\7\tJ\n\t\f\t\16\tM\13\t\3\n\3\n\3\n\3\n\3\n\3\n\5\nU\n\n\3\n"+ - "\3\n\3\n\7\nZ\n\n\f\n\16\n]\13\n\3\13\3\13\3\13\2\f\2\4\6\b\n\f\16\20"+ - "\22\24\2\5\4\2\t\t\f\f\6\2\b\13\17\23\26\27\31\31\3\2\33\35b\2\27\3\2"+ - "\2\2\4 \3\2\2\2\6\"\3\2\2\2\b$\3\2\2\2\n(\3\2\2\2\f\64\3\2\2\2\16A\3\2"+ - "\2\2\20F\3\2\2\2\22T\3\2\2\2\24^\3\2\2\2\26\30\5\4\3\2\27\26\3\2\2\2\30"+ - "\31\3\2\2\2\31\27\3\2\2\2\31\32\3\2\2\2\32\3\3\2\2\2\33!\5\6\4\2\34!\5"+ - "\b\5\2\35!\5\16\b\2\36!\5\n\6\2\37!\5\f\7\2 \33\3\2\2\2 \34\3\2\2\2 \35"+ - "\3\2\2\2 \36\3\2\2\2 \37\3\2\2\2!\5\3\2\2\2\"#\7\30\2\2#\7\3\2\2\2$%\7"+ - "\36\2\2%&\7\24\2\2&\'\5\22\n\2\'\t\3\2\2\2()\7\16\2\2)*\7\r\2\2*+\5\22"+ - "\n\2+,\7\6\2\2,.\7\25\2\2-/\5\4\3\2.-\3\2\2\2/\60\3\2\2\2\60.\3\2\2\2"+ - "\60\61\3\2\2\2\61\62\3\2\2\2\62\63\7\5\2\2\63\13\3\2\2\2\64\65\7\4\2\2"+ - "\65\66\7\r\2\2\66\67\5\22\n\2\678\7\6\2\28:\7\3\2\29;\5\4\3\2:9\3\2\2"+ - "\2;<\3\2\2\2<:\3\2\2\2<=\3\2\2\2=>\3\2\2\2>?\7\32\2\2?@\7\4\2\2@\r\3\2"+ - "\2\2AB\7\36\2\2BC\7\r\2\2CD\5\20\t\2DE\7\6\2\2E\17\3\2\2\2FK\5\22\n\2"+ - "GH\7\7\2\2HJ\5\22\n\2IG\3\2\2\2JM\3\2\2\2KI\3\2\2\2KL\3\2\2\2L\21\3\2"+ - "\2\2MK\3\2\2\2NO\b\n\1\2OP\t\2\2\2PU\5\22\n\2QU\5\24\13\2RU\7\36\2\2S"+ - "U\5\16\b\2TN\3\2\2\2TQ\3\2\2\2TR\3\2\2\2TS\3\2\2\2U[\3\2\2\2VW\6\n\2\3"+ - "WX\t\3\2\2XZ\5\22\n\2YV\3\2\2\2Z]\3\2\2\2[Y\3\2\2\2[\\\3\2\2\2\\\23\3"+ - "\2\2\2][\3\2\2\2^_\t\4\2\2_\25\3\2\2\2\t\31 \60\7%\2"+ + "\2>?\7\13\2\2?@\7%\2\2@G\3\2\2\2AB\7\4\2\2BC\7%\2\2CD\7\13\2\2DF\7%\2"+ + "\2EA\3\2\2\2FI\3\2\2\2GE\3\2\2\2GH\3\2\2\2H\t\3\2\2\2IG\3\2\2\2JQ\5\20"+ + "\t\2KQ\5\22\n\2LQ\5\f\7\2MQ\5\30\r\2NQ\5\24\13\2OQ\5\26\f\2PJ\3\2\2\2"+ + "PK\3\2\2\2PL\3\2\2\2PM\3\2\2\2PN\3\2\2\2PO\3\2\2\2Q\13\3\2\2\2RS\7\31"+ + "\2\2ST\5\34\17\2T\r\3\2\2\2UW\5\n\6\2VU\3\2\2\2WX\3\2\2\2XV\3\2\2\2XY"+ + "\3\2\2\2Y\17\3\2\2\2Z[\7\21\2\2[\21\3\2\2\2\\]\7%\2\2]^\7\33\2\2^_\5\34"+ + "\17\2_\23\3\2\2\2`a\7\f\2\2ab\7\n\2\2bc\5\34\17\2cd\7\26\2\2de\7\34\2"+ + "\2ef\5\16\b\2fg\7\3\2\2g\25\3\2\2\2hi\7\24\2\2ij\7\n\2\2jk\5\34\17\2k"+ + "l\7\26\2\2lm\7\23\2\2mn\5\16\b\2no\7\22\2\2o\27\3\2\2\2pq\7%\2\2qr\7\n"+ + "\2\2rs\5\32\16\2st\7\26\2\2t\31\3\2\2\2uz\5\34\17\2vw\7\4\2\2wy\5\34\17"+ + "\2xv\3\2\2\2y|\3\2\2\2zx\3\2\2\2z{\3\2\2\2{\33\3\2\2\2|z\3\2\2\2}~\b\17"+ + "\1\2~\177\t\2\2\2\177\u0084\5\34\17\2\u0080\u0084\5\36\20\2\u0081\u0084"+ + "\7%\2\2\u0082\u0084\5\30\r\2\u0083}\3\2\2\2\u0083\u0080\3\2\2\2\u0083"+ + "\u0081\3\2\2\2\u0083\u0082\3\2\2\2\u0084\u008a\3\2\2\2\u0085\u0086\6\17"+ + "\2\3\u0086\u0087\t\3\2\2\u0087\u0089\5\34\17\2\u0088\u0085\3\2\2\2\u0089"+ + "\u008c\3\2\2\2\u008a\u0088\3\2\2\2\u008a\u008b\3\2\2\2\u008b\35\3\2\2"+ + "\2\u008c\u008a\3\2\2\2\u008d\u008e\t\4\2\2\u008e\37\3\2\2\2\13#)\66GP"+ + "Xz\u0083\u008a"; public static final ATN _ATN = ATNSimulator.deserialize(_serializedATN.toCharArray()); static { diff --git a/grammar-imperative/src/ImperativeVisitor.class b/grammar-imperative/src/ImperativeVisitor.class index dc1377163aef2bc8e36af101fd8fcac53c0981d3..4cf1e31a5ea46c4e626986fdbc3a9eb1f0dbc74e 100644 GIT binary patch literal 3784 zcmb7HYkLz#6n+PhwcL84wA@sn#on+h7rC^h5DV34EVYR!Am}zsQv@u&I0 zAK;Jj@$AG*HZvzR{gCI)%zG~H?8%-v`TL(g{{nCeyB?l-_{qc10>k@Z8fH)4?(&whrr5Txecu9|F^2_#@5? z;;0Wbrgc=}c&|z)kWHD3`9)y7XUiyBW&(4TysYa3duwguTHBVSQmKNvR{|5(rqTC+ z$-vw43KtLIuQd*7jb#Kdw2#lDe(Q}uHXPpO^``hzExz2k~j6#h|^{mxfVs~u03iA%(Igao8LnyaJ3t@-$*BL*)gJ8r1=zOYI4mn;bs(p8OM&F6$CCh zmW6wqqYF1DjfAeZa}Nq!ajfjyiF-m$~tAzE>;yaU9=zJ5&nT; ze2C{bM(kqjlWxC?beL#X$s- z^8v)!(XEJ^AP$a#AE4kz5C`!#)9-T5S?*i%(#*d9wO)v5k~TG3&?u+TqM*pJ?b=@P zj*?+v8934afDW zon;XzaU)826j!G1cV)-sd{vOqxlmP-_>czTY8>~9>E9(KCf2a6)bS8Zh%#EiTfB0% zjxXf`W&KlZAT2GVjRDw(g@Q4NZzGCx5y7q;#}CNzRyIfR{1O30^XC?obrA)R0D yqFI{rohOamB1r*SqHb=(Y=n)mCYxaU*d&``Gi*O=u~~MM9b?DY33iH|CjB1~H&e0z diff --git a/grammar-imperative/src/ImperativeVisitor.java b/grammar-imperative/src/ImperativeVisitor.java index 64d4908..fafb281 100644 --- a/grammar-imperative/src/ImperativeVisitor.java +++ b/grammar-imperative/src/ImperativeVisitor.java @@ -18,18 +18,53 @@ public interface ImperativeVisitor extends ParseTreeVisitor { T visitExpression(@NotNull ImperativeParser.ExpressionContext ctx); /** - * Visit a parse tree produced by {@link ImperativeParser#statement}. + * Visit a parse tree produced by {@link ImperativeParser#constant}. * @param ctx the parse tree * @return the visitor result */ - T visitStatement(@NotNull ImperativeParser.StatementContext ctx); + T visitConstant(@NotNull ImperativeParser.ConstantContext ctx); /** - * Visit a parse tree produced by {@link ImperativeParser#functionCall}. + * Visit a parse tree produced by {@link ImperativeParser#loopStatement}. * @param ctx the parse tree * @return the visitor result */ - T visitFunctionCall(@NotNull ImperativeParser.FunctionCallContext ctx); + T visitLoopStatement(@NotNull ImperativeParser.LoopStatementContext ctx); + + /** + * Visit a parse tree produced by {@link ImperativeParser#returnStatement}. + * @param ctx the parse tree + * @return the visitor result + */ + T visitReturnStatement(@NotNull ImperativeParser.ReturnStatementContext ctx); + + /** + * Visit a parse tree produced by {@link ImperativeParser#init}. + * @param ctx the parse tree + * @return the visitor result + */ + T visitInit(@NotNull ImperativeParser.InitContext ctx); + + /** + * Visit a parse tree produced by {@link ImperativeParser#skip}. + * @param ctx the parse tree + * @return the visitor result + */ + T visitSkip(@NotNull ImperativeParser.SkipContext ctx); + + /** + * Visit a parse tree produced by {@link ImperativeParser#ifStatement}. + * @param ctx the parse tree + * @return the visitor result + */ + T visitIfStatement(@NotNull ImperativeParser.IfStatementContext ctx); + + /** + * Visit a parse tree produced by {@link ImperativeParser#statement}. + * @param ctx the parse tree + * @return the visitor result + */ + T visitStatement(@NotNull ImperativeParser.StatementContext ctx); /** * Visit a parse tree produced by {@link ImperativeParser#assignment}. @@ -39,44 +74,44 @@ public interface ImperativeVisitor extends ParseTreeVisitor { T visitAssignment(@NotNull ImperativeParser.AssignmentContext ctx); /** - * Visit a parse tree produced by {@link ImperativeParser#constant}. + * Visit a parse tree produced by {@link ImperativeParser#functionCall}. * @param ctx the parse tree * @return the visitor result */ - T visitConstant(@NotNull ImperativeParser.ConstantContext ctx); + T visitFunctionCall(@NotNull ImperativeParser.FunctionCallContext ctx); /** - * Visit a parse tree produced by {@link ImperativeParser#loopStatement}. + * Visit a parse tree produced by {@link ImperativeParser#functionDefinition}. * @param ctx the parse tree * @return the visitor result */ - T visitLoopStatement(@NotNull ImperativeParser.LoopStatementContext ctx); + T visitFunctionDefinition(@NotNull ImperativeParser.FunctionDefinitionContext ctx); /** - * Visit a parse tree produced by {@link ImperativeParser#init}. + * Visit a parse tree produced by {@link ImperativeParser#formalParameters}. * @param ctx the parse tree * @return the visitor result */ - T visitInit(@NotNull ImperativeParser.InitContext ctx); + T visitFormalParameters(@NotNull ImperativeParser.FormalParametersContext ctx); /** - * Visit a parse tree produced by {@link ImperativeParser#skip}. + * Visit a parse tree produced by {@link ImperativeParser#sequence}. * @param ctx the parse tree * @return the visitor result */ - T visitSkip(@NotNull ImperativeParser.SkipContext ctx); + T visitSequence(@NotNull ImperativeParser.SequenceContext ctx); /** - * Visit a parse tree produced by {@link ImperativeParser#actualParameters}. + * Visit a parse tree produced by {@link ImperativeParser#procedureDefinition}. * @param ctx the parse tree * @return the visitor result */ - T visitActualParameters(@NotNull ImperativeParser.ActualParametersContext ctx); + T visitProcedureDefinition(@NotNull ImperativeParser.ProcedureDefinitionContext ctx); /** - * Visit a parse tree produced by {@link ImperativeParser#ifStatement}. + * Visit a parse tree produced by {@link ImperativeParser#actualParameters}. * @param ctx the parse tree * @return the visitor result */ - T visitIfStatement(@NotNull ImperativeParser.IfStatementContext ctx); + T visitActualParameters(@NotNull ImperativeParser.ActualParametersContext ctx); } \ No newline at end of file