diff --git a/docs/Diplomamunka_Szabo_Tamas.docx b/docs/Diplomamunka_Szabo_Tamas.docx
index 89171f2..dc83f9a 100644
Binary files a/docs/Diplomamunka_Szabo_Tamas.docx and b/docs/Diplomamunka_Szabo_Tamas.docx differ
diff --git a/docs/draft.docx b/docs/draft.docx
index 41e2f56..742e71d 100644
Binary files a/docs/draft.docx and b/docs/draft.docx differ
diff --git a/grammar/MetaCode.g4 b/grammar/MetaCode.g4
index 5313412..dcca9aa 100644
--- a/grammar/MetaCode.g4
+++ b/grammar/MetaCode.g4
@@ -7,6 +7,7 @@ statements : (statement ';')+
;
statement : Expression=expression
+ | Return=returnStatement
| Attributes=attributes? VariableDeclaration=variableDeclaration
| Attributes=attributes? If=ifStatement
| Attributes=attributes? Block=blockStatement
@@ -39,21 +40,23 @@ expression : PrimaryExpression=primaryExpression
functionCallExpression : primaryExpression '(' expression? ')'
;
-memberExpression : primaryExpression ('.' (identifier | functionCallExpression))+
+memberExpression : (primaryExpression | functionCallExpression) ('.' memberTagExpression)+
;
+memberTagExpression : identifier | functionCallExpression;
+
primaryExpression : Attributes=attributes? Constant=constant
- | Attributes=attributes? Id=identifier
+ | Attributes=attributes? Id=ID
| Attributes=attributes? Function=functionExpression
| Attributes=attributes? Assignment=assignmentExpression
| Attributes=attributes? '(' InnerExpression=expression ')'
;
-functionExpression : FUNCTION FunctionName=identifier? '(' Parameters=formalParameterList? ')' (':' ReturnType=typeName)? DO BodyStatements=statements END
- | FUNCTION FunctionName=identifier? '(' Parameters=formalParameterList? ')' (':' ReturnType=typeName)? '=' BodyExpression=expression
+functionExpression : FUNCTION FunctionName=ID? '(' Parameters=formalParameterList? ')' (':' ReturnType=typeName) DO BodyStatements=statements END
+ | FUNCTION FunctionName=ID? '(' Parameters=formalParameterList? ')' (':' ReturnType=typeName) '=' BodyExpression=expression
;
-foreachStatement : FOREACH '(' Var=VAR? Id=identifier (':' VariableType=typeName)? IN ArrayExpression=expression ')' Body=statement
+foreachStatement : FOREACH '(' Var=VAR? Id=ID (':' VariableType=typeName)? IN ArrayExpression=expression ')' Body=statement
;
whileStatement : WHILE '(' ConditionExpression=expression ')' Body=statement
@@ -64,22 +67,24 @@ blockStatement : DO Body=statements END
skipStatement : SKIP;
-assignmentExpression: Variable=identifier ASSIGN Value=expression (ConditionalAttributes=attributes? IF '(' ConditionalExpression=expression ')')?
+returnStatement : RETURN expression;
+
+assignmentExpression: Variable=ID ASSIGN Value=expression (ConditionalAttributes=attributes? IF '(' ConditionalExpression=expression ')')?
;
ifStatement : IF '(' Condition=expression ')' Statements=statements
- ElseIfExpressions=elseIfStatement*
+ ElseIfStatements=elseIfStatement*
(ELSE ElseStatements=statements)?
END
;
-elseIfStatement : ELSE IF '(' expression ')' statements
+elseIfStatement : ELSE IF '(' Condition=expression ')' Statements=statements
;
formalParameterList : formalParameter (',' formalParameter)*
;
-formalParameter : attributes? identifier ':' typeName
+formalParameter : Attributes=attributes? Name=ID ':' Type=typeName
;
actualParameterList : expression (',' expression)*
@@ -155,6 +160,8 @@ NOT : 'not';
NULL : 'null';
+RETURN : 'return';
+
LEFT_PARENTHESIS : '(';
RIGHT_PARENTHESIS : ')';
diff --git a/grammar/example.txt b/grammar/example.txt
index 14bcaa1..ef08d90 100644
--- a/grammar/example.txt
+++ b/grammar/example.txt
@@ -31,6 +31,10 @@ else
end;
*/
+(5 + 5).ToString();
+
+var a = ToString().Parse("Hello World!").Hiii;
+
var a : System.Boolean = false;
foreach (var i: Integer in 1 to 100 by 34) do
@@ -41,7 +45,7 @@ if (not (@convert false))
@cast("System.Int32") (0 to 3 by 2);
end;
-@tail-recursive(false) function max(a: Integer, b: Integer) do
+@tail-recursive(false) function max(a: Integer, b: Integer): Integer do
if (a < b)
a;
else
diff --git a/grammar/src/MetaCode.tokens b/grammar/src/MetaCode.tokens
index 7b17149..e763b7a 100644
--- a/grammar/src/MetaCode.tokens
+++ b/grammar/src/MetaCode.tokens
@@ -2,12 +2,12 @@ FUNCTION=19
WHILE=21
NULL=34
ELSE=23
-NUMBER=42
-ATTRIBUTE_ID=40
-WHITESPACE=43
+NUMBER=43
+ATTRIBUTE_ID=41
+WHITESPACE=44
DO=24
NOT=33
-ID=37
+ID=38
AND=31
T__9=9
T__8=10
@@ -17,31 +17,32 @@ T__5=13
IF=22
SKIP=27
T__4=14
-MULTILINE_COMMENT=39
+MULTILINE_COMMENT=40
BOOLEAN=26
T__16=2
IN=29
T__15=3
-NEWLINE=44
-RIGHT_PARENTHESIS=36
+NEWLINE=45
+RIGHT_PARENTHESIS=37
T__17=1
T__12=6
T__11=7
T__14=4
-LEFT_PARENTHESIS=35
+LEFT_PARENTHESIS=36
T__13=5
T__1=17
T__0=18
OR=32
T__10=8
T__3=15
+RETURN=35
ASSIGN=30
T__2=16
VAR=28
FOREACH=20
-COMMENT=38
+COMMENT=39
END=25
-STRING=41
+STRING=42
'foreach'=20
'end'=25
'>='=18
@@ -50,9 +51,10 @@ STRING=41
'null'=34
'>'=14
';'=11
+'return'=35
'='=30
'+'=4
-')'=36
+')'=37
'.'=2
'function'=19
'do'=24
@@ -66,7 +68,7 @@ STRING=41
'!='=10
'<'=9
'if'=22
-'('=35
+'('=36
'not'=33
':'=8
'or'=32
diff --git a/grammar/src/MetaCodeBaseListener.class b/grammar/src/MetaCodeBaseListener.class
index d0b3e7b..99ce853 100644
Binary files a/grammar/src/MetaCodeBaseListener.class and b/grammar/src/MetaCodeBaseListener.class differ
diff --git a/grammar/src/MetaCodeBaseListener.java b/grammar/src/MetaCodeBaseListener.java
index 123740e..c6a0ada 100644
--- a/grammar/src/MetaCodeBaseListener.java
+++ b/grammar/src/MetaCodeBaseListener.java
@@ -1,4 +1,4 @@
-// Generated from ../MetaCode.g4 by ANTLR 4.2
+// Generated from ../MetaCode.g4 by ANTLR 4.1
import org.antlr.v4.runtime.ParserRuleContext;
import org.antlr.v4.runtime.misc.NotNull;
@@ -13,403 +13,429 @@
public class MetaCodeBaseListener implements MetaCodeListener {
/**
* {@inheritDoc}
- *
- *
The default implementation does nothing.
+ *
+ * The default implementation does nothing.
*/
@Override public void enterExpression(@NotNull MetaCodeParser.ExpressionContext ctx) { }
/**
* {@inheritDoc}
- *
- * The default implementation does nothing.
+ *
+ * The default implementation does nothing.
*/
@Override public void exitExpression(@NotNull MetaCodeParser.ExpressionContext ctx) { }
/**
* {@inheritDoc}
- *
- * The default implementation does nothing.
+ *
+ * The default implementation does nothing.
*/
@Override public void enterFormalParameter(@NotNull MetaCodeParser.FormalParameterContext ctx) { }
/**
* {@inheritDoc}
- *
- * The default implementation does nothing.
+ *
+ * The default implementation does nothing.
*/
@Override public void exitFormalParameter(@NotNull MetaCodeParser.FormalParameterContext ctx) { }
/**
* {@inheritDoc}
- *
- * The default implementation does nothing.
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void enterReturnStatement(@NotNull MetaCodeParser.ReturnStatementContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void exitReturnStatement(@NotNull MetaCodeParser.ReturnStatementContext ctx) { }
+
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
*/
@Override public void enterAttribute(@NotNull MetaCodeParser.AttributeContext ctx) { }
/**
* {@inheritDoc}
- *
- * The default implementation does nothing.
+ *
+ * The default implementation does nothing.
*/
@Override public void exitAttribute(@NotNull MetaCodeParser.AttributeContext ctx) { }
/**
* {@inheritDoc}
- *
- * The default implementation does nothing.
+ *
+ * The default implementation does nothing.
*/
@Override public void enterBlockStatement(@NotNull MetaCodeParser.BlockStatementContext ctx) { }
/**
* {@inheritDoc}
- *
- * The default implementation does nothing.
+ *
+ * The default implementation does nothing.
*/
@Override public void exitBlockStatement(@NotNull MetaCodeParser.BlockStatementContext ctx) { }
/**
* {@inheritDoc}
- *
- * The default implementation does nothing.
+ *
+ * The default implementation does nothing.
*/
@Override public void enterIntervalConstant(@NotNull MetaCodeParser.IntervalConstantContext ctx) { }
/**
* {@inheritDoc}
- *
- * The default implementation does nothing.
+ *
+ * The default implementation does nothing.
*/
@Override public void exitIntervalConstant(@NotNull MetaCodeParser.IntervalConstantContext ctx) { }
/**
* {@inheritDoc}
- *
- * The default implementation does nothing.
+ *
+ * The default implementation does nothing.
*/
@Override public void enterPrimaryExpression(@NotNull MetaCodeParser.PrimaryExpressionContext ctx) { }
/**
* {@inheritDoc}
- *
- * The default implementation does nothing.
+ *
+ * The default implementation does nothing.
*/
@Override public void exitPrimaryExpression(@NotNull MetaCodeParser.PrimaryExpressionContext ctx) { }
/**
* {@inheritDoc}
- *
- * The default implementation does nothing.
+ *
+ * The default implementation does nothing.
*/
@Override public void enterElseIfStatement(@NotNull MetaCodeParser.ElseIfStatementContext ctx) { }
/**
* {@inheritDoc}
- *
- * The default implementation does nothing.
+ *
+ * The default implementation does nothing.
*/
@Override public void exitElseIfStatement(@NotNull MetaCodeParser.ElseIfStatementContext ctx) { }
/**
* {@inheritDoc}
- *
- * The default implementation does nothing.
+ *
+ * The default implementation does nothing.
*/
@Override public void enterVariableDeclaration(@NotNull MetaCodeParser.VariableDeclarationContext ctx) { }
/**
* {@inheritDoc}
- *
- * The default implementation does nothing.
+ *
+ * The default implementation does nothing.
*/
@Override public void exitVariableDeclaration(@NotNull MetaCodeParser.VariableDeclarationContext ctx) { }
/**
* {@inheritDoc}
- *
- * The default implementation does nothing.
+ *
+ * The default implementation does nothing.
*/
@Override public void enterStatements(@NotNull MetaCodeParser.StatementsContext ctx) { }
/**
* {@inheritDoc}
- *
- * The default implementation does nothing.
+ *
+ * The default implementation does nothing.
*/
@Override public void exitStatements(@NotNull MetaCodeParser.StatementsContext ctx) { }
/**
* {@inheritDoc}
- *
- * The default implementation does nothing.
+ *
+ * The default implementation does nothing.
*/
@Override public void enterActualParameterList(@NotNull MetaCodeParser.ActualParameterListContext ctx) { }
/**
* {@inheritDoc}
- *
- * The default implementation does nothing.
+ *
+ * The default implementation does nothing.
*/
@Override public void exitActualParameterList(@NotNull MetaCodeParser.ActualParameterListContext ctx) { }
/**
* {@inheritDoc}
- *
- * The default implementation does nothing.
+ *
+ * The default implementation does nothing.
*/
@Override public void enterSkipStatement(@NotNull MetaCodeParser.SkipStatementContext ctx) { }
/**
* {@inheritDoc}
- *
- * The default implementation does nothing.
+ *
+ * The default implementation does nothing.
*/
@Override public void exitSkipStatement(@NotNull MetaCodeParser.SkipStatementContext ctx) { }
/**
* {@inheritDoc}
- *
- * The default implementation does nothing.
+ *
+ * The default implementation does nothing.
*/
@Override public void enterFormalParameterList(@NotNull MetaCodeParser.FormalParameterListContext ctx) { }
/**
* {@inheritDoc}
- *
- * The default implementation does nothing.
+ *
+ * The default implementation does nothing.
*/
@Override public void exitFormalParameterList(@NotNull MetaCodeParser.FormalParameterListContext ctx) { }
/**
* {@inheritDoc}
- *
- * The default implementation does nothing.
+ *
+ * The default implementation does nothing.
*/
@Override public void enterFunctionExpression(@NotNull MetaCodeParser.FunctionExpressionContext ctx) { }
/**
* {@inheritDoc}
- *
- * The default implementation does nothing.
+ *
+ * The default implementation does nothing.
*/
@Override public void exitFunctionExpression(@NotNull MetaCodeParser.FunctionExpressionContext ctx) { }
/**
* {@inheritDoc}
- *
- * The default implementation does nothing.
+ *
+ * The default implementation does nothing.
*/
@Override public void enterConstant(@NotNull MetaCodeParser.ConstantContext ctx) { }
/**
* {@inheritDoc}
- *
- * The default implementation does nothing.
+ *
+ * The default implementation does nothing.
*/
@Override public void exitConstant(@NotNull MetaCodeParser.ConstantContext ctx) { }
/**
* {@inheritDoc}
- *
- * The default implementation does nothing.
+ *
+ * The default implementation does nothing.
*/
@Override public void enterBooleanConstant(@NotNull MetaCodeParser.BooleanConstantContext ctx) { }
/**
* {@inheritDoc}
- *
- * The default implementation does nothing.
+ *
+ * The default implementation does nothing.
*/
@Override public void exitBooleanConstant(@NotNull MetaCodeParser.BooleanConstantContext ctx) { }
/**
* {@inheritDoc}
- *
- * The default implementation does nothing.
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void enterMemberTagExpression(@NotNull MetaCodeParser.MemberTagExpressionContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void exitMemberTagExpression(@NotNull MetaCodeParser.MemberTagExpressionContext ctx) { }
+
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
*/
@Override public void enterAssignmentExpression(@NotNull MetaCodeParser.AssignmentExpressionContext ctx) { }
/**
* {@inheritDoc}
- *
- * The default implementation does nothing.
+ *
+ * The default implementation does nothing.
*/
@Override public void exitAssignmentExpression(@NotNull MetaCodeParser.AssignmentExpressionContext ctx) { }
/**
* {@inheritDoc}
- *
- * The default implementation does nothing.
+ *
+ * The default implementation does nothing.
*/
@Override public void enterInit(@NotNull MetaCodeParser.InitContext ctx) { }
/**
* {@inheritDoc}
- *
- * The default implementation does nothing.
+ *
+ * The default implementation does nothing.
*/
@Override public void exitInit(@NotNull MetaCodeParser.InitContext ctx) { }
/**
* {@inheritDoc}
- *
- * The default implementation does nothing.
+ *
+ * The default implementation does nothing.
*/
@Override public void enterNumberConstant(@NotNull MetaCodeParser.NumberConstantContext ctx) { }
/**
* {@inheritDoc}
- *
- * The default implementation does nothing.
+ *
+ * The default implementation does nothing.
*/
@Override public void exitNumberConstant(@NotNull MetaCodeParser.NumberConstantContext ctx) { }
/**
* {@inheritDoc}
- *
- * The default implementation does nothing.
+ *
+ * The default implementation does nothing.
*/
@Override public void enterIfStatement(@NotNull MetaCodeParser.IfStatementContext ctx) { }
/**
* {@inheritDoc}
- *
- * The default implementation does nothing.
+ *
+ * The default implementation does nothing.
*/
@Override public void exitIfStatement(@NotNull MetaCodeParser.IfStatementContext ctx) { }
/**
* {@inheritDoc}
- *
- * The default implementation does nothing.
+ *
+ * The default implementation does nothing.
*/
@Override public void enterMemberExpression(@NotNull MetaCodeParser.MemberExpressionContext ctx) { }
/**
* {@inheritDoc}
- *
- * The default implementation does nothing.
+ *
+ * The default implementation does nothing.
*/
@Override public void exitMemberExpression(@NotNull MetaCodeParser.MemberExpressionContext ctx) { }
/**
* {@inheritDoc}
- *
- * The default implementation does nothing.
+ *
+ * The default implementation does nothing.
*/
@Override public void enterStatement(@NotNull MetaCodeParser.StatementContext ctx) { }
/**
* {@inheritDoc}
- *
- * The default implementation does nothing.
+ *
+ * The default implementation does nothing.
*/
@Override public void exitStatement(@NotNull MetaCodeParser.StatementContext ctx) { }
/**
* {@inheritDoc}
- *
- * The default implementation does nothing.
+ *
+ * The default implementation does nothing.
*/
@Override public void enterTypeName(@NotNull MetaCodeParser.TypeNameContext ctx) { }
/**
* {@inheritDoc}
- *
- * The default implementation does nothing.
+ *
+ * The default implementation does nothing.
*/
@Override public void exitTypeName(@NotNull MetaCodeParser.TypeNameContext ctx) { }
/**
* {@inheritDoc}
- *
- * The default implementation does nothing.
+ *
+ * The default implementation does nothing.
*/
@Override public void enterWhileStatement(@NotNull MetaCodeParser.WhileStatementContext ctx) { }
/**
* {@inheritDoc}
- *
- * The default implementation does nothing.
+ *
+ * The default implementation does nothing.
*/
@Override public void exitWhileStatement(@NotNull MetaCodeParser.WhileStatementContext ctx) { }
/**
* {@inheritDoc}
- *
- * The default implementation does nothing.
+ *
+ * The default implementation does nothing.
*/
@Override public void enterFunctionCallExpression(@NotNull MetaCodeParser.FunctionCallExpressionContext ctx) { }
/**
* {@inheritDoc}
- *
- * The default implementation does nothing.
+ *
+ * The default implementation does nothing.
*/
@Override public void exitFunctionCallExpression(@NotNull MetaCodeParser.FunctionCallExpressionContext ctx) { }
/**
* {@inheritDoc}
- *
- * The default implementation does nothing.
+ *
+ * The default implementation does nothing.
*/
@Override public void enterAttributes(@NotNull MetaCodeParser.AttributesContext ctx) { }
/**
* {@inheritDoc}
- *
- * The default implementation does nothing.
+ *
+ * The default implementation does nothing.
*/
@Override public void exitAttributes(@NotNull MetaCodeParser.AttributesContext ctx) { }
/**
* {@inheritDoc}
- *
- * The default implementation does nothing.
+ *
+ * The default implementation does nothing.
*/
@Override public void enterArrayConstant(@NotNull MetaCodeParser.ArrayConstantContext ctx) { }
/**
* {@inheritDoc}
- *
- * The default implementation does nothing.
+ *
+ * The default implementation does nothing.
*/
@Override public void exitArrayConstant(@NotNull MetaCodeParser.ArrayConstantContext ctx) { }
/**
* {@inheritDoc}
- *
- * The default implementation does nothing.
+ *
+ * The default implementation does nothing.
*/
@Override public void enterForeachStatement(@NotNull MetaCodeParser.ForeachStatementContext ctx) { }
/**
* {@inheritDoc}
- *
- * The default implementation does nothing.
+ *
+ * The default implementation does nothing.
*/
@Override public void exitForeachStatement(@NotNull MetaCodeParser.ForeachStatementContext ctx) { }
/**
* {@inheritDoc}
- *
- * The default implementation does nothing.
+ *
+ * The default implementation does nothing.
*/
- @Override public void enterIdentifier(@NotNull MetaCodeParser.IdentifierContext ctx) { }
+ @Override public void enterStringConstant(@NotNull MetaCodeParser.StringConstantContext ctx) { }
/**
* {@inheritDoc}
- *
- * The default implementation does nothing.
+ *
+ * The default implementation does nothing.
*/
- @Override public void exitIdentifier(@NotNull MetaCodeParser.IdentifierContext ctx) { }
+ @Override public void exitStringConstant(@NotNull MetaCodeParser.StringConstantContext ctx) { }
/**
* {@inheritDoc}
- *
- * The default implementation does nothing.
+ *
+ * The default implementation does nothing.
*/
- @Override public void enterStringConstant(@NotNull MetaCodeParser.StringConstantContext ctx) { }
+ @Override public void enterIdentifier(@NotNull MetaCodeParser.IdentifierContext ctx) { }
/**
* {@inheritDoc}
- *
- * The default implementation does nothing.
+ *
+ * The default implementation does nothing.
*/
- @Override public void exitStringConstant(@NotNull MetaCodeParser.StringConstantContext ctx) { }
+ @Override public void exitIdentifier(@NotNull MetaCodeParser.IdentifierContext ctx) { }
/**
* {@inheritDoc}
- *
- * The default implementation does nothing.
+ *
+ * The default implementation does nothing.
*/
@Override public void enterEveryRule(@NotNull ParserRuleContext ctx) { }
/**
* {@inheritDoc}
- *
- * The default implementation does nothing.
+ *
+ * The default implementation does nothing.
*/
@Override public void exitEveryRule(@NotNull ParserRuleContext ctx) { }
/**
* {@inheritDoc}
- *
- * The default implementation does nothing.
+ *
+ * The default implementation does nothing.
*/
@Override public void visitTerminal(@NotNull TerminalNode node) { }
/**
* {@inheritDoc}
- *
- * The default implementation does nothing.
+ *
+ * The default implementation does nothing.
*/
@Override public void visitErrorNode(@NotNull ErrorNode node) { }
}
\ No newline at end of file
diff --git a/grammar/src/MetaCodeBaseVisitor.class b/grammar/src/MetaCodeBaseVisitor.class
index 5bc2967..e2f7423 100644
Binary files a/grammar/src/MetaCodeBaseVisitor.class and b/grammar/src/MetaCodeBaseVisitor.class differ
diff --git a/grammar/src/MetaCodeBaseVisitor.java b/grammar/src/MetaCodeBaseVisitor.java
index e4ab29e..a71abe9 100644
--- a/grammar/src/MetaCodeBaseVisitor.java
+++ b/grammar/src/MetaCodeBaseVisitor.java
@@ -1,4 +1,4 @@
-// Generated from ../MetaCode.g4 by ANTLR 4.2
+// Generated from ../MetaCode.g4 by ANTLR 4.1
import org.antlr.v4.runtime.misc.NotNull;
import org.antlr.v4.runtime.tree.AbstractParseTreeVisitor;
@@ -13,233 +13,249 @@
public class MetaCodeBaseVisitor extends AbstractParseTreeVisitor implements MetaCodeVisitor {
/**
* {@inheritDoc}
- *
- * The default implementation returns the result of calling
- * {@link #visitChildren} on {@code ctx}.
+ *
+ * The default implementation returns the result of calling
+ * {@link #visitChildren} on {@code ctx}.
*/
@Override public T visitExpression(@NotNull MetaCodeParser.ExpressionContext ctx) { return visitChildren(ctx); }
/**
* {@inheritDoc}
- *
- * The default implementation returns the result of calling
- * {@link #visitChildren} on {@code ctx}.
+ *
+ * The default implementation returns the result of calling
+ * {@link #visitChildren} on {@code ctx}.
*/
@Override public T visitFormalParameter(@NotNull MetaCodeParser.FormalParameterContext ctx) { return visitChildren(ctx); }
/**
* {@inheritDoc}
- *
- * The default implementation returns the result of calling
- * {@link #visitChildren} on {@code ctx}.
+ *
+ * The default implementation returns the result of calling
+ * {@link #visitChildren} on {@code ctx}.
+ */
+ @Override public T visitReturnStatement(@NotNull MetaCodeParser.ReturnStatementContext ctx) { return visitChildren(ctx); }
+
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation returns the result of calling
+ * {@link #visitChildren} on {@code ctx}.
*/
@Override public T visitAttribute(@NotNull MetaCodeParser.AttributeContext ctx) { return visitChildren(ctx); }
/**
* {@inheritDoc}
- *
- * The default implementation returns the result of calling
- * {@link #visitChildren} on {@code ctx}.
+ *
+ * The default implementation returns the result of calling
+ * {@link #visitChildren} on {@code ctx}.
*/
@Override public T visitBlockStatement(@NotNull MetaCodeParser.BlockStatementContext ctx) { return visitChildren(ctx); }
/**
* {@inheritDoc}
- *
- * The default implementation returns the result of calling
- * {@link #visitChildren} on {@code ctx}.
+ *
+ * The default implementation returns the result of calling
+ * {@link #visitChildren} on {@code ctx}.
*/
@Override public T visitIntervalConstant(@NotNull MetaCodeParser.IntervalConstantContext ctx) { return visitChildren(ctx); }
/**
* {@inheritDoc}
- *
- * The default implementation returns the result of calling
- * {@link #visitChildren} on {@code ctx}.
+ *
+ * The default implementation returns the result of calling
+ * {@link #visitChildren} on {@code ctx}.
*/
@Override public T visitPrimaryExpression(@NotNull MetaCodeParser.PrimaryExpressionContext ctx) { return visitChildren(ctx); }
/**
* {@inheritDoc}
- *
- * The default implementation returns the result of calling
- * {@link #visitChildren} on {@code ctx}.
+ *
+ * The default implementation returns the result of calling
+ * {@link #visitChildren} on {@code ctx}.
*/
@Override public T visitElseIfStatement(@NotNull MetaCodeParser.ElseIfStatementContext ctx) { return visitChildren(ctx); }
/**
* {@inheritDoc}
- *
- * The default implementation returns the result of calling
- * {@link #visitChildren} on {@code ctx}.
+ *
+ * The default implementation returns the result of calling
+ * {@link #visitChildren} on {@code ctx}.
*/
@Override public T visitVariableDeclaration(@NotNull MetaCodeParser.VariableDeclarationContext ctx) { return visitChildren(ctx); }
/**
* {@inheritDoc}
- *
- * The default implementation returns the result of calling
- * {@link #visitChildren} on {@code ctx}.
+ *
+ * The default implementation returns the result of calling
+ * {@link #visitChildren} on {@code ctx}.
*/
@Override public T visitStatements(@NotNull MetaCodeParser.StatementsContext ctx) { return visitChildren(ctx); }
/**
* {@inheritDoc}
- *
- * The default implementation returns the result of calling
- * {@link #visitChildren} on {@code ctx}.
+ *
+ * The default implementation returns the result of calling
+ * {@link #visitChildren} on {@code ctx}.
*/
@Override public T visitActualParameterList(@NotNull MetaCodeParser.ActualParameterListContext ctx) { return visitChildren(ctx); }
/**
* {@inheritDoc}
- *
- * The default implementation returns the result of calling
- * {@link #visitChildren} on {@code ctx}.
+ *
+ * The default implementation returns the result of calling
+ * {@link #visitChildren} on {@code ctx}.
*/
@Override public T visitSkipStatement(@NotNull MetaCodeParser.SkipStatementContext ctx) { return visitChildren(ctx); }
/**
* {@inheritDoc}
- *
- * The default implementation returns the result of calling
- * {@link #visitChildren} on {@code ctx}.
+ *
+ * The default implementation returns the result of calling
+ * {@link #visitChildren} on {@code ctx}.
*/
@Override public T visitFormalParameterList(@NotNull MetaCodeParser.FormalParameterListContext ctx) { return visitChildren(ctx); }
/**
* {@inheritDoc}
- *
- * The default implementation returns the result of calling
- * {@link #visitChildren} on {@code ctx}.
+ *
+ * The default implementation returns the result of calling
+ * {@link #visitChildren} on {@code ctx}.
*/
@Override public T visitFunctionExpression(@NotNull MetaCodeParser.FunctionExpressionContext ctx) { return visitChildren(ctx); }
/**
* {@inheritDoc}
- *
- * The default implementation returns the result of calling
- * {@link #visitChildren} on {@code ctx}.
+ *
+ * The default implementation returns the result of calling
+ * {@link #visitChildren} on {@code ctx}.
*/
@Override public T visitConstant(@NotNull MetaCodeParser.ConstantContext ctx) { return visitChildren(ctx); }
/**
* {@inheritDoc}
- *
- * The default implementation returns the result of calling
- * {@link #visitChildren} on {@code ctx}.
+ *
+ * The default implementation returns the result of calling
+ * {@link #visitChildren} on {@code ctx}.
*/
@Override public T visitBooleanConstant(@NotNull MetaCodeParser.BooleanConstantContext ctx) { return visitChildren(ctx); }
/**
* {@inheritDoc}
- *
- * The default implementation returns the result of calling
- * {@link #visitChildren} on {@code ctx}.
+ *
+ * The default implementation returns the result of calling
+ * {@link #visitChildren} on {@code ctx}.
+ */
+ @Override public T visitMemberTagExpression(@NotNull MetaCodeParser.MemberTagExpressionContext ctx) { return visitChildren(ctx); }
+
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation returns the result of calling
+ * {@link #visitChildren} on {@code ctx}.
*/
@Override public T visitAssignmentExpression(@NotNull MetaCodeParser.AssignmentExpressionContext ctx) { return visitChildren(ctx); }
/**
* {@inheritDoc}
- *
- * The default implementation returns the result of calling
- * {@link #visitChildren} on {@code ctx}.
+ *
+ * The default implementation returns the result of calling
+ * {@link #visitChildren} on {@code ctx}.
*/
@Override public T visitInit(@NotNull MetaCodeParser.InitContext ctx) { return visitChildren(ctx); }
/**
* {@inheritDoc}
- *
- * The default implementation returns the result of calling
- * {@link #visitChildren} on {@code ctx}.
+ *
+ * The default implementation returns the result of calling
+ * {@link #visitChildren} on {@code ctx}.
*/
@Override public T visitNumberConstant(@NotNull MetaCodeParser.NumberConstantContext ctx) { return visitChildren(ctx); }
/**
* {@inheritDoc}
- *
- * The default implementation returns the result of calling
- * {@link #visitChildren} on {@code ctx}.
+ *
+ * The default implementation returns the result of calling
+ * {@link #visitChildren} on {@code ctx}.
*/
@Override public T visitIfStatement(@NotNull MetaCodeParser.IfStatementContext ctx) { return visitChildren(ctx); }
/**
* {@inheritDoc}
- *
- * The default implementation returns the result of calling
- * {@link #visitChildren} on {@code ctx}.
+ *
+ * The default implementation returns the result of calling
+ * {@link #visitChildren} on {@code ctx}.
*/
@Override public T visitMemberExpression(@NotNull MetaCodeParser.MemberExpressionContext ctx) { return visitChildren(ctx); }
/**
* {@inheritDoc}
- *
- * The default implementation returns the result of calling
- * {@link #visitChildren} on {@code ctx}.
+ *
+ * The default implementation returns the result of calling
+ * {@link #visitChildren} on {@code ctx}.
*/
@Override public T visitStatement(@NotNull MetaCodeParser.StatementContext ctx) { return visitChildren(ctx); }
/**
* {@inheritDoc}
- *
- * The default implementation returns the result of calling
- * {@link #visitChildren} on {@code ctx}.
+ *
+ * The default implementation returns the result of calling
+ * {@link #visitChildren} on {@code ctx}.
*/
@Override public T visitTypeName(@NotNull MetaCodeParser.TypeNameContext ctx) { return visitChildren(ctx); }
/**
* {@inheritDoc}
- *
- * The default implementation returns the result of calling
- * {@link #visitChildren} on {@code ctx}.
+ *
+ * The default implementation returns the result of calling
+ * {@link #visitChildren} on {@code ctx}.
*/
@Override public T visitWhileStatement(@NotNull MetaCodeParser.WhileStatementContext ctx) { return visitChildren(ctx); }
/**
* {@inheritDoc}
- *
- * The default implementation returns the result of calling
- * {@link #visitChildren} on {@code ctx}.
+ *
+ * The default implementation returns the result of calling
+ * {@link #visitChildren} on {@code ctx}.
*/
@Override public T visitFunctionCallExpression(@NotNull MetaCodeParser.FunctionCallExpressionContext ctx) { return visitChildren(ctx); }
/**
* {@inheritDoc}
- *
- * The default implementation returns the result of calling
- * {@link #visitChildren} on {@code ctx}.
+ *
+ * The default implementation returns the result of calling
+ * {@link #visitChildren} on {@code ctx}.
*/
@Override public T visitAttributes(@NotNull MetaCodeParser.AttributesContext ctx) { return visitChildren(ctx); }
/**
* {@inheritDoc}
- *
- * The default implementation returns the result of calling
- * {@link #visitChildren} on {@code ctx}.
+ *
+ * The default implementation returns the result of calling
+ * {@link #visitChildren} on {@code ctx}.
*/
@Override public T visitArrayConstant(@NotNull MetaCodeParser.ArrayConstantContext ctx) { return visitChildren(ctx); }
/**
* {@inheritDoc}
- *
- * The default implementation returns the result of calling
- * {@link #visitChildren} on {@code ctx}.
+ *
+ * The default implementation returns the result of calling
+ * {@link #visitChildren} on {@code ctx}.
*/
@Override public T visitForeachStatement(@NotNull MetaCodeParser.ForeachStatementContext ctx) { return visitChildren(ctx); }
/**
* {@inheritDoc}
- *
- * The default implementation returns the result of calling
- * {@link #visitChildren} on {@code ctx}.
+ *
+ * The default implementation returns the result of calling
+ * {@link #visitChildren} on {@code ctx}.
*/
- @Override public T visitIdentifier(@NotNull MetaCodeParser.IdentifierContext ctx) { return visitChildren(ctx); }
+ @Override public T visitStringConstant(@NotNull MetaCodeParser.StringConstantContext ctx) { return visitChildren(ctx); }
/**
* {@inheritDoc}
- *
- * The default implementation returns the result of calling
- * {@link #visitChildren} on {@code ctx}.
+ *
+ * The default implementation returns the result of calling
+ * {@link #visitChildren} on {@code ctx}.
*/
- @Override public T visitStringConstant(@NotNull MetaCodeParser.StringConstantContext ctx) { return visitChildren(ctx); }
+ @Override public T visitIdentifier(@NotNull MetaCodeParser.IdentifierContext ctx) { return visitChildren(ctx); }
}
\ No newline at end of file
diff --git a/grammar/src/MetaCodeLexer.class b/grammar/src/MetaCodeLexer.class
index 805e81a..f39c7c9 100644
Binary files a/grammar/src/MetaCodeLexer.class and b/grammar/src/MetaCodeLexer.class differ
diff --git a/grammar/src/MetaCodeLexer.java b/grammar/src/MetaCodeLexer.java
index 5dff5e1..0bb4600 100644
--- a/grammar/src/MetaCodeLexer.java
+++ b/grammar/src/MetaCodeLexer.java
@@ -1,4 +1,4 @@
-// Generated from ../MetaCode.g4 by ANTLR 4.2
+// Generated from ../MetaCode.g4 by ANTLR 4.1
import org.antlr.v4.runtime.Lexer;
import org.antlr.v4.runtime.CharStream;
import org.antlr.v4.runtime.Token;
@@ -18,9 +18,9 @@ public class MetaCodeLexer extends Lexer {
T__9=9, T__8=10, T__7=11, T__6=12, T__5=13, T__4=14, T__3=15, T__2=16,
T__1=17, T__0=18, FUNCTION=19, FOREACH=20, WHILE=21, IF=22, ELSE=23, DO=24,
END=25, BOOLEAN=26, SKIP=27, VAR=28, IN=29, ASSIGN=30, AND=31, OR=32,
- NOT=33, NULL=34, LEFT_PARENTHESIS=35, RIGHT_PARENTHESIS=36, ID=37, COMMENT=38,
- MULTILINE_COMMENT=39, ATTRIBUTE_ID=40, STRING=41, NUMBER=42, WHITESPACE=43,
- NEWLINE=44;
+ NOT=33, NULL=34, RETURN=35, LEFT_PARENTHESIS=36, RIGHT_PARENTHESIS=37,
+ ID=38, COMMENT=39, MULTILINE_COMMENT=40, ATTRIBUTE_ID=41, STRING=42, NUMBER=43,
+ WHITESPACE=44, NEWLINE=45;
public static String[] modeNames = {
"DEFAULT_MODE"
};
@@ -31,14 +31,14 @@ public class MetaCodeLexer extends Lexer {
"';'", "'<='", "'to'", "'>'", "'by'", "'=='", "'/'", "'>='", "'function'",
"'foreach'", "'while'", "'if'", "'else'", "'do'", "'end'", "BOOLEAN",
"'skip'", "'var'", "'in'", "'='", "'and'", "'or'", "'not'", "'null'",
- "'('", "')'", "ID", "COMMENT", "MULTILINE_COMMENT", "ATTRIBUTE_ID", "STRING",
- "NUMBER", "WHITESPACE", "NEWLINE"
+ "'return'", "'('", "')'", "ID", "COMMENT", "MULTILINE_COMMENT", "ATTRIBUTE_ID",
+ "STRING", "NUMBER", "WHITESPACE", "NEWLINE"
};
public static final String[] ruleNames = {
"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", "FUNCTION", "FOREACH", "WHILE", "IF", "ELSE", "DO", "END", "BOOLEAN",
- "SKIP", "VAR", "IN", "ASSIGN", "AND", "OR", "NOT", "NULL", "LEFT_PARENTHESIS",
+ "SKIP", "VAR", "IN", "ASSIGN", "AND", "OR", "NOT", "NULL", "RETURN", "LEFT_PARENTHESIS",
"RIGHT_PARENTHESIS", "ID", "COMMENT", "MULTILINE_COMMENT", "ATTRIBUTE_ID",
"LETTER", "STRING", "NUMBER", "INT", "FLOAT", "DIGIT", "WHITESPACE", "NEWLINE"
};
@@ -58,126 +58,160 @@ public MetaCodeLexer(CharStream input) {
@Override
public String[] getRuleNames() { return ruleNames; }
- @Override
- public String getSerializedATN() { return _serializedATN; }
-
@Override
public String[] getModeNames() { return modeNames; }
@Override
public ATN getATN() { return _ATN; }
+ @Override
+ public void action(RuleContext _localctx, int ruleIndex, int actionIndex) {
+ switch (ruleIndex) {
+ case 38: COMMENT_action((RuleContext)_localctx, actionIndex); break;
+
+ case 39: MULTILINE_COMMENT_action((RuleContext)_localctx, actionIndex); break;
+
+ case 47: WHITESPACE_action((RuleContext)_localctx, actionIndex); break;
+
+ case 48: NEWLINE_action((RuleContext)_localctx, actionIndex); break;
+ }
+ }
+ private void WHITESPACE_action(RuleContext _localctx, int actionIndex) {
+ switch (actionIndex) {
+ case 2: skip(); break;
+ }
+ }
+ private void MULTILINE_COMMENT_action(RuleContext _localctx, int actionIndex) {
+ switch (actionIndex) {
+ case 1: skip(); break;
+ }
+ }
+ private void NEWLINE_action(RuleContext _localctx, int actionIndex) {
+ switch (actionIndex) {
+ case 3: skip(); break;
+ }
+ }
+ private void COMMENT_action(RuleContext _localctx, int actionIndex) {
+ switch (actionIndex) {
+ case 0: skip(); break;
+ }
+ }
+
public static final String _serializedATN =
- "\3\u0430\ud6d1\u8206\uad2d\u4417\uaef1\u8d80\uaadd\2.\u014a\b\1\4\2\t"+
+ "\3\uacf5\uee8c\u4f5d\u8b0d\u4a45\u78bd\u1b2f\u3378\2/\u0153\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\4 \t \4!"+
"\t!\4\"\t\"\4#\t#\4$\t$\4%\t%\4&\t&\4\'\t\'\4(\t(\4)\t)\4*\t*\4+\t+\4"+
- ",\t,\4-\t-\4.\t.\4/\t/\4\60\t\60\4\61\t\61\3\2\3\2\3\3\3\3\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\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\20\3\20\3\20\3\21\3\21\3\21\3\22"+
- "\3\22\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\25\3\25\3\25\3\25\3\25\3\25\3\26\3\26\3\26\3\26\3\26\3\26\3\27"+
- "\3\27\3\27\3\30\3\30\3\30\3\30\3\30\3\31\3\31\3\31\3\32\3\32\3\32\3\32"+
- "\3\33\3\33\3\33\3\33\3\33\3\33\3\33\3\33\3\33\5\33\u00bd\n\33\3\34\3\34"+
- "\3\34\3\34\3\34\3\35\3\35\3\35\3\35\3\36\3\36\3\36\3\37\3\37\3 \3 \3 "+
- "\3 \3!\3!\3!\3\"\3\"\3\"\3\"\3#\3#\3#\3#\3#\3$\3$\3%\3%\3&\3&\5&\u00e3"+
- "\n&\3&\3&\7&\u00e7\n&\f&\16&\u00ea\13&\3\'\3\'\3\'\3\'\7\'\u00f0\n\'\f"+
- "\'\16\'\u00f3\13\'\3\'\3\'\3\'\3\'\3(\3(\3(\3(\7(\u00fd\n(\f(\16(\u0100"+
- "\13(\3(\3(\3(\3(\3(\3)\3)\3)\5)\u010a\n)\3)\3)\7)\u010e\n)\f)\16)\u0111"+
- "\13)\3*\3*\3+\3+\7+\u0117\n+\f+\16+\u011a\13+\3+\3+\3,\3,\5,\u0120\n,"+
- "\3-\6-\u0123\n-\r-\16-\u0124\3.\6.\u0128\n.\r.\16.\u0129\3.\3.\7.\u012e"+
- "\n.\f.\16.\u0131\13.\3.\3.\6.\u0135\n.\r.\16.\u0136\5.\u0139\n.\3/\3/"+
- "\3\60\6\60\u013e\n\60\r\60\16\60\u013f\3\60\3\60\3\61\5\61\u0145\n\61"+
- "\3\61\3\61\3\61\3\61\5\u00f1\u00fe\u0118\2\62\3\3\5\4\7\5\t\6\13\7\r\b"+
- "\17\t\21\n\23\13\25\f\27\r\31\16\33\17\35\20\37\21!\22#\23%\24\'\25)\26"+
- "+\27-\30/\31\61\32\63\33\65\34\67\359\36;\37= ?!A\"C#E$G%I&K\'M(O)Q*S"+
- "\2U+W,Y\2[\2]\2_-a.\3\2\7\4\2\62;aa\5\2//\62;aa\4\2C\\c|\3\2\62;\4\2\13"+
- "\13\"\"\u0157\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\2M\3\2\2\2\2O\3\2\2\2\2Q\3\2\2\2\2"+
- "U\3\2\2\2\2W\3\2\2\2\2_\3\2\2\2\2a\3\2\2\2\3c\3\2\2\2\5e\3\2\2\2\7g\3"+
- "\2\2\2\ti\3\2\2\2\13k\3\2\2\2\rm\3\2\2\2\17o\3\2\2\2\21q\3\2\2\2\23s\3"+
- "\2\2\2\25u\3\2\2\2\27x\3\2\2\2\31z\3\2\2\2\33}\3\2\2\2\35\u0080\3\2\2"+
- "\2\37\u0082\3\2\2\2!\u0085\3\2\2\2#\u0088\3\2\2\2%\u008a\3\2\2\2\'\u008d"+
- "\3\2\2\2)\u0096\3\2\2\2+\u009e\3\2\2\2-\u00a4\3\2\2\2/\u00a7\3\2\2\2\61"+
- "\u00ac\3\2\2\2\63\u00af\3\2\2\2\65\u00bc\3\2\2\2\67\u00be\3\2\2\29\u00c3"+
- "\3\2\2\2;\u00c7\3\2\2\2=\u00ca\3\2\2\2?\u00cc\3\2\2\2A\u00d0\3\2\2\2C"+
- "\u00d3\3\2\2\2E\u00d7\3\2\2\2G\u00dc\3\2\2\2I\u00de\3\2\2\2K\u00e2\3\2"+
- "\2\2M\u00eb\3\2\2\2O\u00f8\3\2\2\2Q\u0106\3\2\2\2S\u0112\3\2\2\2U\u0114"+
- "\3\2\2\2W\u011f\3\2\2\2Y\u0122\3\2\2\2[\u0138\3\2\2\2]\u013a\3\2\2\2_"+
- "\u013d\3\2\2\2a\u0144\3\2\2\2cd\7_\2\2d\4\3\2\2\2ef\7\60\2\2f\6\3\2\2"+
- "\2gh\7.\2\2h\b\3\2\2\2ij\7-\2\2j\n\3\2\2\2kl\7,\2\2l\f\3\2\2\2mn\7/\2"+
- "\2n\16\3\2\2\2op\7]\2\2p\20\3\2\2\2qr\7<\2\2r\22\3\2\2\2st\7>\2\2t\24"+
- "\3\2\2\2uv\7#\2\2vw\7?\2\2w\26\3\2\2\2xy\7=\2\2y\30\3\2\2\2z{\7>\2\2{"+
- "|\7?\2\2|\32\3\2\2\2}~\7v\2\2~\177\7q\2\2\177\34\3\2\2\2\u0080\u0081\7"+
- "@\2\2\u0081\36\3\2\2\2\u0082\u0083\7d\2\2\u0083\u0084\7{\2\2\u0084 \3"+
- "\2\2\2\u0085\u0086\7?\2\2\u0086\u0087\7?\2\2\u0087\"\3\2\2\2\u0088\u0089"+
- "\7\61\2\2\u0089$\3\2\2\2\u008a\u008b\7@\2\2\u008b\u008c\7?\2\2\u008c&"+
- "\3\2\2\2\u008d\u008e\7h\2\2\u008e\u008f\7w\2\2\u008f\u0090\7p\2\2\u0090"+
- "\u0091\7e\2\2\u0091\u0092\7v\2\2\u0092\u0093\7k\2\2\u0093\u0094\7q\2\2"+
- "\u0094\u0095\7p\2\2\u0095(\3\2\2\2\u0096\u0097\7h\2\2\u0097\u0098\7q\2"+
- "\2\u0098\u0099\7t\2\2\u0099\u009a\7g\2\2\u009a\u009b\7c\2\2\u009b\u009c"+
- "\7e\2\2\u009c\u009d\7j\2\2\u009d*\3\2\2\2\u009e\u009f\7y\2\2\u009f\u00a0"+
- "\7j\2\2\u00a0\u00a1\7k\2\2\u00a1\u00a2\7n\2\2\u00a2\u00a3\7g\2\2\u00a3"+
- ",\3\2\2\2\u00a4\u00a5\7k\2\2\u00a5\u00a6\7h\2\2\u00a6.\3\2\2\2\u00a7\u00a8"+
- "\7g\2\2\u00a8\u00a9\7n\2\2\u00a9\u00aa\7u\2\2\u00aa\u00ab\7g\2\2\u00ab"+
- "\60\3\2\2\2\u00ac\u00ad\7f\2\2\u00ad\u00ae\7q\2\2\u00ae\62\3\2\2\2\u00af"+
- "\u00b0\7g\2\2\u00b0\u00b1\7p\2\2\u00b1\u00b2\7f\2\2\u00b2\64\3\2\2\2\u00b3"+
- "\u00b4\7h\2\2\u00b4\u00b5\7c\2\2\u00b5\u00b6\7n\2\2\u00b6\u00b7\7u\2\2"+
- "\u00b7\u00bd\7g\2\2\u00b8\u00b9\7v\2\2\u00b9\u00ba\7t\2\2\u00ba\u00bb"+
- "\7w\2\2\u00bb\u00bd\7g\2\2\u00bc\u00b3\3\2\2\2\u00bc\u00b8\3\2\2\2\u00bd"+
- "\66\3\2\2\2\u00be\u00bf\7u\2\2\u00bf\u00c0\7m\2\2\u00c0\u00c1\7k\2\2\u00c1"+
- "\u00c2\7r\2\2\u00c28\3\2\2\2\u00c3\u00c4\7x\2\2\u00c4\u00c5\7c\2\2\u00c5"+
- "\u00c6\7t\2\2\u00c6:\3\2\2\2\u00c7\u00c8\7k\2\2\u00c8\u00c9\7p\2\2\u00c9"+
- "<\3\2\2\2\u00ca\u00cb\7?\2\2\u00cb>\3\2\2\2\u00cc\u00cd\7c\2\2\u00cd\u00ce"+
- "\7p\2\2\u00ce\u00cf\7f\2\2\u00cf@\3\2\2\2\u00d0\u00d1\7q\2\2\u00d1\u00d2"+
- "\7t\2\2\u00d2B\3\2\2\2\u00d3\u00d4\7p\2\2\u00d4\u00d5\7q\2\2\u00d5\u00d6"+
- "\7v\2\2\u00d6D\3\2\2\2\u00d7\u00d8\7p\2\2\u00d8\u00d9\7w\2\2\u00d9\u00da"+
- "\7n\2\2\u00da\u00db\7n\2\2\u00dbF\3\2\2\2\u00dc\u00dd\7*\2\2\u00ddH\3"+
- "\2\2\2\u00de\u00df\7+\2\2\u00dfJ\3\2\2\2\u00e0\u00e3\5S*\2\u00e1\u00e3"+
- "\7a\2\2\u00e2\u00e0\3\2\2\2\u00e2\u00e1\3\2\2\2\u00e3\u00e8\3\2\2\2\u00e4"+
- "\u00e7\5S*\2\u00e5\u00e7\t\2\2\2\u00e6\u00e4\3\2\2\2\u00e6\u00e5\3\2\2"+
- "\2\u00e7\u00ea\3\2\2\2\u00e8\u00e6\3\2\2\2\u00e8\u00e9\3\2\2\2\u00e9L"+
- "\3\2\2\2\u00ea\u00e8\3\2\2\2\u00eb\u00ec\7\61\2\2\u00ec\u00ed\7\61\2\2"+
- "\u00ed\u00f1\3\2\2\2\u00ee\u00f0\13\2\2\2\u00ef\u00ee\3\2\2\2\u00f0\u00f3"+
- "\3\2\2\2\u00f1\u00f2\3\2\2\2\u00f1\u00ef\3\2\2\2\u00f2\u00f4\3\2\2\2\u00f3"+
- "\u00f1\3\2\2\2\u00f4\u00f5\5a\61\2\u00f5\u00f6\3\2\2\2\u00f6\u00f7\b\'"+
- "\2\2\u00f7N\3\2\2\2\u00f8\u00f9\7\61\2\2\u00f9\u00fa\7,\2\2\u00fa\u00fe"+
- "\3\2\2\2\u00fb\u00fd\13\2\2\2\u00fc\u00fb\3\2\2\2\u00fd\u0100\3\2\2\2"+
- "\u00fe\u00ff\3\2\2\2\u00fe\u00fc\3\2\2\2\u00ff\u0101\3\2\2\2\u0100\u00fe"+
- "\3\2\2\2\u0101\u0102\7,\2\2\u0102\u0103\7\61\2\2\u0103\u0104\3\2\2\2\u0104"+
- "\u0105\b(\2\2\u0105P\3\2\2\2\u0106\u0109\7B\2\2\u0107\u010a\5S*\2\u0108"+
- "\u010a\7a\2\2\u0109\u0107\3\2\2\2\u0109\u0108\3\2\2\2\u010a\u010f\3\2"+
- "\2\2\u010b\u010e\5S*\2\u010c\u010e\t\3\2\2\u010d\u010b\3\2\2\2\u010d\u010c"+
- "\3\2\2\2\u010e\u0111\3\2\2\2\u010f\u010d\3\2\2\2\u010f\u0110\3\2\2\2\u0110"+
- "R\3\2\2\2\u0111\u010f\3\2\2\2\u0112\u0113\t\4\2\2\u0113T\3\2\2\2\u0114"+
- "\u0118\7$\2\2\u0115\u0117\13\2\2\2\u0116\u0115\3\2\2\2\u0117\u011a\3\2"+
- "\2\2\u0118\u0119\3\2\2\2\u0118\u0116\3\2\2\2\u0119\u011b\3\2\2\2\u011a"+
- "\u0118\3\2\2\2\u011b\u011c\7$\2\2\u011cV\3\2\2\2\u011d\u0120\5Y-\2\u011e"+
- "\u0120\5[.\2\u011f\u011d\3\2\2\2\u011f\u011e\3\2\2\2\u0120X\3\2\2\2\u0121"+
- "\u0123\5]/\2\u0122\u0121\3\2\2\2\u0123\u0124\3\2\2\2\u0124\u0122\3\2\2"+
- "\2\u0124\u0125\3\2\2\2\u0125Z\3\2\2\2\u0126\u0128\5]/\2\u0127\u0126\3"+
- "\2\2\2\u0128\u0129\3\2\2\2\u0129\u0127\3\2\2\2\u0129\u012a\3\2\2\2\u012a"+
- "\u012b\3\2\2\2\u012b\u012f\7\60\2\2\u012c\u012e\5]/\2\u012d\u012c\3\2"+
- "\2\2\u012e\u0131\3\2\2\2\u012f\u012d\3\2\2\2\u012f\u0130\3\2\2\2\u0130"+
- "\u0139\3\2\2\2\u0131\u012f\3\2\2\2\u0132\u0134\7\60\2\2\u0133\u0135\5"+
- "]/\2\u0134\u0133\3\2\2\2\u0135\u0136\3\2\2\2\u0136\u0134\3\2\2\2\u0136"+
- "\u0137\3\2\2\2\u0137\u0139\3\2\2\2\u0138\u0127\3\2\2\2\u0138\u0132\3\2"+
- "\2\2\u0139\\\3\2\2\2\u013a\u013b\t\5\2\2\u013b^\3\2\2\2\u013c\u013e\t"+
- "\6\2\2\u013d\u013c\3\2\2\2\u013e\u013f\3\2\2\2\u013f\u013d\3\2\2\2\u013f"+
- "\u0140\3\2\2\2\u0140\u0141\3\2\2\2\u0141\u0142\b\60\2\2\u0142`\3\2\2\2"+
- "\u0143\u0145\7\17\2\2\u0144\u0143\3\2\2\2\u0144\u0145\3\2\2\2\u0145\u0146"+
- "\3\2\2\2\u0146\u0147\7\f\2\2\u0147\u0148\3\2\2\2\u0148\u0149\b\61\2\2"+
- "\u0149b\3\2\2\2\25\2\u00bc\u00e2\u00e6\u00e8\u00f1\u00fe\u0109\u010d\u010f"+
- "\u0118\u011f\u0124\u0129\u012f\u0136\u0138\u013f\u0144\3\b\2\2";
+ ",\t,\4-\t-\4.\t.\4/\t/\4\60\t\60\4\61\t\61\4\62\t\62\3\2\3\2\3\3\3\3\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\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\20\3\20\3\20\3\21\3\21"+
+ "\3\21\3\22\3\22\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\25\3\25\3\25\3\25\3\25\3\25\3\26\3\26\3\26\3\26\3\26"+
+ "\3\26\3\27\3\27\3\27\3\30\3\30\3\30\3\30\3\30\3\31\3\31\3\31\3\32\3\32"+
+ "\3\32\3\32\3\33\3\33\3\33\3\33\3\33\3\33\3\33\3\33\3\33\5\33\u00bf\n\33"+
+ "\3\34\3\34\3\34\3\34\3\34\3\35\3\35\3\35\3\35\3\36\3\36\3\36\3\37\3\37"+
+ "\3 \3 \3 \3 \3!\3!\3!\3\"\3\"\3\"\3\"\3#\3#\3#\3#\3#\3$\3$\3$\3$\3$\3"+
+ "$\3$\3%\3%\3&\3&\3\'\3\'\5\'\u00ec\n\'\3\'\3\'\7\'\u00f0\n\'\f\'\16\'"+
+ "\u00f3\13\'\3(\3(\3(\3(\7(\u00f9\n(\f(\16(\u00fc\13(\3(\3(\3(\3(\3)\3"+
+ ")\3)\3)\7)\u0106\n)\f)\16)\u0109\13)\3)\3)\3)\3)\3)\3*\3*\3*\5*\u0113"+
+ "\n*\3*\3*\7*\u0117\n*\f*\16*\u011a\13*\3+\3+\3,\3,\7,\u0120\n,\f,\16,"+
+ "\u0123\13,\3,\3,\3-\3-\5-\u0129\n-\3.\6.\u012c\n.\r.\16.\u012d\3/\6/\u0131"+
+ "\n/\r/\16/\u0132\3/\3/\7/\u0137\n/\f/\16/\u013a\13/\3/\3/\6/\u013e\n/"+
+ "\r/\16/\u013f\5/\u0142\n/\3\60\3\60\3\61\6\61\u0147\n\61\r\61\16\61\u0148"+
+ "\3\61\3\61\3\62\5\62\u014e\n\62\3\62\3\62\3\62\3\62\5\u00fa\u0107\u0121"+
+ "\63\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?!\1"+
+ "A\"\1C#\1E$\1G%\1I&\1K\'\1M(\1O)\2Q*\3S+\1U\2\1W,\1Y-\1[\2\1]\2\1_\2\1"+
+ "a.\4c/\5\3\2\7\4\2\62;aa\5\2//\62;aa\4\2C\\c|\3\2\62;\4\2\13\13\"\"\u0160"+
+ "\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\2M\3\2\2\2\2O\3\2\2\2\2Q\3\2\2\2\2S\3\2\2\2\2"+
+ "W\3\2\2\2\2Y\3\2\2\2\2a\3\2\2\2\2c\3\2\2\2\3e\3\2\2\2\5g\3\2\2\2\7i\3"+
+ "\2\2\2\tk\3\2\2\2\13m\3\2\2\2\ro\3\2\2\2\17q\3\2\2\2\21s\3\2\2\2\23u\3"+
+ "\2\2\2\25w\3\2\2\2\27z\3\2\2\2\31|\3\2\2\2\33\177\3\2\2\2\35\u0082\3\2"+
+ "\2\2\37\u0084\3\2\2\2!\u0087\3\2\2\2#\u008a\3\2\2\2%\u008c\3\2\2\2\'\u008f"+
+ "\3\2\2\2)\u0098\3\2\2\2+\u00a0\3\2\2\2-\u00a6\3\2\2\2/\u00a9\3\2\2\2\61"+
+ "\u00ae\3\2\2\2\63\u00b1\3\2\2\2\65\u00be\3\2\2\2\67\u00c0\3\2\2\29\u00c5"+
+ "\3\2\2\2;\u00c9\3\2\2\2=\u00cc\3\2\2\2?\u00ce\3\2\2\2A\u00d2\3\2\2\2C"+
+ "\u00d5\3\2\2\2E\u00d9\3\2\2\2G\u00de\3\2\2\2I\u00e5\3\2\2\2K\u00e7\3\2"+
+ "\2\2M\u00eb\3\2\2\2O\u00f4\3\2\2\2Q\u0101\3\2\2\2S\u010f\3\2\2\2U\u011b"+
+ "\3\2\2\2W\u011d\3\2\2\2Y\u0128\3\2\2\2[\u012b\3\2\2\2]\u0141\3\2\2\2_"+
+ "\u0143\3\2\2\2a\u0146\3\2\2\2c\u014d\3\2\2\2ef\7_\2\2f\4\3\2\2\2gh\7\60"+
+ "\2\2h\6\3\2\2\2ij\7.\2\2j\b\3\2\2\2kl\7-\2\2l\n\3\2\2\2mn\7,\2\2n\f\3"+
+ "\2\2\2op\7/\2\2p\16\3\2\2\2qr\7]\2\2r\20\3\2\2\2st\7<\2\2t\22\3\2\2\2"+
+ "uv\7>\2\2v\24\3\2\2\2wx\7#\2\2xy\7?\2\2y\26\3\2\2\2z{\7=\2\2{\30\3\2\2"+
+ "\2|}\7>\2\2}~\7?\2\2~\32\3\2\2\2\177\u0080\7v\2\2\u0080\u0081\7q\2\2\u0081"+
+ "\34\3\2\2\2\u0082\u0083\7@\2\2\u0083\36\3\2\2\2\u0084\u0085\7d\2\2\u0085"+
+ "\u0086\7{\2\2\u0086 \3\2\2\2\u0087\u0088\7?\2\2\u0088\u0089\7?\2\2\u0089"+
+ "\"\3\2\2\2\u008a\u008b\7\61\2\2\u008b$\3\2\2\2\u008c\u008d\7@\2\2\u008d"+
+ "\u008e\7?\2\2\u008e&\3\2\2\2\u008f\u0090\7h\2\2\u0090\u0091\7w\2\2\u0091"+
+ "\u0092\7p\2\2\u0092\u0093\7e\2\2\u0093\u0094\7v\2\2\u0094\u0095\7k\2\2"+
+ "\u0095\u0096\7q\2\2\u0096\u0097\7p\2\2\u0097(\3\2\2\2\u0098\u0099\7h\2"+
+ "\2\u0099\u009a\7q\2\2\u009a\u009b\7t\2\2\u009b\u009c\7g\2\2\u009c\u009d"+
+ "\7c\2\2\u009d\u009e\7e\2\2\u009e\u009f\7j\2\2\u009f*\3\2\2\2\u00a0\u00a1"+
+ "\7y\2\2\u00a1\u00a2\7j\2\2\u00a2\u00a3\7k\2\2\u00a3\u00a4\7n\2\2\u00a4"+
+ "\u00a5\7g\2\2\u00a5,\3\2\2\2\u00a6\u00a7\7k\2\2\u00a7\u00a8\7h\2\2\u00a8"+
+ ".\3\2\2\2\u00a9\u00aa\7g\2\2\u00aa\u00ab\7n\2\2\u00ab\u00ac\7u\2\2\u00ac"+
+ "\u00ad\7g\2\2\u00ad\60\3\2\2\2\u00ae\u00af\7f\2\2\u00af\u00b0\7q\2\2\u00b0"+
+ "\62\3\2\2\2\u00b1\u00b2\7g\2\2\u00b2\u00b3\7p\2\2\u00b3\u00b4\7f\2\2\u00b4"+
+ "\64\3\2\2\2\u00b5\u00b6\7h\2\2\u00b6\u00b7\7c\2\2\u00b7\u00b8\7n\2\2\u00b8"+
+ "\u00b9\7u\2\2\u00b9\u00bf\7g\2\2\u00ba\u00bb\7v\2\2\u00bb\u00bc\7t\2\2"+
+ "\u00bc\u00bd\7w\2\2\u00bd\u00bf\7g\2\2\u00be\u00b5\3\2\2\2\u00be\u00ba"+
+ "\3\2\2\2\u00bf\66\3\2\2\2\u00c0\u00c1\7u\2\2\u00c1\u00c2\7m\2\2\u00c2"+
+ "\u00c3\7k\2\2\u00c3\u00c4\7r\2\2\u00c48\3\2\2\2\u00c5\u00c6\7x\2\2\u00c6"+
+ "\u00c7\7c\2\2\u00c7\u00c8\7t\2\2\u00c8:\3\2\2\2\u00c9\u00ca\7k\2\2\u00ca"+
+ "\u00cb\7p\2\2\u00cb<\3\2\2\2\u00cc\u00cd\7?\2\2\u00cd>\3\2\2\2\u00ce\u00cf"+
+ "\7c\2\2\u00cf\u00d0\7p\2\2\u00d0\u00d1\7f\2\2\u00d1@\3\2\2\2\u00d2\u00d3"+
+ "\7q\2\2\u00d3\u00d4\7t\2\2\u00d4B\3\2\2\2\u00d5\u00d6\7p\2\2\u00d6\u00d7"+
+ "\7q\2\2\u00d7\u00d8\7v\2\2\u00d8D\3\2\2\2\u00d9\u00da\7p\2\2\u00da\u00db"+
+ "\7w\2\2\u00db\u00dc\7n\2\2\u00dc\u00dd\7n\2\2\u00ddF\3\2\2\2\u00de\u00df"+
+ "\7t\2\2\u00df\u00e0\7g\2\2\u00e0\u00e1\7v\2\2\u00e1\u00e2\7w\2\2\u00e2"+
+ "\u00e3\7t\2\2\u00e3\u00e4\7p\2\2\u00e4H\3\2\2\2\u00e5\u00e6\7*\2\2\u00e6"+
+ "J\3\2\2\2\u00e7\u00e8\7+\2\2\u00e8L\3\2\2\2\u00e9\u00ec\5U+\2\u00ea\u00ec"+
+ "\7a\2\2\u00eb\u00e9\3\2\2\2\u00eb\u00ea\3\2\2\2\u00ec\u00f1\3\2\2\2\u00ed"+
+ "\u00f0\5U+\2\u00ee\u00f0\t\2\2\2\u00ef\u00ed\3\2\2\2\u00ef\u00ee\3\2\2"+
+ "\2\u00f0\u00f3\3\2\2\2\u00f1\u00ef\3\2\2\2\u00f1\u00f2\3\2\2\2\u00f2N"+
+ "\3\2\2\2\u00f3\u00f1\3\2\2\2\u00f4\u00f5\7\61\2\2\u00f5\u00f6\7\61\2\2"+
+ "\u00f6\u00fa\3\2\2\2\u00f7\u00f9\13\2\2\2\u00f8\u00f7\3\2\2\2\u00f9\u00fc"+
+ "\3\2\2\2\u00fa\u00fb\3\2\2\2\u00fa\u00f8\3\2\2\2\u00fb\u00fd\3\2\2\2\u00fc"+
+ "\u00fa\3\2\2\2\u00fd\u00fe\5c\62\2\u00fe\u00ff\3\2\2\2\u00ff\u0100\b("+
+ "\2\2\u0100P\3\2\2\2\u0101\u0102\7\61\2\2\u0102\u0103\7,\2\2\u0103\u0107"+
+ "\3\2\2\2\u0104\u0106\13\2\2\2\u0105\u0104\3\2\2\2\u0106\u0109\3\2\2\2"+
+ "\u0107\u0108\3\2\2\2\u0107\u0105\3\2\2\2\u0108\u010a\3\2\2\2\u0109\u0107"+
+ "\3\2\2\2\u010a\u010b\7,\2\2\u010b\u010c\7\61\2\2\u010c\u010d\3\2\2\2\u010d"+
+ "\u010e\b)\3\2\u010eR\3\2\2\2\u010f\u0112\7B\2\2\u0110\u0113\5U+\2\u0111"+
+ "\u0113\7a\2\2\u0112\u0110\3\2\2\2\u0112\u0111\3\2\2\2\u0113\u0118\3\2"+
+ "\2\2\u0114\u0117\5U+\2\u0115\u0117\t\3\2\2\u0116\u0114\3\2\2\2\u0116\u0115"+
+ "\3\2\2\2\u0117\u011a\3\2\2\2\u0118\u0116\3\2\2\2\u0118\u0119\3\2\2\2\u0119"+
+ "T\3\2\2\2\u011a\u0118\3\2\2\2\u011b\u011c\t\4\2\2\u011cV\3\2\2\2\u011d"+
+ "\u0121\7$\2\2\u011e\u0120\13\2\2\2\u011f\u011e\3\2\2\2\u0120\u0123\3\2"+
+ "\2\2\u0121\u0122\3\2\2\2\u0121\u011f\3\2\2\2\u0122\u0124\3\2\2\2\u0123"+
+ "\u0121\3\2\2\2\u0124\u0125\7$\2\2\u0125X\3\2\2\2\u0126\u0129\5[.\2\u0127"+
+ "\u0129\5]/\2\u0128\u0126\3\2\2\2\u0128\u0127\3\2\2\2\u0129Z\3\2\2\2\u012a"+
+ "\u012c\5_\60\2\u012b\u012a\3\2\2\2\u012c\u012d\3\2\2\2\u012d\u012b\3\2"+
+ "\2\2\u012d\u012e\3\2\2\2\u012e\\\3\2\2\2\u012f\u0131\5_\60\2\u0130\u012f"+
+ "\3\2\2\2\u0131\u0132\3\2\2\2\u0132\u0130\3\2\2\2\u0132\u0133\3\2\2\2\u0133"+
+ "\u0134\3\2\2\2\u0134\u0138\7\60\2\2\u0135\u0137\5_\60\2\u0136\u0135\3"+
+ "\2\2\2\u0137\u013a\3\2\2\2\u0138\u0136\3\2\2\2\u0138\u0139\3\2\2\2\u0139"+
+ "\u0142\3\2\2\2\u013a\u0138\3\2\2\2\u013b\u013d\7\60\2\2\u013c\u013e\5"+
+ "_\60\2\u013d\u013c\3\2\2\2\u013e\u013f\3\2\2\2\u013f\u013d\3\2\2\2\u013f"+
+ "\u0140\3\2\2\2\u0140\u0142\3\2\2\2\u0141\u0130\3\2\2\2\u0141\u013b\3\2"+
+ "\2\2\u0142^\3\2\2\2\u0143\u0144\t\5\2\2\u0144`\3\2\2\2\u0145\u0147\t\6"+
+ "\2\2\u0146\u0145\3\2\2\2\u0147\u0148\3\2\2\2\u0148\u0146\3\2\2\2\u0148"+
+ "\u0149\3\2\2\2\u0149\u014a\3\2\2\2\u014a\u014b\b\61\4\2\u014bb\3\2\2\2"+
+ "\u014c\u014e\7\17\2\2\u014d\u014c\3\2\2\2\u014d\u014e\3\2\2\2\u014e\u014f"+
+ "\3\2\2\2\u014f\u0150\7\f\2\2\u0150\u0151\3\2\2\2\u0151\u0152\b\62\5\2"+
+ "\u0152d\3\2\2\2\25\2\u00be\u00eb\u00ef\u00f1\u00fa\u0107\u0112\u0116\u0118"+
+ "\u0121\u0128\u012d\u0132\u0138\u013f\u0141\u0148\u014d";
public static final ATN _ATN =
- new ATNDeserializer().deserialize(_serializedATN.toCharArray());
+ ATNSimulator.deserialize(_serializedATN.toCharArray());
static {
_decisionToDFA = new DFA[_ATN.getNumberOfDecisions()];
for (int i = 0; i < _ATN.getNumberOfDecisions(); i++) {
diff --git a/grammar/src/MetaCodeLexer.tokens b/grammar/src/MetaCodeLexer.tokens
index 7b17149..e763b7a 100644
--- a/grammar/src/MetaCodeLexer.tokens
+++ b/grammar/src/MetaCodeLexer.tokens
@@ -2,12 +2,12 @@ FUNCTION=19
WHILE=21
NULL=34
ELSE=23
-NUMBER=42
-ATTRIBUTE_ID=40
-WHITESPACE=43
+NUMBER=43
+ATTRIBUTE_ID=41
+WHITESPACE=44
DO=24
NOT=33
-ID=37
+ID=38
AND=31
T__9=9
T__8=10
@@ -17,31 +17,32 @@ T__5=13
IF=22
SKIP=27
T__4=14
-MULTILINE_COMMENT=39
+MULTILINE_COMMENT=40
BOOLEAN=26
T__16=2
IN=29
T__15=3
-NEWLINE=44
-RIGHT_PARENTHESIS=36
+NEWLINE=45
+RIGHT_PARENTHESIS=37
T__17=1
T__12=6
T__11=7
T__14=4
-LEFT_PARENTHESIS=35
+LEFT_PARENTHESIS=36
T__13=5
T__1=17
T__0=18
OR=32
T__10=8
T__3=15
+RETURN=35
ASSIGN=30
T__2=16
VAR=28
FOREACH=20
-COMMENT=38
+COMMENT=39
END=25
-STRING=41
+STRING=42
'foreach'=20
'end'=25
'>='=18
@@ -50,9 +51,10 @@ STRING=41
'null'=34
'>'=14
';'=11
+'return'=35
'='=30
'+'=4
-')'=36
+')'=37
'.'=2
'function'=19
'do'=24
@@ -66,7 +68,7 @@ STRING=41
'!='=10
'<'=9
'if'=22
-'('=35
+'('=36
'not'=33
':'=8
'or'=32
diff --git a/grammar/src/MetaCodeListener.class b/grammar/src/MetaCodeListener.class
index b659616..9adde38 100644
Binary files a/grammar/src/MetaCodeListener.class and b/grammar/src/MetaCodeListener.class differ
diff --git a/grammar/src/MetaCodeListener.java b/grammar/src/MetaCodeListener.java
index a47c418..53fd37a 100644
--- a/grammar/src/MetaCodeListener.java
+++ b/grammar/src/MetaCodeListener.java
@@ -1,4 +1,4 @@
-// Generated from ../MetaCode.g4 by ANTLR 4.2
+// Generated from ../MetaCode.g4 by ANTLR 4.1
import org.antlr.v4.runtime.misc.NotNull;
import org.antlr.v4.runtime.tree.ParseTreeListener;
@@ -29,6 +29,17 @@ public interface MetaCodeListener extends ParseTreeListener {
*/
void exitFormalParameter(@NotNull MetaCodeParser.FormalParameterContext ctx);
+ /**
+ * Enter a parse tree produced by {@link MetaCodeParser#returnStatement}.
+ * @param ctx the parse tree
+ */
+ void enterReturnStatement(@NotNull MetaCodeParser.ReturnStatementContext ctx);
+ /**
+ * Exit a parse tree produced by {@link MetaCodeParser#returnStatement}.
+ * @param ctx the parse tree
+ */
+ void exitReturnStatement(@NotNull MetaCodeParser.ReturnStatementContext ctx);
+
/**
* Enter a parse tree produced by {@link MetaCodeParser#attribute}.
* @param ctx the parse tree
@@ -172,6 +183,17 @@ public interface MetaCodeListener extends ParseTreeListener {
*/
void exitBooleanConstant(@NotNull MetaCodeParser.BooleanConstantContext ctx);
+ /**
+ * Enter a parse tree produced by {@link MetaCodeParser#memberTagExpression}.
+ * @param ctx the parse tree
+ */
+ void enterMemberTagExpression(@NotNull MetaCodeParser.MemberTagExpressionContext ctx);
+ /**
+ * Exit a parse tree produced by {@link MetaCodeParser#memberTagExpression}.
+ * @param ctx the parse tree
+ */
+ void exitMemberTagExpression(@NotNull MetaCodeParser.MemberTagExpressionContext ctx);
+
/**
* Enter a parse tree produced by {@link MetaCodeParser#assignmentExpression}.
* @param ctx the parse tree
@@ -305,24 +327,24 @@ public interface MetaCodeListener extends ParseTreeListener {
void exitForeachStatement(@NotNull MetaCodeParser.ForeachStatementContext ctx);
/**
- * Enter a parse tree produced by {@link MetaCodeParser#identifier}.
+ * Enter a parse tree produced by {@link MetaCodeParser#stringConstant}.
* @param ctx the parse tree
*/
- void enterIdentifier(@NotNull MetaCodeParser.IdentifierContext ctx);
+ void enterStringConstant(@NotNull MetaCodeParser.StringConstantContext ctx);
/**
- * Exit a parse tree produced by {@link MetaCodeParser#identifier}.
+ * Exit a parse tree produced by {@link MetaCodeParser#stringConstant}.
* @param ctx the parse tree
*/
- void exitIdentifier(@NotNull MetaCodeParser.IdentifierContext ctx);
+ void exitStringConstant(@NotNull MetaCodeParser.StringConstantContext ctx);
/**
- * Enter a parse tree produced by {@link MetaCodeParser#stringConstant}.
+ * Enter a parse tree produced by {@link MetaCodeParser#identifier}.
* @param ctx the parse tree
*/
- void enterStringConstant(@NotNull MetaCodeParser.StringConstantContext ctx);
+ void enterIdentifier(@NotNull MetaCodeParser.IdentifierContext ctx);
/**
- * Exit a parse tree produced by {@link MetaCodeParser#stringConstant}.
+ * Exit a parse tree produced by {@link MetaCodeParser#identifier}.
* @param ctx the parse tree
*/
- void exitStringConstant(@NotNull MetaCodeParser.StringConstantContext ctx);
+ void exitIdentifier(@NotNull MetaCodeParser.IdentifierContext ctx);
}
\ No newline at end of file
diff --git a/grammar/src/MetaCodeParser$ActualParameterListContext.class b/grammar/src/MetaCodeParser$ActualParameterListContext.class
index 0310b4b..473950a 100644
Binary files a/grammar/src/MetaCodeParser$ActualParameterListContext.class and b/grammar/src/MetaCodeParser$ActualParameterListContext.class differ
diff --git a/grammar/src/MetaCodeParser$ArrayConstantContext.class b/grammar/src/MetaCodeParser$ArrayConstantContext.class
index 65ae2b3..9b9d152 100644
Binary files a/grammar/src/MetaCodeParser$ArrayConstantContext.class and b/grammar/src/MetaCodeParser$ArrayConstantContext.class differ
diff --git a/grammar/src/MetaCodeParser$AssignmentExpressionContext.class b/grammar/src/MetaCodeParser$AssignmentExpressionContext.class
index 5270337..35f47cf 100644
Binary files a/grammar/src/MetaCodeParser$AssignmentExpressionContext.class and b/grammar/src/MetaCodeParser$AssignmentExpressionContext.class differ
diff --git a/grammar/src/MetaCodeParser$AttributeContext.class b/grammar/src/MetaCodeParser$AttributeContext.class
index 20bf382..e53cbb2 100644
Binary files a/grammar/src/MetaCodeParser$AttributeContext.class and b/grammar/src/MetaCodeParser$AttributeContext.class differ
diff --git a/grammar/src/MetaCodeParser$AttributesContext.class b/grammar/src/MetaCodeParser$AttributesContext.class
index cadd7ba..c41f67d 100644
Binary files a/grammar/src/MetaCodeParser$AttributesContext.class and b/grammar/src/MetaCodeParser$AttributesContext.class differ
diff --git a/grammar/src/MetaCodeParser$BlockStatementContext.class b/grammar/src/MetaCodeParser$BlockStatementContext.class
index b81a47f..6d1e9b9 100644
Binary files a/grammar/src/MetaCodeParser$BlockStatementContext.class and b/grammar/src/MetaCodeParser$BlockStatementContext.class differ
diff --git a/grammar/src/MetaCodeParser$BooleanConstantContext.class b/grammar/src/MetaCodeParser$BooleanConstantContext.class
index d763633..6d1f1c8 100644
Binary files a/grammar/src/MetaCodeParser$BooleanConstantContext.class and b/grammar/src/MetaCodeParser$BooleanConstantContext.class differ
diff --git a/grammar/src/MetaCodeParser$ConstantContext.class b/grammar/src/MetaCodeParser$ConstantContext.class
index 0fc9787..ad03d7d 100644
Binary files a/grammar/src/MetaCodeParser$ConstantContext.class and b/grammar/src/MetaCodeParser$ConstantContext.class differ
diff --git a/grammar/src/MetaCodeParser$ElseIfStatementContext.class b/grammar/src/MetaCodeParser$ElseIfStatementContext.class
index dd42e50..f2776d2 100644
Binary files a/grammar/src/MetaCodeParser$ElseIfStatementContext.class and b/grammar/src/MetaCodeParser$ElseIfStatementContext.class differ
diff --git a/grammar/src/MetaCodeParser$ExpressionContext.class b/grammar/src/MetaCodeParser$ExpressionContext.class
index af0b2f2..60d4901 100644
Binary files a/grammar/src/MetaCodeParser$ExpressionContext.class and b/grammar/src/MetaCodeParser$ExpressionContext.class differ
diff --git a/grammar/src/MetaCodeParser$ForeachStatementContext.class b/grammar/src/MetaCodeParser$ForeachStatementContext.class
index 9646d71..187f9ce 100644
Binary files a/grammar/src/MetaCodeParser$ForeachStatementContext.class and b/grammar/src/MetaCodeParser$ForeachStatementContext.class differ
diff --git a/grammar/src/MetaCodeParser$FormalParameterContext.class b/grammar/src/MetaCodeParser$FormalParameterContext.class
index 3894d08..d37b2ff 100644
Binary files a/grammar/src/MetaCodeParser$FormalParameterContext.class and b/grammar/src/MetaCodeParser$FormalParameterContext.class differ
diff --git a/grammar/src/MetaCodeParser$FormalParameterListContext.class b/grammar/src/MetaCodeParser$FormalParameterListContext.class
index db10e0b..657d9a2 100644
Binary files a/grammar/src/MetaCodeParser$FormalParameterListContext.class and b/grammar/src/MetaCodeParser$FormalParameterListContext.class differ
diff --git a/grammar/src/MetaCodeParser$FunctionCallExpressionContext.class b/grammar/src/MetaCodeParser$FunctionCallExpressionContext.class
index 17e7b42..9137914 100644
Binary files a/grammar/src/MetaCodeParser$FunctionCallExpressionContext.class and b/grammar/src/MetaCodeParser$FunctionCallExpressionContext.class differ
diff --git a/grammar/src/MetaCodeParser$FunctionExpressionContext.class b/grammar/src/MetaCodeParser$FunctionExpressionContext.class
index 0211ad5..6771e9b 100644
Binary files a/grammar/src/MetaCodeParser$FunctionExpressionContext.class and b/grammar/src/MetaCodeParser$FunctionExpressionContext.class differ
diff --git a/grammar/src/MetaCodeParser$IdentifierContext.class b/grammar/src/MetaCodeParser$IdentifierContext.class
index 3727e4c..70c614f 100644
Binary files a/grammar/src/MetaCodeParser$IdentifierContext.class and b/grammar/src/MetaCodeParser$IdentifierContext.class differ
diff --git a/grammar/src/MetaCodeParser$IfStatementContext.class b/grammar/src/MetaCodeParser$IfStatementContext.class
index 75786e2..2fe22d3 100644
Binary files a/grammar/src/MetaCodeParser$IfStatementContext.class and b/grammar/src/MetaCodeParser$IfStatementContext.class differ
diff --git a/grammar/src/MetaCodeParser$InitContext.class b/grammar/src/MetaCodeParser$InitContext.class
index 44c141a..cc3e06a 100644
Binary files a/grammar/src/MetaCodeParser$InitContext.class and b/grammar/src/MetaCodeParser$InitContext.class differ
diff --git a/grammar/src/MetaCodeParser$IntervalConstantContext.class b/grammar/src/MetaCodeParser$IntervalConstantContext.class
index 229ce6e..a1805f2 100644
Binary files a/grammar/src/MetaCodeParser$IntervalConstantContext.class and b/grammar/src/MetaCodeParser$IntervalConstantContext.class differ
diff --git a/grammar/src/MetaCodeParser$MemberExpressionContext.class b/grammar/src/MetaCodeParser$MemberExpressionContext.class
index 6e20715..2c31e96 100644
Binary files a/grammar/src/MetaCodeParser$MemberExpressionContext.class and b/grammar/src/MetaCodeParser$MemberExpressionContext.class differ
diff --git a/grammar/src/MetaCodeParser$MemberTagExpressionContext.class b/grammar/src/MetaCodeParser$MemberTagExpressionContext.class
new file mode 100644
index 0000000..6257117
Binary files /dev/null and b/grammar/src/MetaCodeParser$MemberTagExpressionContext.class differ
diff --git a/grammar/src/MetaCodeParser$NumberConstantContext.class b/grammar/src/MetaCodeParser$NumberConstantContext.class
index abea3dd..67707a4 100644
Binary files a/grammar/src/MetaCodeParser$NumberConstantContext.class and b/grammar/src/MetaCodeParser$NumberConstantContext.class differ
diff --git a/grammar/src/MetaCodeParser$PrimaryExpressionContext.class b/grammar/src/MetaCodeParser$PrimaryExpressionContext.class
index 7de5194..820b269 100644
Binary files a/grammar/src/MetaCodeParser$PrimaryExpressionContext.class and b/grammar/src/MetaCodeParser$PrimaryExpressionContext.class differ
diff --git a/grammar/src/MetaCodeParser$ReturnStatementContext.class b/grammar/src/MetaCodeParser$ReturnStatementContext.class
new file mode 100644
index 0000000..373e85c
Binary files /dev/null and b/grammar/src/MetaCodeParser$ReturnStatementContext.class differ
diff --git a/grammar/src/MetaCodeParser$SkipStatementContext.class b/grammar/src/MetaCodeParser$SkipStatementContext.class
index 7b575c5..9a8632b 100644
Binary files a/grammar/src/MetaCodeParser$SkipStatementContext.class and b/grammar/src/MetaCodeParser$SkipStatementContext.class differ
diff --git a/grammar/src/MetaCodeParser$StatementContext.class b/grammar/src/MetaCodeParser$StatementContext.class
index a7e3de0..eb6ccad 100644
Binary files a/grammar/src/MetaCodeParser$StatementContext.class and b/grammar/src/MetaCodeParser$StatementContext.class differ
diff --git a/grammar/src/MetaCodeParser$StatementsContext.class b/grammar/src/MetaCodeParser$StatementsContext.class
index 9e14d60..1e083ff 100644
Binary files a/grammar/src/MetaCodeParser$StatementsContext.class and b/grammar/src/MetaCodeParser$StatementsContext.class differ
diff --git a/grammar/src/MetaCodeParser$StringConstantContext.class b/grammar/src/MetaCodeParser$StringConstantContext.class
index 34427b8..4321530 100644
Binary files a/grammar/src/MetaCodeParser$StringConstantContext.class and b/grammar/src/MetaCodeParser$StringConstantContext.class differ
diff --git a/grammar/src/MetaCodeParser$TypeNameContext.class b/grammar/src/MetaCodeParser$TypeNameContext.class
index c4f854b..c30e733 100644
Binary files a/grammar/src/MetaCodeParser$TypeNameContext.class and b/grammar/src/MetaCodeParser$TypeNameContext.class differ
diff --git a/grammar/src/MetaCodeParser$VariableDeclarationContext.class b/grammar/src/MetaCodeParser$VariableDeclarationContext.class
index dcc49b8..b3ab5ba 100644
Binary files a/grammar/src/MetaCodeParser$VariableDeclarationContext.class and b/grammar/src/MetaCodeParser$VariableDeclarationContext.class differ
diff --git a/grammar/src/MetaCodeParser$WhileStatementContext.class b/grammar/src/MetaCodeParser$WhileStatementContext.class
index 014b5ce..99a94a4 100644
Binary files a/grammar/src/MetaCodeParser$WhileStatementContext.class and b/grammar/src/MetaCodeParser$WhileStatementContext.class differ
diff --git a/grammar/src/MetaCodeParser.class b/grammar/src/MetaCodeParser.class
index 297eb2b..33076ca 100644
Binary files a/grammar/src/MetaCodeParser.class and b/grammar/src/MetaCodeParser.class differ
diff --git a/grammar/src/MetaCodeParser.java b/grammar/src/MetaCodeParser.java
index f91bc77..1b6891e 100644
--- a/grammar/src/MetaCodeParser.java
+++ b/grammar/src/MetaCodeParser.java
@@ -1,4 +1,4 @@
-// Generated from ../MetaCode.g4 by ANTLR 4.2
+// Generated from ../MetaCode.g4 by ANTLR 4.1
import org.antlr.v4.runtime.atn.*;
import org.antlr.v4.runtime.dfa.DFA;
import org.antlr.v4.runtime.*;
@@ -18,35 +18,37 @@ public class MetaCodeParser extends Parser {
T__9=9, T__8=10, T__7=11, T__6=12, T__5=13, T__4=14, T__3=15, T__2=16,
T__1=17, T__0=18, FUNCTION=19, FOREACH=20, WHILE=21, IF=22, ELSE=23, DO=24,
END=25, BOOLEAN=26, SKIP=27, VAR=28, IN=29, ASSIGN=30, AND=31, OR=32,
- NOT=33, NULL=34, LEFT_PARENTHESIS=35, RIGHT_PARENTHESIS=36, ID=37, COMMENT=38,
- MULTILINE_COMMENT=39, ATTRIBUTE_ID=40, STRING=41, NUMBER=42, WHITESPACE=43,
- NEWLINE=44;
+ NOT=33, NULL=34, RETURN=35, LEFT_PARENTHESIS=36, RIGHT_PARENTHESIS=37,
+ ID=38, COMMENT=39, MULTILINE_COMMENT=40, ATTRIBUTE_ID=41, STRING=42, NUMBER=43,
+ WHITESPACE=44, NEWLINE=45;
public static final String[] tokenNames = {
"", "']'", "'.'", "','", "'+'", "'*'", "'-'", "'['", "':'", "'<'",
"'!='", "';'", "'<='", "'to'", "'>'", "'by'", "'=='", "'/'", "'>='", "'function'",
"'foreach'", "'while'", "'if'", "'else'", "'do'", "'end'", "BOOLEAN",
"'skip'", "'var'", "'in'", "'='", "'and'", "'or'", "'not'", "'null'",
- "'('", "')'", "ID", "COMMENT", "MULTILINE_COMMENT", "ATTRIBUTE_ID", "STRING",
- "NUMBER", "WHITESPACE", "NEWLINE"
+ "'return'", "'('", "')'", "ID", "COMMENT", "MULTILINE_COMMENT", "ATTRIBUTE_ID",
+ "STRING", "NUMBER", "WHITESPACE", "NEWLINE"
};
public static final int
RULE_init = 0, RULE_statements = 1, RULE_statement = 2, RULE_variableDeclaration = 3,
RULE_expression = 4, RULE_functionCallExpression = 5, RULE_memberExpression = 6,
- RULE_primaryExpression = 7, RULE_functionExpression = 8, RULE_foreachStatement = 9,
- RULE_whileStatement = 10, RULE_blockStatement = 11, RULE_skipStatement = 12,
- RULE_assignmentExpression = 13, RULE_ifStatement = 14, RULE_elseIfStatement = 15,
- RULE_formalParameterList = 16, RULE_formalParameter = 17, RULE_actualParameterList = 18,
- RULE_typeName = 19, RULE_constant = 20, RULE_identifier = 21, RULE_numberConstant = 22,
- RULE_stringConstant = 23, RULE_booleanConstant = 24, RULE_arrayConstant = 25,
- RULE_intervalConstant = 26, RULE_attributes = 27, RULE_attribute = 28;
+ RULE_memberTagExpression = 7, RULE_primaryExpression = 8, RULE_functionExpression = 9,
+ RULE_foreachStatement = 10, RULE_whileStatement = 11, RULE_blockStatement = 12,
+ RULE_skipStatement = 13, RULE_returnStatement = 14, RULE_assignmentExpression = 15,
+ RULE_ifStatement = 16, RULE_elseIfStatement = 17, RULE_formalParameterList = 18,
+ RULE_formalParameter = 19, RULE_actualParameterList = 20, RULE_typeName = 21,
+ RULE_constant = 22, RULE_identifier = 23, RULE_numberConstant = 24, RULE_stringConstant = 25,
+ RULE_booleanConstant = 26, RULE_arrayConstant = 27, RULE_intervalConstant = 28,
+ RULE_attributes = 29, RULE_attribute = 30;
public static final String[] ruleNames = {
"init", "statements", "statement", "variableDeclaration", "expression",
- "functionCallExpression", "memberExpression", "primaryExpression", "functionExpression",
- "foreachStatement", "whileStatement", "blockStatement", "skipStatement",
- "assignmentExpression", "ifStatement", "elseIfStatement", "formalParameterList",
- "formalParameter", "actualParameterList", "typeName", "constant", "identifier",
- "numberConstant", "stringConstant", "booleanConstant", "arrayConstant",
- "intervalConstant", "attributes", "attribute"
+ "functionCallExpression", "memberExpression", "memberTagExpression", "primaryExpression",
+ "functionExpression", "foreachStatement", "whileStatement", "blockStatement",
+ "skipStatement", "returnStatement", "assignmentExpression", "ifStatement",
+ "elseIfStatement", "formalParameterList", "formalParameter", "actualParameterList",
+ "typeName", "constant", "identifier", "numberConstant", "stringConstant",
+ "booleanConstant", "arrayConstant", "intervalConstant", "attributes",
+ "attribute"
};
@Override
@@ -58,9 +60,6 @@ public class MetaCodeParser extends Parser {
@Override
public String[] getRuleNames() { return ruleNames; }
- @Override
- public String getSerializedATN() { return _serializedATN; }
-
@Override
public ATN getATN() { return _ATN; }
@@ -97,7 +96,7 @@ public final InitContext init() throws RecognitionException {
try {
enterOuterAlt(_localctx, 1);
{
- setState(58); statements();
+ setState(62); statements();
}
}
catch (RecognitionException re) {
@@ -144,20 +143,20 @@ public final StatementsContext statements() throws RecognitionException {
try {
enterOuterAlt(_localctx, 1);
{
- setState(63);
+ setState(67);
_errHandler.sync(this);
_la = _input.LA(1);
do {
{
{
- setState(60); statement();
- setState(61); match(11);
+ setState(64); statement();
+ setState(65); match(11);
}
}
- setState(65);
+ setState(69);
_errHandler.sync(this);
_la = _input.LA(1);
- } while ( (((_la) & ~0x3f) == 0 && ((1L << _la) & ((1L << 7) | (1L << FUNCTION) | (1L << FOREACH) | (1L << WHILE) | (1L << IF) | (1L << DO) | (1L << BOOLEAN) | (1L << SKIP) | (1L << VAR) | (1L << NOT) | (1L << LEFT_PARENTHESIS) | (1L << ID) | (1L << ATTRIBUTE_ID) | (1L << STRING) | (1L << NUMBER))) != 0) );
+ } while ( (((_la) & ~0x3f) == 0 && ((1L << _la) & ((1L << 7) | (1L << FUNCTION) | (1L << FOREACH) | (1L << WHILE) | (1L << IF) | (1L << DO) | (1L << BOOLEAN) | (1L << SKIP) | (1L << VAR) | (1L << NOT) | (1L << RETURN) | (1L << LEFT_PARENTHESIS) | (1L << ID) | (1L << ATTRIBUTE_ID) | (1L << STRING) | (1L << NUMBER))) != 0) );
}
}
catch (RecognitionException re) {
@@ -173,6 +172,7 @@ public final StatementsContext statements() throws RecognitionException {
public static class StatementContext extends ParserRuleContext {
public ExpressionContext Expression;
+ public ReturnStatementContext Return;
public AttributesContext Attributes;
public VariableDeclarationContext VariableDeclaration;
public IfStatementContext If;
@@ -192,6 +192,9 @@ public IfStatementContext ifStatement() {
public SkipStatementContext skipStatement() {
return getRuleContext(SkipStatementContext.class,0);
}
+ public ReturnStatementContext returnStatement() {
+ return getRuleContext(ReturnStatementContext.class,0);
+ }
public WhileStatementContext whileStatement() {
return getRuleContext(WhileStatementContext.class,0);
}
@@ -228,102 +231,109 @@ public final StatementContext statement() throws RecognitionException {
enterRule(_localctx, 4, RULE_statement);
int _la;
try {
- setState(92);
+ setState(97);
switch ( getInterpreter().adaptivePredict(_input,7,_ctx) ) {
case 1:
enterOuterAlt(_localctx, 1);
{
- setState(67); ((StatementContext)_localctx).Expression = expression(0);
+ setState(71); ((StatementContext)_localctx).Expression = expression(0);
}
break;
case 2:
enterOuterAlt(_localctx, 2);
{
- setState(69);
- switch ( getInterpreter().adaptivePredict(_input,1,_ctx) ) {
- case 1:
- {
- setState(68); ((StatementContext)_localctx).Attributes = attributes();
- }
- break;
- }
- setState(71); ((StatementContext)_localctx).VariableDeclaration = variableDeclaration();
+ setState(72); ((StatementContext)_localctx).Return = returnStatement();
}
break;
case 3:
enterOuterAlt(_localctx, 3);
{
- setState(73);
- _la = _input.LA(1);
- if (_la==ATTRIBUTE_ID) {
+ setState(74);
+ switch ( getInterpreter().adaptivePredict(_input,1,_ctx) ) {
+ case 1:
{
- setState(72); ((StatementContext)_localctx).Attributes = attributes();
+ setState(73); ((StatementContext)_localctx).Attributes = attributes();
}
+ break;
}
-
- setState(75); ((StatementContext)_localctx).If = ifStatement();
+ setState(76); ((StatementContext)_localctx).VariableDeclaration = variableDeclaration();
}
break;
case 4:
enterOuterAlt(_localctx, 4);
{
- setState(77);
+ setState(78);
_la = _input.LA(1);
if (_la==ATTRIBUTE_ID) {
{
- setState(76); ((StatementContext)_localctx).Attributes = attributes();
+ setState(77); ((StatementContext)_localctx).Attributes = attributes();
}
}
- setState(79); ((StatementContext)_localctx).Block = blockStatement();
+ setState(80); ((StatementContext)_localctx).If = ifStatement();
}
break;
case 5:
enterOuterAlt(_localctx, 5);
{
- setState(81);
+ setState(82);
_la = _input.LA(1);
if (_la==ATTRIBUTE_ID) {
{
- setState(80); ((StatementContext)_localctx).Attributes = attributes();
+ setState(81); ((StatementContext)_localctx).Attributes = attributes();
}
}
- setState(83); ((StatementContext)_localctx).Foreach = foreachStatement();
+ setState(84); ((StatementContext)_localctx).Block = blockStatement();
}
break;
case 6:
enterOuterAlt(_localctx, 6);
{
- setState(85);
+ setState(86);
_la = _input.LA(1);
if (_la==ATTRIBUTE_ID) {
{
- setState(84); ((StatementContext)_localctx).Attributes = attributes();
+ setState(85); ((StatementContext)_localctx).Attributes = attributes();
}
}
- setState(87); ((StatementContext)_localctx).While = whileStatement();
+ setState(88); ((StatementContext)_localctx).Foreach = foreachStatement();
}
break;
case 7:
enterOuterAlt(_localctx, 7);
{
- setState(89);
+ setState(90);
+ _la = _input.LA(1);
+ if (_la==ATTRIBUTE_ID) {
+ {
+ setState(89); ((StatementContext)_localctx).Attributes = attributes();
+ }
+ }
+
+ setState(92); ((StatementContext)_localctx).While = whileStatement();
+ }
+ break;
+
+ case 8:
+ enterOuterAlt(_localctx, 8);
+ {
+ setState(94);
_la = _input.LA(1);
if (_la==ATTRIBUTE_ID) {
{
- setState(88); ((StatementContext)_localctx).Attributes = attributes();
+ setState(93); ((StatementContext)_localctx).Attributes = attributes();
}
}
- setState(91); ((StatementContext)_localctx).Skip = skipStatement();
+ setState(96); ((StatementContext)_localctx).Skip = skipStatement();
}
break;
}
@@ -382,27 +392,27 @@ public final VariableDeclarationContext variableDeclaration() throws Recognition
try {
enterOuterAlt(_localctx, 1);
{
- setState(95);
+ setState(100);
_la = _input.LA(1);
if (_la==ATTRIBUTE_ID) {
{
- setState(94); ((VariableDeclarationContext)_localctx).Attributes = attributes();
+ setState(99); ((VariableDeclarationContext)_localctx).Attributes = attributes();
}
}
- setState(97); match(VAR);
- setState(98); ((VariableDeclarationContext)_localctx).VariableName = match(ID);
- setState(101);
+ setState(102); match(VAR);
+ setState(103); ((VariableDeclarationContext)_localctx).VariableName = match(ID);
+ setState(106);
_la = _input.LA(1);
if (_la==8) {
{
- setState(99); match(8);
- setState(100); ((VariableDeclarationContext)_localctx).VariableType = typeName();
+ setState(104); match(8);
+ setState(105); ((VariableDeclarationContext)_localctx).VariableType = typeName();
}
}
- setState(103); match(ASSIGN);
- setState(104); ((VariableDeclarationContext)_localctx).VariableDefaultValue = expression(0);
+ setState(108); match(ASSIGN);
+ setState(109); ((VariableDeclarationContext)_localctx).VariableDefaultValue = expression(0);
}
}
catch (RecognitionException re) {
@@ -417,6 +427,7 @@ public final VariableDeclarationContext variableDeclaration() throws Recognition
}
public static class ExpressionContext extends ParserRuleContext {
+ public int _p;
public ExpressionContext Left;
public Token Operator;
public ExpressionContext Expression;
@@ -442,8 +453,10 @@ public List expression() {
public PrimaryExpressionContext primaryExpression() {
return getRuleContext(PrimaryExpressionContext.class,0);
}
- public ExpressionContext(ParserRuleContext parent, int invokingState) {
+ public ExpressionContext(ParserRuleContext parent, int invokingState) { super(parent, invokingState); }
+ public ExpressionContext(ParserRuleContext parent, int invokingState, int _p) {
super(parent, invokingState);
+ this._p = _p;
}
@Override public int getRuleIndex() { return RULE_expression; }
@Override
@@ -461,50 +474,46 @@ public T accept(ParseTreeVisitor extends T> visitor) {
}
}
- public final ExpressionContext expression() throws RecognitionException {
- return expression(0);
- }
-
- private ExpressionContext expression(int _p) throws RecognitionException {
+ public final ExpressionContext expression(int _p) throws RecognitionException {
ParserRuleContext _parentctx = _ctx;
int _parentState = getState();
- ExpressionContext _localctx = new ExpressionContext(_ctx, _parentState);
+ ExpressionContext _localctx = new ExpressionContext(_ctx, _parentState, _p);
ExpressionContext _prevctx = _localctx;
int _startState = 8;
- enterRecursionRule(_localctx, 8, RULE_expression, _p);
+ enterRecursionRule(_localctx, RULE_expression);
try {
int _alt;
enterOuterAlt(_localctx, 1);
{
- setState(112);
+ setState(117);
switch ( getInterpreter().adaptivePredict(_input,10,_ctx) ) {
case 1:
{
- setState(107); ((ExpressionContext)_localctx).Operator = match(NOT);
- setState(108); ((ExpressionContext)_localctx).Expression = expression(13);
+ setState(112); ((ExpressionContext)_localctx).Operator = match(NOT);
+ setState(113); ((ExpressionContext)_localctx).Expression = expression(13);
}
break;
case 2:
{
- setState(109); ((ExpressionContext)_localctx).PrimaryExpression = primaryExpression();
+ setState(114); ((ExpressionContext)_localctx).PrimaryExpression = primaryExpression();
}
break;
case 3:
{
- setState(110); ((ExpressionContext)_localctx).FunctionCallExpression = functionCallExpression();
+ setState(115); ((ExpressionContext)_localctx).FunctionCallExpression = functionCallExpression();
}
break;
case 4:
{
- setState(111); ((ExpressionContext)_localctx).MemberExpression = memberExpression();
+ setState(116); ((ExpressionContext)_localctx).MemberExpression = memberExpression();
}
break;
}
_ctx.stop = _input.LT(-1);
- setState(152);
+ setState(157);
_errHandler.sync(this);
_alt = getInterpreter().adaptivePredict(_input,12,_ctx);
while ( _alt!=2 && _alt!=-1 ) {
@@ -512,155 +521,155 @@ private ExpressionContext expression(int _p) throws RecognitionException {
if ( _parseListeners!=null ) triggerExitRuleEvent();
_prevctx = _localctx;
{
- setState(150);
+ setState(155);
switch ( getInterpreter().adaptivePredict(_input,11,_ctx) ) {
case 1:
{
- _localctx = new ExpressionContext(_parentctx, _parentState);
+ _localctx = new ExpressionContext(_parentctx, _parentState, _p);
_localctx.Left = _prevctx;
pushNewRecursionContext(_localctx, _startState, RULE_expression);
- setState(114);
- if (!(precpred(_ctx, 12))) throw new FailedPredicateException(this, "precpred(_ctx, 12)");
- setState(115); ((ExpressionContext)_localctx).Operator = match(4);
- setState(116); ((ExpressionContext)_localctx).Right = expression(13);
+ setState(119);
+ if (!(12 >= _localctx._p)) throw new FailedPredicateException(this, "12 >= $_p");
+ setState(120); ((ExpressionContext)_localctx).Operator = match(4);
+ setState(121); ((ExpressionContext)_localctx).Right = expression(13);
}
break;
case 2:
{
- _localctx = new ExpressionContext(_parentctx, _parentState);
+ _localctx = new ExpressionContext(_parentctx, _parentState, _p);
_localctx.Left = _prevctx;
pushNewRecursionContext(_localctx, _startState, RULE_expression);
- setState(117);
- if (!(precpred(_ctx, 11))) throw new FailedPredicateException(this, "precpred(_ctx, 11)");
- setState(118); ((ExpressionContext)_localctx).Operator = match(6);
- setState(119); ((ExpressionContext)_localctx).Right = expression(12);
+ setState(122);
+ if (!(11 >= _localctx._p)) throw new FailedPredicateException(this, "11 >= $_p");
+ setState(123); ((ExpressionContext)_localctx).Operator = match(6);
+ setState(124); ((ExpressionContext)_localctx).Right = expression(12);
}
break;
case 3:
{
- _localctx = new ExpressionContext(_parentctx, _parentState);
+ _localctx = new ExpressionContext(_parentctx, _parentState, _p);
_localctx.Left = _prevctx;
pushNewRecursionContext(_localctx, _startState, RULE_expression);
- setState(120);
- if (!(precpred(_ctx, 10))) throw new FailedPredicateException(this, "precpred(_ctx, 10)");
- setState(121); ((ExpressionContext)_localctx).Operator = match(5);
- setState(122); ((ExpressionContext)_localctx).Right = expression(11);
+ setState(125);
+ if (!(10 >= _localctx._p)) throw new FailedPredicateException(this, "10 >= $_p");
+ setState(126); ((ExpressionContext)_localctx).Operator = match(5);
+ setState(127); ((ExpressionContext)_localctx).Right = expression(11);
}
break;
case 4:
{
- _localctx = new ExpressionContext(_parentctx, _parentState);
+ _localctx = new ExpressionContext(_parentctx, _parentState, _p);
_localctx.Left = _prevctx;
pushNewRecursionContext(_localctx, _startState, RULE_expression);
- setState(123);
- if (!(precpred(_ctx, 9))) throw new FailedPredicateException(this, "precpred(_ctx, 9)");
- setState(124); ((ExpressionContext)_localctx).Operator = match(17);
- setState(125); ((ExpressionContext)_localctx).Right = expression(10);
+ setState(128);
+ if (!(9 >= _localctx._p)) throw new FailedPredicateException(this, "9 >= $_p");
+ setState(129); ((ExpressionContext)_localctx).Operator = match(17);
+ setState(130); ((ExpressionContext)_localctx).Right = expression(10);
}
break;
case 5:
{
- _localctx = new ExpressionContext(_parentctx, _parentState);
+ _localctx = new ExpressionContext(_parentctx, _parentState, _p);
_localctx.Left = _prevctx;
pushNewRecursionContext(_localctx, _startState, RULE_expression);
- setState(126);
- if (!(precpred(_ctx, 8))) throw new FailedPredicateException(this, "precpred(_ctx, 8)");
- setState(127); ((ExpressionContext)_localctx).Operator = match(9);
- setState(128); ((ExpressionContext)_localctx).Right = expression(9);
+ setState(131);
+ if (!(8 >= _localctx._p)) throw new FailedPredicateException(this, "8 >= $_p");
+ setState(132); ((ExpressionContext)_localctx).Operator = match(9);
+ setState(133); ((ExpressionContext)_localctx).Right = expression(9);
}
break;
case 6:
{
- _localctx = new ExpressionContext(_parentctx, _parentState);
+ _localctx = new ExpressionContext(_parentctx, _parentState, _p);
_localctx.Left = _prevctx;
pushNewRecursionContext(_localctx, _startState, RULE_expression);
- setState(129);
- if (!(precpred(_ctx, 7))) throw new FailedPredicateException(this, "precpred(_ctx, 7)");
- setState(130); ((ExpressionContext)_localctx).Operator = match(14);
- setState(131); ((ExpressionContext)_localctx).Right = expression(8);
+ setState(134);
+ if (!(7 >= _localctx._p)) throw new FailedPredicateException(this, "7 >= $_p");
+ setState(135); ((ExpressionContext)_localctx).Operator = match(14);
+ setState(136); ((ExpressionContext)_localctx).Right = expression(8);
}
break;
case 7:
{
- _localctx = new ExpressionContext(_parentctx, _parentState);
+ _localctx = new ExpressionContext(_parentctx, _parentState, _p);
_localctx.Left = _prevctx;
pushNewRecursionContext(_localctx, _startState, RULE_expression);
- setState(132);
- if (!(precpred(_ctx, 6))) throw new FailedPredicateException(this, "precpred(_ctx, 6)");
- setState(133); ((ExpressionContext)_localctx).Operator = match(12);
- setState(134); ((ExpressionContext)_localctx).Right = expression(7);
+ setState(137);
+ if (!(6 >= _localctx._p)) throw new FailedPredicateException(this, "6 >= $_p");
+ setState(138); ((ExpressionContext)_localctx).Operator = match(12);
+ setState(139); ((ExpressionContext)_localctx).Right = expression(7);
}
break;
case 8:
{
- _localctx = new ExpressionContext(_parentctx, _parentState);
+ _localctx = new ExpressionContext(_parentctx, _parentState, _p);
_localctx.Left = _prevctx;
pushNewRecursionContext(_localctx, _startState, RULE_expression);
- setState(135);
- if (!(precpred(_ctx, 5))) throw new FailedPredicateException(this, "precpred(_ctx, 5)");
- setState(136); ((ExpressionContext)_localctx).Operator = match(18);
- setState(137); ((ExpressionContext)_localctx).Right = expression(6);
+ setState(140);
+ if (!(5 >= _localctx._p)) throw new FailedPredicateException(this, "5 >= $_p");
+ setState(141); ((ExpressionContext)_localctx).Operator = match(18);
+ setState(142); ((ExpressionContext)_localctx).Right = expression(6);
}
break;
case 9:
{
- _localctx = new ExpressionContext(_parentctx, _parentState);
+ _localctx = new ExpressionContext(_parentctx, _parentState, _p);
_localctx.Left = _prevctx;
pushNewRecursionContext(_localctx, _startState, RULE_expression);
- setState(138);
- if (!(precpred(_ctx, 4))) throw new FailedPredicateException(this, "precpred(_ctx, 4)");
- setState(139); ((ExpressionContext)_localctx).Operator = match(16);
- setState(140); ((ExpressionContext)_localctx).Right = expression(5);
+ setState(143);
+ if (!(4 >= _localctx._p)) throw new FailedPredicateException(this, "4 >= $_p");
+ setState(144); ((ExpressionContext)_localctx).Operator = match(16);
+ setState(145); ((ExpressionContext)_localctx).Right = expression(5);
}
break;
case 10:
{
- _localctx = new ExpressionContext(_parentctx, _parentState);
+ _localctx = new ExpressionContext(_parentctx, _parentState, _p);
_localctx.Left = _prevctx;
pushNewRecursionContext(_localctx, _startState, RULE_expression);
- setState(141);
- if (!(precpred(_ctx, 3))) throw new FailedPredicateException(this, "precpred(_ctx, 3)");
- setState(142); ((ExpressionContext)_localctx).Operator = match(10);
- setState(143); ((ExpressionContext)_localctx).Right = expression(4);
+ setState(146);
+ if (!(3 >= _localctx._p)) throw new FailedPredicateException(this, "3 >= $_p");
+ setState(147); ((ExpressionContext)_localctx).Operator = match(10);
+ setState(148); ((ExpressionContext)_localctx).Right = expression(4);
}
break;
case 11:
{
- _localctx = new ExpressionContext(_parentctx, _parentState);
+ _localctx = new ExpressionContext(_parentctx, _parentState, _p);
_localctx.Left = _prevctx;
pushNewRecursionContext(_localctx, _startState, RULE_expression);
- setState(144);
- if (!(precpred(_ctx, 2))) throw new FailedPredicateException(this, "precpred(_ctx, 2)");
- setState(145); ((ExpressionContext)_localctx).Operator = match(AND);
- setState(146); ((ExpressionContext)_localctx).Right = expression(3);
+ setState(149);
+ if (!(2 >= _localctx._p)) throw new FailedPredicateException(this, "2 >= $_p");
+ setState(150); ((ExpressionContext)_localctx).Operator = match(AND);
+ setState(151); ((ExpressionContext)_localctx).Right = expression(3);
}
break;
case 12:
{
- _localctx = new ExpressionContext(_parentctx, _parentState);
+ _localctx = new ExpressionContext(_parentctx, _parentState, _p);
_localctx.Left = _prevctx;
pushNewRecursionContext(_localctx, _startState, RULE_expression);
- setState(147);
- if (!(precpred(_ctx, 1))) throw new FailedPredicateException(this, "precpred(_ctx, 1)");
- setState(148); ((ExpressionContext)_localctx).Operator = match(OR);
- setState(149); ((ExpressionContext)_localctx).Right = expression(2);
+ setState(152);
+ if (!(1 >= _localctx._p)) throw new FailedPredicateException(this, "1 >= $_p");
+ setState(153); ((ExpressionContext)_localctx).Operator = match(OR);
+ setState(154); ((ExpressionContext)_localctx).Right = expression(2);
}
break;
}
}
}
- setState(154);
+ setState(159);
_errHandler.sync(this);
_alt = getInterpreter().adaptivePredict(_input,12,_ctx);
}
@@ -710,17 +719,17 @@ public final FunctionCallExpressionContext functionCallExpression() throws Recog
try {
enterOuterAlt(_localctx, 1);
{
- setState(155); primaryExpression();
- setState(156); match(LEFT_PARENTHESIS);
- setState(158);
+ setState(160); primaryExpression();
+ setState(161); match(LEFT_PARENTHESIS);
+ setState(163);
_la = _input.LA(1);
if ((((_la) & ~0x3f) == 0 && ((1L << _la) & ((1L << 7) | (1L << FUNCTION) | (1L << BOOLEAN) | (1L << NOT) | (1L << LEFT_PARENTHESIS) | (1L << ID) | (1L << ATTRIBUTE_ID) | (1L << STRING) | (1L << NUMBER))) != 0)) {
{
- setState(157); expression(0);
+ setState(162); expression(0);
}
}
- setState(160); match(RIGHT_PARENTHESIS);
+ setState(165); match(RIGHT_PARENTHESIS);
}
}
catch (RecognitionException re) {
@@ -735,20 +744,17 @@ public final FunctionCallExpressionContext functionCallExpression() throws Recog
}
public static class MemberExpressionContext extends ParserRuleContext {
- public FunctionCallExpressionContext functionCallExpression(int i) {
- return getRuleContext(FunctionCallExpressionContext.class,i);
- }
- public List functionCallExpression() {
- return getRuleContexts(FunctionCallExpressionContext.class);
+ public MemberTagExpressionContext memberTagExpression(int i) {
+ return getRuleContext(MemberTagExpressionContext.class,i);
}
- public IdentifierContext identifier(int i) {
- return getRuleContext(IdentifierContext.class,i);
+ public FunctionCallExpressionContext functionCallExpression() {
+ return getRuleContext(FunctionCallExpressionContext.class,0);
}
public PrimaryExpressionContext primaryExpression() {
return getRuleContext(PrimaryExpressionContext.class,0);
}
- public List identifier() {
- return getRuleContexts(IdentifierContext.class);
+ public List memberTagExpression() {
+ return getRuleContexts(MemberTagExpressionContext.class);
}
public MemberExpressionContext(ParserRuleContext parent, int invokingState) {
super(parent, invokingState);
@@ -776,8 +782,21 @@ public final MemberExpressionContext memberExpression() throws RecognitionExcept
int _alt;
enterOuterAlt(_localctx, 1);
{
- setState(162); primaryExpression();
- setState(168);
+ setState(169);
+ switch ( getInterpreter().adaptivePredict(_input,14,_ctx) ) {
+ case 1:
+ {
+ setState(167); primaryExpression();
+ }
+ break;
+
+ case 2:
+ {
+ setState(168); functionCallExpression();
+ }
+ break;
+ }
+ setState(173);
_errHandler.sync(this);
_alt = getInterpreter().adaptivePredict(_input,15,_ctx);
do {
@@ -785,28 +804,15 @@ public final MemberExpressionContext memberExpression() throws RecognitionExcept
case 1:
{
{
- setState(163); match(2);
- setState(166);
- switch ( getInterpreter().adaptivePredict(_input,14,_ctx) ) {
- case 1:
- {
- setState(164); identifier();
- }
- break;
-
- case 2:
- {
- setState(165); functionCallExpression();
- }
- break;
- }
+ setState(171); match(2);
+ setState(172); memberTagExpression();
}
}
break;
default:
throw new NoViableAltException(this);
}
- setState(170);
+ setState(175);
_errHandler.sync(this);
_alt = getInterpreter().adaptivePredict(_input,15,_ctx);
} while ( _alt!=2 && _alt!=-1 );
@@ -823,16 +829,75 @@ public final MemberExpressionContext memberExpression() throws RecognitionExcept
return _localctx;
}
+ public static class MemberTagExpressionContext extends ParserRuleContext {
+ public FunctionCallExpressionContext functionCallExpression() {
+ return getRuleContext(FunctionCallExpressionContext.class,0);
+ }
+ public IdentifierContext identifier() {
+ return getRuleContext(IdentifierContext.class,0);
+ }
+ public MemberTagExpressionContext(ParserRuleContext parent, int invokingState) {
+ super(parent, invokingState);
+ }
+ @Override public int getRuleIndex() { return RULE_memberTagExpression; }
+ @Override
+ public void enterRule(ParseTreeListener listener) {
+ if ( listener instanceof MetaCodeListener ) ((MetaCodeListener)listener).enterMemberTagExpression(this);
+ }
+ @Override
+ public void exitRule(ParseTreeListener listener) {
+ if ( listener instanceof MetaCodeListener ) ((MetaCodeListener)listener).exitMemberTagExpression(this);
+ }
+ @Override
+ public T accept(ParseTreeVisitor extends T> visitor) {
+ if ( visitor instanceof MetaCodeVisitor ) return ((MetaCodeVisitor extends T>)visitor).visitMemberTagExpression(this);
+ else return visitor.visitChildren(this);
+ }
+ }
+
+ public final MemberTagExpressionContext memberTagExpression() throws RecognitionException {
+ MemberTagExpressionContext _localctx = new MemberTagExpressionContext(_ctx, getState());
+ enterRule(_localctx, 14, RULE_memberTagExpression);
+ try {
+ setState(179);
+ switch ( getInterpreter().adaptivePredict(_input,16,_ctx) ) {
+ case 1:
+ enterOuterAlt(_localctx, 1);
+ {
+ setState(177); identifier();
+ }
+ break;
+
+ case 2:
+ enterOuterAlt(_localctx, 2);
+ {
+ setState(178); functionCallExpression();
+ }
+ break;
+ }
+ }
+ catch (RecognitionException re) {
+ _localctx.exception = re;
+ _errHandler.reportError(this, re);
+ _errHandler.recover(this, re);
+ }
+ finally {
+ exitRule();
+ }
+ return _localctx;
+ }
+
public static class PrimaryExpressionContext extends ParserRuleContext {
public AttributesContext Attributes;
public ConstantContext Constant;
- public IdentifierContext Id;
+ public Token Id;
public FunctionExpressionContext Function;
public AssignmentExpressionContext Assignment;
public ExpressionContext InnerExpression;
public AttributesContext attributes() {
return getRuleContext(AttributesContext.class,0);
}
+ public TerminalNode ID() { return getToken(MetaCodeParser.ID, 0); }
public FunctionExpressionContext functionExpression() {
return getRuleContext(FunctionExpressionContext.class,0);
}
@@ -845,9 +910,6 @@ public AssignmentExpressionContext assignmentExpression() {
public ConstantContext constant() {
return getRuleContext(ConstantContext.class,0);
}
- public IdentifierContext identifier() {
- return getRuleContext(IdentifierContext.class,0);
- }
public PrimaryExpressionContext(ParserRuleContext parent, int invokingState) {
super(parent, invokingState);
}
@@ -869,85 +931,85 @@ public T accept(ParseTreeVisitor extends T> visitor) {
public final PrimaryExpressionContext primaryExpression() throws RecognitionException {
PrimaryExpressionContext _localctx = new PrimaryExpressionContext(_ctx, getState());
- enterRule(_localctx, 14, RULE_primaryExpression);
+ enterRule(_localctx, 16, RULE_primaryExpression);
int _la;
try {
- setState(195);
- switch ( getInterpreter().adaptivePredict(_input,21,_ctx) ) {
+ setState(204);
+ switch ( getInterpreter().adaptivePredict(_input,22,_ctx) ) {
case 1:
enterOuterAlt(_localctx, 1);
{
- setState(173);
+ setState(182);
_la = _input.LA(1);
if (_la==ATTRIBUTE_ID) {
{
- setState(172); ((PrimaryExpressionContext)_localctx).Attributes = attributes();
+ setState(181); ((PrimaryExpressionContext)_localctx).Attributes = attributes();
}
}
- setState(175); ((PrimaryExpressionContext)_localctx).Constant = constant();
+ setState(184); ((PrimaryExpressionContext)_localctx).Constant = constant();
}
break;
case 2:
enterOuterAlt(_localctx, 2);
{
- setState(177);
+ setState(186);
_la = _input.LA(1);
if (_la==ATTRIBUTE_ID) {
{
- setState(176); ((PrimaryExpressionContext)_localctx).Attributes = attributes();
+ setState(185); ((PrimaryExpressionContext)_localctx).Attributes = attributes();
}
}
- setState(179); ((PrimaryExpressionContext)_localctx).Id = identifier();
+ setState(188); ((PrimaryExpressionContext)_localctx).Id = match(ID);
}
break;
case 3:
enterOuterAlt(_localctx, 3);
{
- setState(181);
+ setState(190);
_la = _input.LA(1);
if (_la==ATTRIBUTE_ID) {
{
- setState(180); ((PrimaryExpressionContext)_localctx).Attributes = attributes();
+ setState(189); ((PrimaryExpressionContext)_localctx).Attributes = attributes();
}
}
- setState(183); ((PrimaryExpressionContext)_localctx).Function = functionExpression();
+ setState(192); ((PrimaryExpressionContext)_localctx).Function = functionExpression();
}
break;
case 4:
enterOuterAlt(_localctx, 4);
{
- setState(185);
+ setState(194);
_la = _input.LA(1);
if (_la==ATTRIBUTE_ID) {
{
- setState(184); ((PrimaryExpressionContext)_localctx).Attributes = attributes();
+ setState(193); ((PrimaryExpressionContext)_localctx).Attributes = attributes();
}
}
- setState(187); ((PrimaryExpressionContext)_localctx).Assignment = assignmentExpression();
+ setState(196); ((PrimaryExpressionContext)_localctx).Assignment = assignmentExpression();
}
break;
case 5:
enterOuterAlt(_localctx, 5);
{
- setState(189);
+ setState(198);
_la = _input.LA(1);
if (_la==ATTRIBUTE_ID) {
{
- setState(188); ((PrimaryExpressionContext)_localctx).Attributes = attributes();
+ setState(197); ((PrimaryExpressionContext)_localctx).Attributes = attributes();
}
}
- setState(191); match(LEFT_PARENTHESIS);
- setState(192); ((PrimaryExpressionContext)_localctx).InnerExpression = expression(0);
- setState(193); match(RIGHT_PARENTHESIS);
+ setState(200); match(LEFT_PARENTHESIS);
+ setState(201); ((PrimaryExpressionContext)_localctx).InnerExpression = expression(0);
+ setState(202); match(RIGHT_PARENTHESIS);
}
break;
}
@@ -964,7 +1026,7 @@ public final PrimaryExpressionContext primaryExpression() throws RecognitionExce
}
public static class FunctionExpressionContext extends ParserRuleContext {
- public IdentifierContext FunctionName;
+ public Token FunctionName;
public FormalParameterListContext Parameters;
public TypeNameContext ReturnType;
public StatementsContext BodyStatements;
@@ -976,6 +1038,7 @@ public StatementsContext statements() {
return getRuleContext(StatementsContext.class,0);
}
public TerminalNode DO() { return getToken(MetaCodeParser.DO, 0); }
+ public TerminalNode ID() { return getToken(MetaCodeParser.ID, 0); }
public TerminalNode FUNCTION() { return getToken(MetaCodeParser.FUNCTION, 0); }
public ExpressionContext expression() {
return getRuleContext(ExpressionContext.class,0);
@@ -983,9 +1046,6 @@ public ExpressionContext expression() {
public FormalParameterListContext formalParameterList() {
return getRuleContext(FormalParameterListContext.class,0);
}
- public IdentifierContext identifier() {
- return getRuleContext(IdentifierContext.class,0);
- }
public TerminalNode END() { return getToken(MetaCodeParser.END, 0); }
public FunctionExpressionContext(ParserRuleContext parent, int invokingState) {
super(parent, invokingState);
@@ -1008,81 +1068,71 @@ public T accept(ParseTreeVisitor extends T> visitor) {
public final FunctionExpressionContext functionExpression() throws RecognitionException {
FunctionExpressionContext _localctx = new FunctionExpressionContext(_ctx, getState());
- enterRule(_localctx, 16, RULE_functionExpression);
+ enterRule(_localctx, 18, RULE_functionExpression);
int _la;
try {
- setState(229);
- switch ( getInterpreter().adaptivePredict(_input,28,_ctx) ) {
+ setState(237);
+ switch ( getInterpreter().adaptivePredict(_input,27,_ctx) ) {
case 1:
enterOuterAlt(_localctx, 1);
{
- setState(197); match(FUNCTION);
- setState(199);
+ setState(206); match(FUNCTION);
+ setState(208);
_la = _input.LA(1);
if (_la==ID) {
{
- setState(198); ((FunctionExpressionContext)_localctx).FunctionName = identifier();
+ setState(207); ((FunctionExpressionContext)_localctx).FunctionName = match(ID);
}
}
- setState(201); match(LEFT_PARENTHESIS);
- setState(203);
+ setState(210); match(LEFT_PARENTHESIS);
+ setState(212);
_la = _input.LA(1);
if (_la==ID || _la==ATTRIBUTE_ID) {
{
- setState(202); ((FunctionExpressionContext)_localctx).Parameters = formalParameterList();
+ setState(211); ((FunctionExpressionContext)_localctx).Parameters = formalParameterList();
}
}
- setState(205); match(RIGHT_PARENTHESIS);
- setState(208);
- _la = _input.LA(1);
- if (_la==8) {
- {
- setState(206); match(8);
- setState(207); ((FunctionExpressionContext)_localctx).ReturnType = typeName();
- }
+ setState(214); match(RIGHT_PARENTHESIS);
+ {
+ setState(215); match(8);
+ setState(216); ((FunctionExpressionContext)_localctx).ReturnType = typeName();
}
-
- setState(210); match(DO);
- setState(211); ((FunctionExpressionContext)_localctx).BodyStatements = statements();
- setState(212); match(END);
+ setState(218); match(DO);
+ setState(219); ((FunctionExpressionContext)_localctx).BodyStatements = statements();
+ setState(220); match(END);
}
break;
case 2:
enterOuterAlt(_localctx, 2);
{
- setState(214); match(FUNCTION);
- setState(216);
+ setState(222); match(FUNCTION);
+ setState(224);
_la = _input.LA(1);
if (_la==ID) {
{
- setState(215); ((FunctionExpressionContext)_localctx).FunctionName = identifier();
+ setState(223); ((FunctionExpressionContext)_localctx).FunctionName = match(ID);
}
}
- setState(218); match(LEFT_PARENTHESIS);
- setState(220);
+ setState(226); match(LEFT_PARENTHESIS);
+ setState(228);
_la = _input.LA(1);
if (_la==ID || _la==ATTRIBUTE_ID) {
{
- setState(219); ((FunctionExpressionContext)_localctx).Parameters = formalParameterList();
+ setState(227); ((FunctionExpressionContext)_localctx).Parameters = formalParameterList();
}
}
- setState(222); match(RIGHT_PARENTHESIS);
- setState(225);
- _la = _input.LA(1);
- if (_la==8) {
- {
- setState(223); match(8);
- setState(224); ((FunctionExpressionContext)_localctx).ReturnType = typeName();
- }
+ setState(230); match(RIGHT_PARENTHESIS);
+ {
+ setState(231); match(8);
+ setState(232); ((FunctionExpressionContext)_localctx).ReturnType = typeName();
}
-
- setState(227); match(ASSIGN);
- setState(228); ((FunctionExpressionContext)_localctx).BodyExpression = expression(0);
+ setState(234); match(ASSIGN);
+ setState(235); ((FunctionExpressionContext)_localctx).BodyExpression = expression(0);
}
break;
}
@@ -1100,7 +1150,7 @@ public final FunctionExpressionContext functionExpression() throws RecognitionEx
public static class ForeachStatementContext extends ParserRuleContext {
public Token Var;
- public IdentifierContext Id;
+ public Token Id;
public TypeNameContext VariableType;
public ExpressionContext ArrayExpression;
public StatementContext Body;
@@ -1112,13 +1162,11 @@ public TypeNameContext typeName() {
return getRuleContext(TypeNameContext.class,0);
}
public TerminalNode VAR() { return getToken(MetaCodeParser.VAR, 0); }
+ public TerminalNode ID() { return getToken(MetaCodeParser.ID, 0); }
public ExpressionContext expression() {
return getRuleContext(ExpressionContext.class,0);
}
public TerminalNode FOREACH() { return getToken(MetaCodeParser.FOREACH, 0); }
- public IdentifierContext identifier() {
- return getRuleContext(IdentifierContext.class,0);
- }
public ForeachStatementContext(ParserRuleContext parent, int invokingState) {
super(parent, invokingState);
}
@@ -1140,35 +1188,35 @@ public T accept(ParseTreeVisitor extends T> visitor) {
public final ForeachStatementContext foreachStatement() throws RecognitionException {
ForeachStatementContext _localctx = new ForeachStatementContext(_ctx, getState());
- enterRule(_localctx, 18, RULE_foreachStatement);
+ enterRule(_localctx, 20, RULE_foreachStatement);
int _la;
try {
enterOuterAlt(_localctx, 1);
{
- setState(231); match(FOREACH);
- setState(232); match(LEFT_PARENTHESIS);
- setState(234);
+ setState(239); match(FOREACH);
+ setState(240); match(LEFT_PARENTHESIS);
+ setState(242);
_la = _input.LA(1);
if (_la==VAR) {
{
- setState(233); ((ForeachStatementContext)_localctx).Var = match(VAR);
+ setState(241); ((ForeachStatementContext)_localctx).Var = match(VAR);
}
}
- setState(236); ((ForeachStatementContext)_localctx).Id = identifier();
- setState(239);
+ setState(244); ((ForeachStatementContext)_localctx).Id = match(ID);
+ setState(247);
_la = _input.LA(1);
if (_la==8) {
{
- setState(237); match(8);
- setState(238); ((ForeachStatementContext)_localctx).VariableType = typeName();
+ setState(245); match(8);
+ setState(246); ((ForeachStatementContext)_localctx).VariableType = typeName();
}
}
- setState(241); match(IN);
- setState(242); ((ForeachStatementContext)_localctx).ArrayExpression = expression(0);
- setState(243); match(RIGHT_PARENTHESIS);
- setState(244); ((ForeachStatementContext)_localctx).Body = statement();
+ setState(249); match(IN);
+ setState(250); ((ForeachStatementContext)_localctx).ArrayExpression = expression(0);
+ setState(251); match(RIGHT_PARENTHESIS);
+ setState(252); ((ForeachStatementContext)_localctx).Body = statement();
}
}
catch (RecognitionException re) {
@@ -1213,15 +1261,15 @@ public T accept(ParseTreeVisitor extends T> visitor) {
public final WhileStatementContext whileStatement() throws RecognitionException {
WhileStatementContext _localctx = new WhileStatementContext(_ctx, getState());
- enterRule(_localctx, 20, RULE_whileStatement);
+ enterRule(_localctx, 22, RULE_whileStatement);
try {
enterOuterAlt(_localctx, 1);
{
- setState(246); match(WHILE);
- setState(247); match(LEFT_PARENTHESIS);
- setState(248); ((WhileStatementContext)_localctx).ConditionExpression = expression(0);
- setState(249); match(RIGHT_PARENTHESIS);
- setState(250); ((WhileStatementContext)_localctx).Body = statement();
+ setState(254); match(WHILE);
+ setState(255); match(LEFT_PARENTHESIS);
+ setState(256); ((WhileStatementContext)_localctx).ConditionExpression = expression(0);
+ setState(257); match(RIGHT_PARENTHESIS);
+ setState(258); ((WhileStatementContext)_localctx).Body = statement();
}
}
catch (RecognitionException re) {
@@ -1263,13 +1311,13 @@ public T accept(ParseTreeVisitor extends T> visitor) {
public final BlockStatementContext blockStatement() throws RecognitionException {
BlockStatementContext _localctx = new BlockStatementContext(_ctx, getState());
- enterRule(_localctx, 22, RULE_blockStatement);
+ enterRule(_localctx, 24, RULE_blockStatement);
try {
enterOuterAlt(_localctx, 1);
{
- setState(252); match(DO);
- setState(253); ((BlockStatementContext)_localctx).Body = statements();
- setState(254); match(END);
+ setState(260); match(DO);
+ setState(261); ((BlockStatementContext)_localctx).Body = statements();
+ setState(262); match(END);
}
}
catch (RecognitionException re) {
@@ -1306,11 +1354,56 @@ public T accept(ParseTreeVisitor extends T> visitor) {
public final SkipStatementContext skipStatement() throws RecognitionException {
SkipStatementContext _localctx = new SkipStatementContext(_ctx, getState());
- enterRule(_localctx, 24, RULE_skipStatement);
+ enterRule(_localctx, 26, RULE_skipStatement);
+ try {
+ enterOuterAlt(_localctx, 1);
+ {
+ setState(264); match(SKIP);
+ }
+ }
+ catch (RecognitionException re) {
+ _localctx.exception = re;
+ _errHandler.reportError(this, re);
+ _errHandler.recover(this, re);
+ }
+ finally {
+ exitRule();
+ }
+ return _localctx;
+ }
+
+ public static class ReturnStatementContext extends ParserRuleContext {
+ public TerminalNode RETURN() { return getToken(MetaCodeParser.RETURN, 0); }
+ 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 MetaCodeListener ) ((MetaCodeListener)listener).enterReturnStatement(this);
+ }
+ @Override
+ public void exitRule(ParseTreeListener listener) {
+ if ( listener instanceof MetaCodeListener ) ((MetaCodeListener)listener).exitReturnStatement(this);
+ }
+ @Override
+ public T accept(ParseTreeVisitor extends T> visitor) {
+ if ( visitor instanceof MetaCodeVisitor ) return ((MetaCodeVisitor extends T>)visitor).visitReturnStatement(this);
+ else return visitor.visitChildren(this);
+ }
+ }
+
+ public final ReturnStatementContext returnStatement() throws RecognitionException {
+ ReturnStatementContext _localctx = new ReturnStatementContext(_ctx, getState());
+ enterRule(_localctx, 28, RULE_returnStatement);
try {
enterOuterAlt(_localctx, 1);
{
- setState(256); match(SKIP);
+ setState(266); match(RETURN);
+ setState(267); expression(0);
}
}
catch (RecognitionException re) {
@@ -1325,7 +1418,7 @@ public final SkipStatementContext skipStatement() throws RecognitionException {
}
public static class AssignmentExpressionContext extends ParserRuleContext {
- public IdentifierContext Variable;
+ public Token Variable;
public ExpressionContext Value;
public AttributesContext ConditionalAttributes;
public ExpressionContext ConditionalExpression;
@@ -1337,12 +1430,10 @@ public ExpressionContext expression(int i) {
return getRuleContext(ExpressionContext.class,i);
}
public TerminalNode ASSIGN() { return getToken(MetaCodeParser.ASSIGN, 0); }
+ public TerminalNode ID() { return getToken(MetaCodeParser.ID, 0); }
public List expression() {
return getRuleContexts(ExpressionContext.class);
}
- public IdentifierContext identifier() {
- return getRuleContext(IdentifierContext.class,0);
- }
public AssignmentExpressionContext(ParserRuleContext parent, int invokingState) {
super(parent, invokingState);
}
@@ -1364,30 +1455,30 @@ public T accept(ParseTreeVisitor extends T> visitor) {
public final AssignmentExpressionContext assignmentExpression() throws RecognitionException {
AssignmentExpressionContext _localctx = new AssignmentExpressionContext(_ctx, getState());
- enterRule(_localctx, 26, RULE_assignmentExpression);
+ enterRule(_localctx, 30, RULE_assignmentExpression);
int _la;
try {
enterOuterAlt(_localctx, 1);
{
- setState(258); ((AssignmentExpressionContext)_localctx).Variable = identifier();
- setState(259); match(ASSIGN);
- setState(260); ((AssignmentExpressionContext)_localctx).Value = expression(0);
- setState(269);
- switch ( getInterpreter().adaptivePredict(_input,32,_ctx) ) {
+ setState(269); ((AssignmentExpressionContext)_localctx).Variable = match(ID);
+ setState(270); match(ASSIGN);
+ setState(271); ((AssignmentExpressionContext)_localctx).Value = expression(0);
+ setState(280);
+ switch ( getInterpreter().adaptivePredict(_input,31,_ctx) ) {
case 1:
{
- setState(262);
+ setState(273);
_la = _input.LA(1);
if (_la==ATTRIBUTE_ID) {
{
- setState(261); ((AssignmentExpressionContext)_localctx).ConditionalAttributes = attributes();
+ setState(272); ((AssignmentExpressionContext)_localctx).ConditionalAttributes = attributes();
}
}
- setState(264); match(IF);
- setState(265); match(LEFT_PARENTHESIS);
- setState(266); ((AssignmentExpressionContext)_localctx).ConditionalExpression = expression(0);
- setState(267); match(RIGHT_PARENTHESIS);
+ setState(275); match(IF);
+ setState(276); match(LEFT_PARENTHESIS);
+ setState(277); ((AssignmentExpressionContext)_localctx).ConditionalExpression = expression(0);
+ setState(278); match(RIGHT_PARENTHESIS);
}
break;
}
@@ -1407,7 +1498,7 @@ public final AssignmentExpressionContext assignmentExpression() throws Recogniti
public static class IfStatementContext extends ParserRuleContext {
public ExpressionContext Condition;
public StatementsContext Statements;
- public ElseIfStatementContext ElseIfExpressions;
+ public ElseIfStatementContext ElseIfStatements;
public StatementsContext ElseStatements;
public TerminalNode IF() { return getToken(MetaCodeParser.IF, 0); }
public List statements() {
@@ -1448,42 +1539,42 @@ public T accept(ParseTreeVisitor extends T> visitor) {
public final IfStatementContext ifStatement() throws RecognitionException {
IfStatementContext _localctx = new IfStatementContext(_ctx, getState());
- enterRule(_localctx, 28, RULE_ifStatement);
+ enterRule(_localctx, 32, RULE_ifStatement);
int _la;
try {
int _alt;
enterOuterAlt(_localctx, 1);
{
- setState(271); match(IF);
- setState(272); match(LEFT_PARENTHESIS);
- setState(273); ((IfStatementContext)_localctx).Condition = expression(0);
- setState(274); match(RIGHT_PARENTHESIS);
- setState(275); ((IfStatementContext)_localctx).Statements = statements();
- setState(279);
+ setState(282); match(IF);
+ setState(283); match(LEFT_PARENTHESIS);
+ setState(284); ((IfStatementContext)_localctx).Condition = expression(0);
+ setState(285); match(RIGHT_PARENTHESIS);
+ setState(286); ((IfStatementContext)_localctx).Statements = statements();
+ setState(290);
_errHandler.sync(this);
- _alt = getInterpreter().adaptivePredict(_input,33,_ctx);
+ _alt = getInterpreter().adaptivePredict(_input,32,_ctx);
while ( _alt!=2 && _alt!=-1 ) {
if ( _alt==1 ) {
{
{
- setState(276); ((IfStatementContext)_localctx).ElseIfExpressions = elseIfStatement();
+ setState(287); ((IfStatementContext)_localctx).ElseIfStatements = elseIfStatement();
}
}
}
- setState(281);
+ setState(292);
_errHandler.sync(this);
- _alt = getInterpreter().adaptivePredict(_input,33,_ctx);
+ _alt = getInterpreter().adaptivePredict(_input,32,_ctx);
}
- setState(284);
+ setState(295);
_la = _input.LA(1);
if (_la==ELSE) {
{
- setState(282); match(ELSE);
- setState(283); ((IfStatementContext)_localctx).ElseStatements = statements();
+ setState(293); match(ELSE);
+ setState(294); ((IfStatementContext)_localctx).ElseStatements = statements();
}
}
- setState(286); match(END);
+ setState(297); match(END);
}
}
catch (RecognitionException re) {
@@ -1498,6 +1589,8 @@ public final IfStatementContext ifStatement() throws RecognitionException {
}
public static class ElseIfStatementContext extends ParserRuleContext {
+ public ExpressionContext Condition;
+ public StatementsContext Statements;
public TerminalNode IF() { return getToken(MetaCodeParser.IF, 0); }
public StatementsContext statements() {
return getRuleContext(StatementsContext.class,0);
@@ -1527,16 +1620,16 @@ public T accept(ParseTreeVisitor extends T> visitor) {
public final ElseIfStatementContext elseIfStatement() throws RecognitionException {
ElseIfStatementContext _localctx = new ElseIfStatementContext(_ctx, getState());
- enterRule(_localctx, 30, RULE_elseIfStatement);
+ enterRule(_localctx, 34, RULE_elseIfStatement);
try {
enterOuterAlt(_localctx, 1);
{
- setState(288); match(ELSE);
- setState(289); match(IF);
- setState(290); match(LEFT_PARENTHESIS);
- setState(291); expression(0);
- setState(292); match(RIGHT_PARENTHESIS);
- setState(293); statements();
+ setState(299); match(ELSE);
+ setState(300); match(IF);
+ setState(301); match(LEFT_PARENTHESIS);
+ setState(302); ((ElseIfStatementContext)_localctx).Condition = expression(0);
+ setState(303); match(RIGHT_PARENTHESIS);
+ setState(304); ((ElseIfStatementContext)_localctx).Statements = statements();
}
}
catch (RecognitionException re) {
@@ -1578,23 +1671,23 @@ public T accept(ParseTreeVisitor extends T> visitor) {
public final FormalParameterListContext formalParameterList() throws RecognitionException {
FormalParameterListContext _localctx = new FormalParameterListContext(_ctx, getState());
- enterRule(_localctx, 32, RULE_formalParameterList);
+ enterRule(_localctx, 36, RULE_formalParameterList);
int _la;
try {
enterOuterAlt(_localctx, 1);
{
- setState(295); formalParameter();
- setState(300);
+ setState(306); formalParameter();
+ setState(311);
_errHandler.sync(this);
_la = _input.LA(1);
while (_la==3) {
{
{
- setState(296); match(3);
- setState(297); formalParameter();
+ setState(307); match(3);
+ setState(308); formalParameter();
}
}
- setState(302);
+ setState(313);
_errHandler.sync(this);
_la = _input.LA(1);
}
@@ -1612,15 +1705,16 @@ public final FormalParameterListContext formalParameterList() throws Recognition
}
public static class FormalParameterContext extends ParserRuleContext {
+ public AttributesContext Attributes;
+ public Token Name;
+ public TypeNameContext Type;
public AttributesContext attributes() {
return getRuleContext(AttributesContext.class,0);
}
public TypeNameContext typeName() {
return getRuleContext(TypeNameContext.class,0);
}
- public IdentifierContext identifier() {
- return getRuleContext(IdentifierContext.class,0);
- }
+ public TerminalNode ID() { return getToken(MetaCodeParser.ID, 0); }
public FormalParameterContext(ParserRuleContext parent, int invokingState) {
super(parent, invokingState);
}
@@ -1642,22 +1736,22 @@ public T accept(ParseTreeVisitor extends T> visitor) {
public final FormalParameterContext formalParameter() throws RecognitionException {
FormalParameterContext _localctx = new FormalParameterContext(_ctx, getState());
- enterRule(_localctx, 34, RULE_formalParameter);
+ enterRule(_localctx, 38, RULE_formalParameter);
int _la;
try {
enterOuterAlt(_localctx, 1);
{
- setState(304);
+ setState(315);
_la = _input.LA(1);
if (_la==ATTRIBUTE_ID) {
{
- setState(303); attributes();
+ setState(314); ((FormalParameterContext)_localctx).Attributes = attributes();
}
}
- setState(306); identifier();
- setState(307); match(8);
- setState(308); typeName();
+ setState(317); ((FormalParameterContext)_localctx).Name = match(ID);
+ setState(318); match(8);
+ setState(319); ((FormalParameterContext)_localctx).Type = typeName();
}
}
catch (RecognitionException re) {
@@ -1699,23 +1793,23 @@ public T accept(ParseTreeVisitor extends T> visitor) {
public final ActualParameterListContext actualParameterList() throws RecognitionException {
ActualParameterListContext _localctx = new ActualParameterListContext(_ctx, getState());
- enterRule(_localctx, 36, RULE_actualParameterList);
+ enterRule(_localctx, 40, RULE_actualParameterList);
int _la;
try {
enterOuterAlt(_localctx, 1);
{
- setState(310); expression(0);
- setState(315);
+ setState(321); expression(0);
+ setState(326);
_errHandler.sync(this);
_la = _input.LA(1);
while (_la==3) {
{
{
- setState(311); match(3);
- setState(312); expression(0);
+ setState(322); match(3);
+ setState(323); expression(0);
}
}
- setState(317);
+ setState(328);
_errHandler.sync(this);
_la = _input.LA(1);
}
@@ -1761,31 +1855,31 @@ public T accept(ParseTreeVisitor extends T> visitor) {
public final TypeNameContext typeName() throws RecognitionException {
TypeNameContext _localctx = new TypeNameContext(_ctx, getState());
- enterRule(_localctx, 38, RULE_typeName);
+ enterRule(_localctx, 42, RULE_typeName);
int _la;
try {
enterOuterAlt(_localctx, 1);
{
- setState(319);
+ setState(330);
_la = _input.LA(1);
if (_la==ATTRIBUTE_ID) {
{
- setState(318); attributes();
+ setState(329); attributes();
}
}
- setState(321); match(ID);
- setState(326);
+ setState(332); match(ID);
+ setState(337);
_errHandler.sync(this);
_la = _input.LA(1);
while (_la==2) {
{
{
- setState(322); match(2);
- setState(323); match(ID);
+ setState(333); match(2);
+ setState(334); match(ID);
}
}
- setState(328);
+ setState(339);
_errHandler.sync(this);
_la = _input.LA(1);
}
@@ -1844,42 +1938,42 @@ public T accept(ParseTreeVisitor extends T> visitor) {
public final ConstantContext constant() throws RecognitionException {
ConstantContext _localctx = new ConstantContext(_ctx, getState());
- enterRule(_localctx, 40, RULE_constant);
+ enterRule(_localctx, 44, RULE_constant);
try {
- setState(334);
- switch ( getInterpreter().adaptivePredict(_input,40,_ctx) ) {
+ setState(345);
+ switch ( getInterpreter().adaptivePredict(_input,39,_ctx) ) {
case 1:
enterOuterAlt(_localctx, 1);
{
- setState(329); ((ConstantContext)_localctx).Number = numberConstant();
+ setState(340); ((ConstantContext)_localctx).Number = numberConstant();
}
break;
case 2:
enterOuterAlt(_localctx, 2);
{
- setState(330); ((ConstantContext)_localctx).String = stringConstant();
+ setState(341); ((ConstantContext)_localctx).String = stringConstant();
}
break;
case 3:
enterOuterAlt(_localctx, 3);
{
- setState(331); ((ConstantContext)_localctx).Boolean = booleanConstant();
+ setState(342); ((ConstantContext)_localctx).Boolean = booleanConstant();
}
break;
case 4:
enterOuterAlt(_localctx, 4);
{
- setState(332); ((ConstantContext)_localctx).Array = arrayConstant();
+ setState(343); ((ConstantContext)_localctx).Array = arrayConstant();
}
break;
case 5:
enterOuterAlt(_localctx, 5);
{
- setState(333); ((ConstantContext)_localctx).Interval = intervalConstant();
+ setState(344); ((ConstantContext)_localctx).Interval = intervalConstant();
}
break;
}
@@ -1919,11 +2013,11 @@ public T accept(ParseTreeVisitor extends T> visitor) {
public final IdentifierContext identifier() throws RecognitionException {
IdentifierContext _localctx = new IdentifierContext(_ctx, getState());
- enterRule(_localctx, 42, RULE_identifier);
+ enterRule(_localctx, 46, RULE_identifier);
try {
enterOuterAlt(_localctx, 1);
{
- setState(336); ((IdentifierContext)_localctx).Id = match(ID);
+ setState(347); ((IdentifierContext)_localctx).Id = match(ID);
}
}
catch (RecognitionException re) {
@@ -1960,11 +2054,11 @@ public T accept(ParseTreeVisitor extends T> visitor) {
public final NumberConstantContext numberConstant() throws RecognitionException {
NumberConstantContext _localctx = new NumberConstantContext(_ctx, getState());
- enterRule(_localctx, 44, RULE_numberConstant);
+ enterRule(_localctx, 48, RULE_numberConstant);
try {
enterOuterAlt(_localctx, 1);
{
- setState(338); match(NUMBER);
+ setState(349); match(NUMBER);
}
}
catch (RecognitionException re) {
@@ -2001,11 +2095,11 @@ public T accept(ParseTreeVisitor extends T> visitor) {
public final StringConstantContext stringConstant() throws RecognitionException {
StringConstantContext _localctx = new StringConstantContext(_ctx, getState());
- enterRule(_localctx, 46, RULE_stringConstant);
+ enterRule(_localctx, 50, RULE_stringConstant);
try {
enterOuterAlt(_localctx, 1);
{
- setState(340); match(STRING);
+ setState(351); match(STRING);
}
}
catch (RecognitionException re) {
@@ -2042,11 +2136,11 @@ public T accept(ParseTreeVisitor extends T> visitor) {
public final BooleanConstantContext booleanConstant() throws RecognitionException {
BooleanConstantContext _localctx = new BooleanConstantContext(_ctx, getState());
- enterRule(_localctx, 48, RULE_booleanConstant);
+ enterRule(_localctx, 52, RULE_booleanConstant);
try {
enterOuterAlt(_localctx, 1);
{
- setState(342); match(BOOLEAN);
+ setState(353); match(BOOLEAN);
}
}
catch (RecognitionException re) {
@@ -2088,39 +2182,39 @@ public T accept(ParseTreeVisitor extends T> visitor) {
public final ArrayConstantContext arrayConstant() throws RecognitionException {
ArrayConstantContext _localctx = new ArrayConstantContext(_ctx, getState());
- enterRule(_localctx, 50, RULE_arrayConstant);
+ enterRule(_localctx, 54, RULE_arrayConstant);
int _la;
try {
- setState(357);
- switch ( getInterpreter().adaptivePredict(_input,42,_ctx) ) {
+ setState(368);
+ switch ( getInterpreter().adaptivePredict(_input,41,_ctx) ) {
case 1:
enterOuterAlt(_localctx, 1);
{
- setState(344); match(7);
- setState(345); expression(0);
- setState(350);
+ setState(355); match(7);
+ setState(356); expression(0);
+ setState(361);
_errHandler.sync(this);
_la = _input.LA(1);
while (_la==3) {
{
{
- setState(346); match(3);
- setState(347); expression(0);
+ setState(357); match(3);
+ setState(358); expression(0);
}
}
- setState(352);
+ setState(363);
_errHandler.sync(this);
_la = _input.LA(1);
}
- setState(353); match(1);
+ setState(364); match(1);
}
break;
case 2:
enterOuterAlt(_localctx, 2);
{
- setState(355); match(7);
- setState(356); match(1);
+ setState(366); match(7);
+ setState(367); match(1);
}
break;
}
@@ -2165,19 +2259,19 @@ public T accept(ParseTreeVisitor extends T> visitor) {
public final IntervalConstantContext intervalConstant() throws RecognitionException {
IntervalConstantContext _localctx = new IntervalConstantContext(_ctx, getState());
- enterRule(_localctx, 52, RULE_intervalConstant);
+ enterRule(_localctx, 56, RULE_intervalConstant);
try {
enterOuterAlt(_localctx, 1);
{
- setState(359); ((IntervalConstantContext)_localctx).Start = match(NUMBER);
- setState(360); match(13);
- setState(361); ((IntervalConstantContext)_localctx).End = match(NUMBER);
- setState(364);
- switch ( getInterpreter().adaptivePredict(_input,43,_ctx) ) {
+ setState(370); ((IntervalConstantContext)_localctx).Start = match(NUMBER);
+ setState(371); match(13);
+ setState(372); ((IntervalConstantContext)_localctx).End = match(NUMBER);
+ setState(375);
+ switch ( getInterpreter().adaptivePredict(_input,42,_ctx) ) {
case 1:
{
- setState(362); match(15);
- setState(363); ((IntervalConstantContext)_localctx).By = match(NUMBER);
+ setState(373); match(15);
+ setState(374); ((IntervalConstantContext)_localctx).By = match(NUMBER);
}
break;
}
@@ -2222,29 +2316,29 @@ public T accept(ParseTreeVisitor extends T> visitor) {
public final AttributesContext attributes() throws RecognitionException {
AttributesContext _localctx = new AttributesContext(_ctx, getState());
- enterRule(_localctx, 54, RULE_attributes);
+ enterRule(_localctx, 58, RULE_attributes);
try {
int _alt;
enterOuterAlt(_localctx, 1);
{
- setState(367);
+ setState(378);
_errHandler.sync(this);
- _alt = getInterpreter().adaptivePredict(_input,44,_ctx);
+ _alt = getInterpreter().adaptivePredict(_input,43,_ctx);
do {
switch (_alt) {
case 1:
{
{
- setState(366); attribute();
+ setState(377); attribute();
}
}
break;
default:
throw new NoViableAltException(this);
}
- setState(369);
+ setState(380);
_errHandler.sync(this);
- _alt = getInterpreter().adaptivePredict(_input,44,_ctx);
+ _alt = getInterpreter().adaptivePredict(_input,43,_ctx);
} while ( _alt!=2 && _alt!=-1 );
}
}
@@ -2289,33 +2383,33 @@ public T accept(ParseTreeVisitor extends T> visitor) {
public final AttributeContext attribute() throws RecognitionException {
AttributeContext _localctx = new AttributeContext(_ctx, getState());
- enterRule(_localctx, 56, RULE_attribute);
+ enterRule(_localctx, 60, RULE_attribute);
int _la;
try {
enterOuterAlt(_localctx, 1);
{
- setState(371); ((AttributeContext)_localctx).Name = match(ATTRIBUTE_ID);
- setState(383);
- switch ( getInterpreter().adaptivePredict(_input,46,_ctx) ) {
+ setState(382); ((AttributeContext)_localctx).Name = match(ATTRIBUTE_ID);
+ setState(394);
+ switch ( getInterpreter().adaptivePredict(_input,45,_ctx) ) {
case 1:
{
- setState(372); match(LEFT_PARENTHESIS);
- setState(373); constant();
- setState(378);
+ setState(383); match(LEFT_PARENTHESIS);
+ setState(384); constant();
+ setState(389);
_errHandler.sync(this);
_la = _input.LA(1);
while (_la==3) {
{
{
- setState(374); match(3);
- setState(375); constant();
+ setState(385); match(3);
+ setState(386); constant();
}
}
- setState(380);
+ setState(391);
_errHandler.sync(this);
_la = _input.LA(1);
}
- setState(381); match(RIGHT_PARENTHESIS);
+ setState(392); match(RIGHT_PARENTHESIS);
}
break;
}
@@ -2340,176 +2434,179 @@ public boolean sempred(RuleContext _localctx, int ruleIndex, int predIndex) {
}
private boolean expression_sempred(ExpressionContext _localctx, int predIndex) {
switch (predIndex) {
- case 0: return precpred(_ctx, 12);
+ case 0: return 12 >= _localctx._p;
- case 1: return precpred(_ctx, 11);
+ case 1: return 11 >= _localctx._p;
- case 2: return precpred(_ctx, 10);
+ case 2: return 10 >= _localctx._p;
- case 3: return precpred(_ctx, 9);
+ case 3: return 9 >= _localctx._p;
- case 4: return precpred(_ctx, 8);
+ case 4: return 8 >= _localctx._p;
- case 5: return precpred(_ctx, 7);
+ case 5: return 7 >= _localctx._p;
- case 6: return precpred(_ctx, 6);
+ case 6: return 6 >= _localctx._p;
- case 7: return precpred(_ctx, 5);
+ case 7: return 5 >= _localctx._p;
- case 8: return precpred(_ctx, 4);
+ case 8: return 4 >= _localctx._p;
- case 9: return precpred(_ctx, 3);
+ case 9: return 3 >= _localctx._p;
- case 10: return precpred(_ctx, 2);
+ case 10: return 2 >= _localctx._p;
- case 11: return precpred(_ctx, 1);
+ case 11: return 1 >= _localctx._p;
}
return true;
}
public static final String _serializedATN =
- "\3\u0430\ud6d1\u8206\uad2d\u4417\uaef1\u8d80\uaadd\3.\u0184\4\2\t\2\4"+
+ "\3\uacf5\uee8c\u4f5d\u8b0d\u4a45\u78bd\u1b2f\u3378\3/\u018f\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\3\2\3\2\3\3\3\3\3\3"+
- "\6\3B\n\3\r\3\16\3C\3\4\3\4\5\4H\n\4\3\4\3\4\5\4L\n\4\3\4\3\4\5\4P\n\4"+
- "\3\4\3\4\5\4T\n\4\3\4\3\4\5\4X\n\4\3\4\3\4\5\4\\\n\4\3\4\5\4_\n\4\3\5"+
- "\5\5b\n\5\3\5\3\5\3\5\3\5\5\5h\n\5\3\5\3\5\3\5\3\6\3\6\3\6\3\6\3\6\3\6"+
- "\5\6s\n\6\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\6\3\6\3\6"+
+ "\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 \3\2"+
+ "\3\2\3\3\3\3\3\3\6\3F\n\3\r\3\16\3G\3\4\3\4\3\4\5\4M\n\4\3\4\3\4\5\4Q"+
+ "\n\4\3\4\3\4\5\4U\n\4\3\4\3\4\5\4Y\n\4\3\4\3\4\5\4]\n\4\3\4\3\4\5\4a\n"+
+ "\4\3\4\5\4d\n\4\3\5\5\5g\n\5\3\5\3\5\3\5\3\5\5\5m\n\5\3\5\3\5\3\5\3\6"+
+ "\3\6\3\6\3\6\3\6\3\6\5\6x\n\6\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\6\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\6\3\6\3"+
- "\6\3\6\3\6\3\6\7\6\u0099\n\6\f\6\16\6\u009c\13\6\3\7\3\7\3\7\5\7\u00a1"+
- "\n\7\3\7\3\7\3\b\3\b\3\b\3\b\5\b\u00a9\n\b\6\b\u00ab\n\b\r\b\16\b\u00ac"+
- "\3\t\5\t\u00b0\n\t\3\t\3\t\5\t\u00b4\n\t\3\t\3\t\5\t\u00b8\n\t\3\t\3\t"+
- "\5\t\u00bc\n\t\3\t\3\t\5\t\u00c0\n\t\3\t\3\t\3\t\3\t\5\t\u00c6\n\t\3\n"+
- "\3\n\5\n\u00ca\n\n\3\n\3\n\5\n\u00ce\n\n\3\n\3\n\3\n\5\n\u00d3\n\n\3\n"+
- "\3\n\3\n\3\n\3\n\3\n\5\n\u00db\n\n\3\n\3\n\5\n\u00df\n\n\3\n\3\n\3\n\5"+
- "\n\u00e4\n\n\3\n\3\n\5\n\u00e8\n\n\3\13\3\13\3\13\5\13\u00ed\n\13\3\13"+
- "\3\13\3\13\5\13\u00f2\n\13\3\13\3\13\3\13\3\13\3\13\3\f\3\f\3\f\3\f\3"+
- "\f\3\f\3\r\3\r\3\r\3\r\3\16\3\16\3\17\3\17\3\17\3\17\5\17\u0109\n\17\3"+
- "\17\3\17\3\17\3\17\3\17\5\17\u0110\n\17\3\20\3\20\3\20\3\20\3\20\3\20"+
- "\7\20\u0118\n\20\f\20\16\20\u011b\13\20\3\20\3\20\5\20\u011f\n\20\3\20"+
- "\3\20\3\21\3\21\3\21\3\21\3\21\3\21\3\21\3\22\3\22\3\22\7\22\u012d\n\22"+
- "\f\22\16\22\u0130\13\22\3\23\5\23\u0133\n\23\3\23\3\23\3\23\3\23\3\24"+
- "\3\24\3\24\7\24\u013c\n\24\f\24\16\24\u013f\13\24\3\25\5\25\u0142\n\25"+
- "\3\25\3\25\3\25\7\25\u0147\n\25\f\25\16\25\u014a\13\25\3\26\3\26\3\26"+
- "\3\26\3\26\5\26\u0151\n\26\3\27\3\27\3\30\3\30\3\31\3\31\3\32\3\32\3\33"+
- "\3\33\3\33\3\33\7\33\u015f\n\33\f\33\16\33\u0162\13\33\3\33\3\33\3\33"+
- "\3\33\5\33\u0168\n\33\3\34\3\34\3\34\3\34\3\34\5\34\u016f\n\34\3\35\6"+
- "\35\u0172\n\35\r\35\16\35\u0173\3\36\3\36\3\36\3\36\3\36\7\36\u017b\n"+
- "\36\f\36\16\36\u017e\13\36\3\36\3\36\5\36\u0182\n\36\3\36\2\3\n\37\2\4"+
- "\6\b\n\f\16\20\22\24\26\30\32\34\36 \"$&(*,.\60\62\64\668:\2\2\u01ac\2"+
- "<\3\2\2\2\4A\3\2\2\2\6^\3\2\2\2\ba\3\2\2\2\nr\3\2\2\2\f\u009d\3\2\2\2"+
- "\16\u00a4\3\2\2\2\20\u00c5\3\2\2\2\22\u00e7\3\2\2\2\24\u00e9\3\2\2\2\26"+
- "\u00f8\3\2\2\2\30\u00fe\3\2\2\2\32\u0102\3\2\2\2\34\u0104\3\2\2\2\36\u0111"+
- "\3\2\2\2 \u0122\3\2\2\2\"\u0129\3\2\2\2$\u0132\3\2\2\2&\u0138\3\2\2\2"+
- "(\u0141\3\2\2\2*\u0150\3\2\2\2,\u0152\3\2\2\2.\u0154\3\2\2\2\60\u0156"+
- "\3\2\2\2\62\u0158\3\2\2\2\64\u0167\3\2\2\2\66\u0169\3\2\2\28\u0171\3\2"+
- "\2\2:\u0175\3\2\2\2<=\5\4\3\2=\3\3\2\2\2>?\5\6\4\2?@\7\r\2\2@B\3\2\2\2"+
- "A>\3\2\2\2BC\3\2\2\2CA\3\2\2\2CD\3\2\2\2D\5\3\2\2\2E_\5\n\6\2FH\58\35"+
- "\2GF\3\2\2\2GH\3\2\2\2HI\3\2\2\2I_\5\b\5\2JL\58\35\2KJ\3\2\2\2KL\3\2\2"+
- "\2LM\3\2\2\2M_\5\36\20\2NP\58\35\2ON\3\2\2\2OP\3\2\2\2PQ\3\2\2\2Q_\5\30"+
- "\r\2RT\58\35\2SR\3\2\2\2ST\3\2\2\2TU\3\2\2\2U_\5\24\13\2VX\58\35\2WV\3"+
- "\2\2\2WX\3\2\2\2XY\3\2\2\2Y_\5\26\f\2Z\\\58\35\2[Z\3\2\2\2[\\\3\2\2\2"+
- "\\]\3\2\2\2]_\5\32\16\2^E\3\2\2\2^G\3\2\2\2^K\3\2\2\2^O\3\2\2\2^S\3\2"+
- "\2\2^W\3\2\2\2^[\3\2\2\2_\7\3\2\2\2`b\58\35\2a`\3\2\2\2ab\3\2\2\2bc\3"+
- "\2\2\2cd\7\36\2\2dg\7\'\2\2ef\7\n\2\2fh\5(\25\2ge\3\2\2\2gh\3\2\2\2hi"+
- "\3\2\2\2ij\7 \2\2jk\5\n\6\2k\t\3\2\2\2lm\b\6\1\2mn\7#\2\2ns\5\n\6\17o"+
- "s\5\20\t\2ps\5\f\7\2qs\5\16\b\2rl\3\2\2\2ro\3\2\2\2rp\3\2\2\2rq\3\2\2"+
- "\2s\u009a\3\2\2\2tu\f\16\2\2uv\7\6\2\2v\u0099\5\n\6\17wx\f\r\2\2xy\7\b"+
- "\2\2y\u0099\5\n\6\16z{\f\f\2\2{|\7\7\2\2|\u0099\5\n\6\r}~\f\13\2\2~\177"+
- "\7\23\2\2\177\u0099\5\n\6\f\u0080\u0081\f\n\2\2\u0081\u0082\7\13\2\2\u0082"+
- "\u0099\5\n\6\13\u0083\u0084\f\t\2\2\u0084\u0085\7\20\2\2\u0085\u0099\5"+
- "\n\6\n\u0086\u0087\f\b\2\2\u0087\u0088\7\16\2\2\u0088\u0099\5\n\6\t\u0089"+
- "\u008a\f\7\2\2\u008a\u008b\7\24\2\2\u008b\u0099\5\n\6\b\u008c\u008d\f"+
- "\6\2\2\u008d\u008e\7\22\2\2\u008e\u0099\5\n\6\7\u008f\u0090\f\5\2\2\u0090"+
- "\u0091\7\f\2\2\u0091\u0099\5\n\6\6\u0092\u0093\f\4\2\2\u0093\u0094\7!"+
- "\2\2\u0094\u0099\5\n\6\5\u0095\u0096\f\3\2\2\u0096\u0097\7\"\2\2\u0097"+
- "\u0099\5\n\6\4\u0098t\3\2\2\2\u0098w\3\2\2\2\u0098z\3\2\2\2\u0098}\3\2"+
- "\2\2\u0098\u0080\3\2\2\2\u0098\u0083\3\2\2\2\u0098\u0086\3\2\2\2\u0098"+
- "\u0089\3\2\2\2\u0098\u008c\3\2\2\2\u0098\u008f\3\2\2\2\u0098\u0092\3\2"+
- "\2\2\u0098\u0095\3\2\2\2\u0099\u009c\3\2\2\2\u009a\u0098\3\2\2\2\u009a"+
- "\u009b\3\2\2\2\u009b\13\3\2\2\2\u009c\u009a\3\2\2\2\u009d\u009e\5\20\t"+
- "\2\u009e\u00a0\7%\2\2\u009f\u00a1\5\n\6\2\u00a0\u009f\3\2\2\2\u00a0\u00a1"+
- "\3\2\2\2\u00a1\u00a2\3\2\2\2\u00a2\u00a3\7&\2\2\u00a3\r\3\2\2\2\u00a4"+
- "\u00aa\5\20\t\2\u00a5\u00a8\7\4\2\2\u00a6\u00a9\5,\27\2\u00a7\u00a9\5"+
- "\f\7\2\u00a8\u00a6\3\2\2\2\u00a8\u00a7\3\2\2\2\u00a9\u00ab\3\2\2\2\u00aa"+
- "\u00a5\3\2\2\2\u00ab\u00ac\3\2\2\2\u00ac\u00aa\3\2\2\2\u00ac\u00ad\3\2"+
- "\2\2\u00ad\17\3\2\2\2\u00ae\u00b0\58\35\2\u00af\u00ae\3\2\2\2\u00af\u00b0"+
- "\3\2\2\2\u00b0\u00b1\3\2\2\2\u00b1\u00c6\5*\26\2\u00b2\u00b4\58\35\2\u00b3"+
- "\u00b2\3\2\2\2\u00b3\u00b4\3\2\2\2\u00b4\u00b5\3\2\2\2\u00b5\u00c6\5,"+
- "\27\2\u00b6\u00b8\58\35\2\u00b7\u00b6\3\2\2\2\u00b7\u00b8\3\2\2\2\u00b8"+
- "\u00b9\3\2\2\2\u00b9\u00c6\5\22\n\2\u00ba\u00bc\58\35\2\u00bb\u00ba\3"+
- "\2\2\2\u00bb\u00bc\3\2\2\2\u00bc\u00bd\3\2\2\2\u00bd\u00c6\5\34\17\2\u00be"+
- "\u00c0\58\35\2\u00bf\u00be\3\2\2\2\u00bf\u00c0\3\2\2\2\u00c0\u00c1\3\2"+
- "\2\2\u00c1\u00c2\7%\2\2\u00c2\u00c3\5\n\6\2\u00c3\u00c4\7&\2\2\u00c4\u00c6"+
- "\3\2\2\2\u00c5\u00af\3\2\2\2\u00c5\u00b3\3\2\2\2\u00c5\u00b7\3\2\2\2\u00c5"+
- "\u00bb\3\2\2\2\u00c5\u00bf\3\2\2\2\u00c6\21\3\2\2\2\u00c7\u00c9\7\25\2"+
- "\2\u00c8\u00ca\5,\27\2\u00c9\u00c8\3\2\2\2\u00c9\u00ca\3\2\2\2\u00ca\u00cb"+
- "\3\2\2\2\u00cb\u00cd\7%\2\2\u00cc\u00ce\5\"\22\2\u00cd\u00cc\3\2\2\2\u00cd"+
- "\u00ce\3\2\2\2\u00ce\u00cf\3\2\2\2\u00cf\u00d2\7&\2\2\u00d0\u00d1\7\n"+
- "\2\2\u00d1\u00d3\5(\25\2\u00d2\u00d0\3\2\2\2\u00d2\u00d3\3\2\2\2\u00d3"+
- "\u00d4\3\2\2\2\u00d4\u00d5\7\32\2\2\u00d5\u00d6\5\4\3\2\u00d6\u00d7\7"+
- "\33\2\2\u00d7\u00e8\3\2\2\2\u00d8\u00da\7\25\2\2\u00d9\u00db\5,\27\2\u00da"+
- "\u00d9\3\2\2\2\u00da\u00db\3\2\2\2\u00db\u00dc\3\2\2\2\u00dc\u00de\7%"+
- "\2\2\u00dd\u00df\5\"\22\2\u00de\u00dd\3\2\2\2\u00de\u00df\3\2\2\2\u00df"+
- "\u00e0\3\2\2\2\u00e0\u00e3\7&\2\2\u00e1\u00e2\7\n\2\2\u00e2\u00e4\5(\25"+
- "\2\u00e3\u00e1\3\2\2\2\u00e3\u00e4\3\2\2\2\u00e4\u00e5\3\2\2\2\u00e5\u00e6"+
- "\7 \2\2\u00e6\u00e8\5\n\6\2\u00e7\u00c7\3\2\2\2\u00e7\u00d8\3\2\2\2\u00e8"+
- "\23\3\2\2\2\u00e9\u00ea\7\26\2\2\u00ea\u00ec\7%\2\2\u00eb\u00ed\7\36\2"+
- "\2\u00ec\u00eb\3\2\2\2\u00ec\u00ed\3\2\2\2\u00ed\u00ee\3\2\2\2\u00ee\u00f1"+
- "\5,\27\2\u00ef\u00f0\7\n\2\2\u00f0\u00f2\5(\25\2\u00f1\u00ef\3\2\2\2\u00f1"+
- "\u00f2\3\2\2\2\u00f2\u00f3\3\2\2\2\u00f3\u00f4\7\37\2\2\u00f4\u00f5\5"+
- "\n\6\2\u00f5\u00f6\7&\2\2\u00f6\u00f7\5\6\4\2\u00f7\25\3\2\2\2\u00f8\u00f9"+
- "\7\27\2\2\u00f9\u00fa\7%\2\2\u00fa\u00fb\5\n\6\2\u00fb\u00fc\7&\2\2\u00fc"+
- "\u00fd\5\6\4\2\u00fd\27\3\2\2\2\u00fe\u00ff\7\32\2\2\u00ff\u0100\5\4\3"+
- "\2\u0100\u0101\7\33\2\2\u0101\31\3\2\2\2\u0102\u0103\7\35\2\2\u0103\33"+
- "\3\2\2\2\u0104\u0105\5,\27\2\u0105\u0106\7 \2\2\u0106\u010f\5\n\6\2\u0107"+
- "\u0109\58\35\2\u0108\u0107\3\2\2\2\u0108\u0109\3\2\2\2\u0109\u010a\3\2"+
- "\2\2\u010a\u010b\7\30\2\2\u010b\u010c\7%\2\2\u010c\u010d\5\n\6\2\u010d"+
- "\u010e\7&\2\2\u010e\u0110\3\2\2\2\u010f\u0108\3\2\2\2\u010f\u0110\3\2"+
- "\2\2\u0110\35\3\2\2\2\u0111\u0112\7\30\2\2\u0112\u0113\7%\2\2\u0113\u0114"+
- "\5\n\6\2\u0114\u0115\7&\2\2\u0115\u0119\5\4\3\2\u0116\u0118\5 \21\2\u0117"+
- "\u0116\3\2\2\2\u0118\u011b\3\2\2\2\u0119\u0117\3\2\2\2\u0119\u011a\3\2"+
- "\2\2\u011a\u011e\3\2\2\2\u011b\u0119\3\2\2\2\u011c\u011d\7\31\2\2\u011d"+
- "\u011f\5\4\3\2\u011e\u011c\3\2\2\2\u011e\u011f\3\2\2\2\u011f\u0120\3\2"+
- "\2\2\u0120\u0121\7\33\2\2\u0121\37\3\2\2\2\u0122\u0123\7\31\2\2\u0123"+
- "\u0124\7\30\2\2\u0124\u0125\7%\2\2\u0125\u0126\5\n\6\2\u0126\u0127\7&"+
- "\2\2\u0127\u0128\5\4\3\2\u0128!\3\2\2\2\u0129\u012e\5$\23\2\u012a\u012b"+
- "\7\5\2\2\u012b\u012d\5$\23\2\u012c\u012a\3\2\2\2\u012d\u0130\3\2\2\2\u012e"+
- "\u012c\3\2\2\2\u012e\u012f\3\2\2\2\u012f#\3\2\2\2\u0130\u012e\3\2\2\2"+
- "\u0131\u0133\58\35\2\u0132\u0131\3\2\2\2\u0132\u0133\3\2\2\2\u0133\u0134"+
- "\3\2\2\2\u0134\u0135\5,\27\2\u0135\u0136\7\n\2\2\u0136\u0137\5(\25\2\u0137"+
- "%\3\2\2\2\u0138\u013d\5\n\6\2\u0139\u013a\7\5\2\2\u013a\u013c\5\n\6\2"+
- "\u013b\u0139\3\2\2\2\u013c\u013f\3\2\2\2\u013d\u013b\3\2\2\2\u013d\u013e"+
- "\3\2\2\2\u013e\'\3\2\2\2\u013f\u013d\3\2\2\2\u0140\u0142\58\35\2\u0141"+
- "\u0140\3\2\2\2\u0141\u0142\3\2\2\2\u0142\u0143\3\2\2\2\u0143\u0148\7\'"+
- "\2\2\u0144\u0145\7\4\2\2\u0145\u0147\7\'\2\2\u0146\u0144\3\2\2\2\u0147"+
- "\u014a\3\2\2\2\u0148\u0146\3\2\2\2\u0148\u0149\3\2\2\2\u0149)\3\2\2\2"+
- "\u014a\u0148\3\2\2\2\u014b\u0151\5.\30\2\u014c\u0151\5\60\31\2\u014d\u0151"+
- "\5\62\32\2\u014e\u0151\5\64\33\2\u014f\u0151\5\66\34\2\u0150\u014b\3\2"+
- "\2\2\u0150\u014c\3\2\2\2\u0150\u014d\3\2\2\2\u0150\u014e\3\2\2\2\u0150"+
- "\u014f\3\2\2\2\u0151+\3\2\2\2\u0152\u0153\7\'\2\2\u0153-\3\2\2\2\u0154"+
- "\u0155\7,\2\2\u0155/\3\2\2\2\u0156\u0157\7+\2\2\u0157\61\3\2\2\2\u0158"+
- "\u0159\7\34\2\2\u0159\63\3\2\2\2\u015a\u015b\7\t\2\2\u015b\u0160\5\n\6"+
- "\2\u015c\u015d\7\5\2\2\u015d\u015f\5\n\6\2\u015e\u015c\3\2\2\2\u015f\u0162"+
- "\3\2\2\2\u0160\u015e\3\2\2\2\u0160\u0161\3\2\2\2\u0161\u0163\3\2\2\2\u0162"+
- "\u0160\3\2\2\2\u0163\u0164\7\3\2\2\u0164\u0168\3\2\2\2\u0165\u0166\7\t"+
- "\2\2\u0166\u0168\7\3\2\2\u0167\u015a\3\2\2\2\u0167\u0165\3\2\2\2\u0168"+
- "\65\3\2\2\2\u0169\u016a\7,\2\2\u016a\u016b\7\17\2\2\u016b\u016e\7,\2\2"+
- "\u016c\u016d\7\21\2\2\u016d\u016f\7,\2\2\u016e\u016c\3\2\2\2\u016e\u016f"+
- "\3\2\2\2\u016f\67\3\2\2\2\u0170\u0172\5:\36\2\u0171\u0170\3\2\2\2\u0172"+
- "\u0173\3\2\2\2\u0173\u0171\3\2\2\2\u0173\u0174\3\2\2\2\u01749\3\2\2\2"+
- "\u0175\u0181\7*\2\2\u0176\u0177\7%\2\2\u0177\u017c\5*\26\2\u0178\u0179"+
- "\7\5\2\2\u0179\u017b\5*\26\2\u017a\u0178\3\2\2\2\u017b\u017e\3\2\2\2\u017c"+
- "\u017a\3\2\2\2\u017c\u017d\3\2\2\2\u017d\u017f\3\2\2\2\u017e\u017c\3\2"+
- "\2\2\u017f\u0180\7&\2\2\u0180\u0182\3\2\2\2\u0181\u0176\3\2\2\2\u0181"+
- "\u0182\3\2\2\2\u0182;\3\2\2\2\61CGKOSW[^agr\u0098\u009a\u00a0\u00a8\u00ac"+
- "\u00af\u00b3\u00b7\u00bb\u00bf\u00c5\u00c9\u00cd\u00d2\u00da\u00de\u00e3"+
- "\u00e7\u00ec\u00f1\u0108\u010f\u0119\u011e\u012e\u0132\u013d\u0141\u0148"+
- "\u0150\u0160\u0167\u016e\u0173\u017c\u0181";
+ "\6\3\6\3\6\3\6\3\6\3\6\3\6\3\6\3\6\7\6\u009e\n\6\f\6\16\6\u00a1\13\6\3"+
+ "\7\3\7\3\7\5\7\u00a6\n\7\3\7\3\7\3\b\3\b\5\b\u00ac\n\b\3\b\3\b\6\b\u00b0"+
+ "\n\b\r\b\16\b\u00b1\3\t\3\t\5\t\u00b6\n\t\3\n\5\n\u00b9\n\n\3\n\3\n\5"+
+ "\n\u00bd\n\n\3\n\3\n\5\n\u00c1\n\n\3\n\3\n\5\n\u00c5\n\n\3\n\3\n\5\n\u00c9"+
+ "\n\n\3\n\3\n\3\n\3\n\5\n\u00cf\n\n\3\13\3\13\5\13\u00d3\n\13\3\13\3\13"+
+ "\5\13\u00d7\n\13\3\13\3\13\3\13\3\13\3\13\3\13\3\13\3\13\3\13\3\13\5\13"+
+ "\u00e3\n\13\3\13\3\13\5\13\u00e7\n\13\3\13\3\13\3\13\3\13\3\13\3\13\3"+
+ "\13\5\13\u00f0\n\13\3\f\3\f\3\f\5\f\u00f5\n\f\3\f\3\f\3\f\5\f\u00fa\n"+
+ "\f\3\f\3\f\3\f\3\f\3\f\3\r\3\r\3\r\3\r\3\r\3\r\3\16\3\16\3\16\3\16\3\17"+
+ "\3\17\3\20\3\20\3\20\3\21\3\21\3\21\3\21\5\21\u0114\n\21\3\21\3\21\3\21"+
+ "\3\21\3\21\5\21\u011b\n\21\3\22\3\22\3\22\3\22\3\22\3\22\7\22\u0123\n"+
+ "\22\f\22\16\22\u0126\13\22\3\22\3\22\5\22\u012a\n\22\3\22\3\22\3\23\3"+
+ "\23\3\23\3\23\3\23\3\23\3\23\3\24\3\24\3\24\7\24\u0138\n\24\f\24\16\24"+
+ "\u013b\13\24\3\25\5\25\u013e\n\25\3\25\3\25\3\25\3\25\3\26\3\26\3\26\7"+
+ "\26\u0147\n\26\f\26\16\26\u014a\13\26\3\27\5\27\u014d\n\27\3\27\3\27\3"+
+ "\27\7\27\u0152\n\27\f\27\16\27\u0155\13\27\3\30\3\30\3\30\3\30\3\30\5"+
+ "\30\u015c\n\30\3\31\3\31\3\32\3\32\3\33\3\33\3\34\3\34\3\35\3\35\3\35"+
+ "\3\35\7\35\u016a\n\35\f\35\16\35\u016d\13\35\3\35\3\35\3\35\3\35\5\35"+
+ "\u0173\n\35\3\36\3\36\3\36\3\36\3\36\5\36\u017a\n\36\3\37\6\37\u017d\n"+
+ "\37\r\37\16\37\u017e\3 \3 \3 \3 \3 \7 \u0186\n \f \16 \u0189\13 \3 \3"+
+ " \5 \u018d\n \3 \2!\2\4\6\b\n\f\16\20\22\24\26\30\32\34\36 \"$&(*,.\60"+
+ "\62\64\668:<>\2\2\u01b5\2@\3\2\2\2\4E\3\2\2\2\6c\3\2\2\2\bf\3\2\2\2\n"+
+ "w\3\2\2\2\f\u00a2\3\2\2\2\16\u00ab\3\2\2\2\20\u00b5\3\2\2\2\22\u00ce\3"+
+ "\2\2\2\24\u00ef\3\2\2\2\26\u00f1\3\2\2\2\30\u0100\3\2\2\2\32\u0106\3\2"+
+ "\2\2\34\u010a\3\2\2\2\36\u010c\3\2\2\2 \u010f\3\2\2\2\"\u011c\3\2\2\2"+
+ "$\u012d\3\2\2\2&\u0134\3\2\2\2(\u013d\3\2\2\2*\u0143\3\2\2\2,\u014c\3"+
+ "\2\2\2.\u015b\3\2\2\2\60\u015d\3\2\2\2\62\u015f\3\2\2\2\64\u0161\3\2\2"+
+ "\2\66\u0163\3\2\2\28\u0172\3\2\2\2:\u0174\3\2\2\2<\u017c\3\2\2\2>\u0180"+
+ "\3\2\2\2@A\5\4\3\2A\3\3\2\2\2BC\5\6\4\2CD\7\r\2\2DF\3\2\2\2EB\3\2\2\2"+
+ "FG\3\2\2\2GE\3\2\2\2GH\3\2\2\2H\5\3\2\2\2Id\5\n\6\2Jd\5\36\20\2KM\5<\37"+
+ "\2LK\3\2\2\2LM\3\2\2\2MN\3\2\2\2Nd\5\b\5\2OQ\5<\37\2PO\3\2\2\2PQ\3\2\2"+
+ "\2QR\3\2\2\2Rd\5\"\22\2SU\5<\37\2TS\3\2\2\2TU\3\2\2\2UV\3\2\2\2Vd\5\32"+
+ "\16\2WY\5<\37\2XW\3\2\2\2XY\3\2\2\2YZ\3\2\2\2Zd\5\26\f\2[]\5<\37\2\\["+
+ "\3\2\2\2\\]\3\2\2\2]^\3\2\2\2^d\5\30\r\2_a\5<\37\2`_\3\2\2\2`a\3\2\2\2"+
+ "ab\3\2\2\2bd\5\34\17\2cI\3\2\2\2cJ\3\2\2\2cL\3\2\2\2cP\3\2\2\2cT\3\2\2"+
+ "\2cX\3\2\2\2c\\\3\2\2\2c`\3\2\2\2d\7\3\2\2\2eg\5<\37\2fe\3\2\2\2fg\3\2"+
+ "\2\2gh\3\2\2\2hi\7\36\2\2il\7(\2\2jk\7\n\2\2km\5,\27\2lj\3\2\2\2lm\3\2"+
+ "\2\2mn\3\2\2\2no\7 \2\2op\5\n\6\2p\t\3\2\2\2qr\b\6\1\2rs\7#\2\2sx\5\n"+
+ "\6\2tx\5\22\n\2ux\5\f\7\2vx\5\16\b\2wq\3\2\2\2wt\3\2\2\2wu\3\2\2\2wv\3"+
+ "\2\2\2x\u009f\3\2\2\2yz\6\6\2\3z{\7\6\2\2{\u009e\5\n\6\2|}\6\6\3\3}~\7"+
+ "\b\2\2~\u009e\5\n\6\2\177\u0080\6\6\4\3\u0080\u0081\7\7\2\2\u0081\u009e"+
+ "\5\n\6\2\u0082\u0083\6\6\5\3\u0083\u0084\7\23\2\2\u0084\u009e\5\n\6\2"+
+ "\u0085\u0086\6\6\6\3\u0086\u0087\7\13\2\2\u0087\u009e\5\n\6\2\u0088\u0089"+
+ "\6\6\7\3\u0089\u008a\7\20\2\2\u008a\u009e\5\n\6\2\u008b\u008c\6\6\b\3"+
+ "\u008c\u008d\7\16\2\2\u008d\u009e\5\n\6\2\u008e\u008f\6\6\t\3\u008f\u0090"+
+ "\7\24\2\2\u0090\u009e\5\n\6\2\u0091\u0092\6\6\n\3\u0092\u0093\7\22\2\2"+
+ "\u0093\u009e\5\n\6\2\u0094\u0095\6\6\13\3\u0095\u0096\7\f\2\2\u0096\u009e"+
+ "\5\n\6\2\u0097\u0098\6\6\f\3\u0098\u0099\7!\2\2\u0099\u009e\5\n\6\2\u009a"+
+ "\u009b\6\6\r\3\u009b\u009c\7\"\2\2\u009c\u009e\5\n\6\2\u009dy\3\2\2\2"+
+ "\u009d|\3\2\2\2\u009d\177\3\2\2\2\u009d\u0082\3\2\2\2\u009d\u0085\3\2"+
+ "\2\2\u009d\u0088\3\2\2\2\u009d\u008b\3\2\2\2\u009d\u008e\3\2\2\2\u009d"+
+ "\u0091\3\2\2\2\u009d\u0094\3\2\2\2\u009d\u0097\3\2\2\2\u009d\u009a\3\2"+
+ "\2\2\u009e\u00a1\3\2\2\2\u009f\u009d\3\2\2\2\u009f\u00a0\3\2\2\2\u00a0"+
+ "\13\3\2\2\2\u00a1\u009f\3\2\2\2\u00a2\u00a3\5\22\n\2\u00a3\u00a5\7&\2"+
+ "\2\u00a4\u00a6\5\n\6\2\u00a5\u00a4\3\2\2\2\u00a5\u00a6\3\2\2\2\u00a6\u00a7"+
+ "\3\2\2\2\u00a7\u00a8\7\'\2\2\u00a8\r\3\2\2\2\u00a9\u00ac\5\22\n\2\u00aa"+
+ "\u00ac\5\f\7\2\u00ab\u00a9\3\2\2\2\u00ab\u00aa\3\2\2\2\u00ac\u00af\3\2"+
+ "\2\2\u00ad\u00ae\7\4\2\2\u00ae\u00b0\5\20\t\2\u00af\u00ad\3\2\2\2\u00b0"+
+ "\u00b1\3\2\2\2\u00b1\u00af\3\2\2\2\u00b1\u00b2\3\2\2\2\u00b2\17\3\2\2"+
+ "\2\u00b3\u00b6\5\60\31\2\u00b4\u00b6\5\f\7\2\u00b5\u00b3\3\2\2\2\u00b5"+
+ "\u00b4\3\2\2\2\u00b6\21\3\2\2\2\u00b7\u00b9\5<\37\2\u00b8\u00b7\3\2\2"+
+ "\2\u00b8\u00b9\3\2\2\2\u00b9\u00ba\3\2\2\2\u00ba\u00cf\5.\30\2\u00bb\u00bd"+
+ "\5<\37\2\u00bc\u00bb\3\2\2\2\u00bc\u00bd\3\2\2\2\u00bd\u00be\3\2\2\2\u00be"+
+ "\u00cf\7(\2\2\u00bf\u00c1\5<\37\2\u00c0\u00bf\3\2\2\2\u00c0\u00c1\3\2"+
+ "\2\2\u00c1\u00c2\3\2\2\2\u00c2\u00cf\5\24\13\2\u00c3\u00c5\5<\37\2\u00c4"+
+ "\u00c3\3\2\2\2\u00c4\u00c5\3\2\2\2\u00c5\u00c6\3\2\2\2\u00c6\u00cf\5 "+
+ "\21\2\u00c7\u00c9\5<\37\2\u00c8\u00c7\3\2\2\2\u00c8\u00c9\3\2\2\2\u00c9"+
+ "\u00ca\3\2\2\2\u00ca\u00cb\7&\2\2\u00cb\u00cc\5\n\6\2\u00cc\u00cd\7\'"+
+ "\2\2\u00cd\u00cf\3\2\2\2\u00ce\u00b8\3\2\2\2\u00ce\u00bc\3\2\2\2\u00ce"+
+ "\u00c0\3\2\2\2\u00ce\u00c4\3\2\2\2\u00ce\u00c8\3\2\2\2\u00cf\23\3\2\2"+
+ "\2\u00d0\u00d2\7\25\2\2\u00d1\u00d3\7(\2\2\u00d2\u00d1\3\2\2\2\u00d2\u00d3"+
+ "\3\2\2\2\u00d3\u00d4\3\2\2\2\u00d4\u00d6\7&\2\2\u00d5\u00d7\5&\24\2\u00d6"+
+ "\u00d5\3\2\2\2\u00d6\u00d7\3\2\2\2\u00d7\u00d8\3\2\2\2\u00d8\u00d9\7\'"+
+ "\2\2\u00d9\u00da\7\n\2\2\u00da\u00db\5,\27\2\u00db\u00dc\3\2\2\2\u00dc"+
+ "\u00dd\7\32\2\2\u00dd\u00de\5\4\3\2\u00de\u00df\7\33\2\2\u00df\u00f0\3"+
+ "\2\2\2\u00e0\u00e2\7\25\2\2\u00e1\u00e3\7(\2\2\u00e2\u00e1\3\2\2\2\u00e2"+
+ "\u00e3\3\2\2\2\u00e3\u00e4\3\2\2\2\u00e4\u00e6\7&\2\2\u00e5\u00e7\5&\24"+
+ "\2\u00e6\u00e5\3\2\2\2\u00e6\u00e7\3\2\2\2\u00e7\u00e8\3\2\2\2\u00e8\u00e9"+
+ "\7\'\2\2\u00e9\u00ea\7\n\2\2\u00ea\u00eb\5,\27\2\u00eb\u00ec\3\2\2\2\u00ec"+
+ "\u00ed\7 \2\2\u00ed\u00ee\5\n\6\2\u00ee\u00f0\3\2\2\2\u00ef\u00d0\3\2"+
+ "\2\2\u00ef\u00e0\3\2\2\2\u00f0\25\3\2\2\2\u00f1\u00f2\7\26\2\2\u00f2\u00f4"+
+ "\7&\2\2\u00f3\u00f5\7\36\2\2\u00f4\u00f3\3\2\2\2\u00f4\u00f5\3\2\2\2\u00f5"+
+ "\u00f6\3\2\2\2\u00f6\u00f9\7(\2\2\u00f7\u00f8\7\n\2\2\u00f8\u00fa\5,\27"+
+ "\2\u00f9\u00f7\3\2\2\2\u00f9\u00fa\3\2\2\2\u00fa\u00fb\3\2\2\2\u00fb\u00fc"+
+ "\7\37\2\2\u00fc\u00fd\5\n\6\2\u00fd\u00fe\7\'\2\2\u00fe\u00ff\5\6\4\2"+
+ "\u00ff\27\3\2\2\2\u0100\u0101\7\27\2\2\u0101\u0102\7&\2\2\u0102\u0103"+
+ "\5\n\6\2\u0103\u0104\7\'\2\2\u0104\u0105\5\6\4\2\u0105\31\3\2\2\2\u0106"+
+ "\u0107\7\32\2\2\u0107\u0108\5\4\3\2\u0108\u0109\7\33\2\2\u0109\33\3\2"+
+ "\2\2\u010a\u010b\7\35\2\2\u010b\35\3\2\2\2\u010c\u010d\7%\2\2\u010d\u010e"+
+ "\5\n\6\2\u010e\37\3\2\2\2\u010f\u0110\7(\2\2\u0110\u0111\7 \2\2\u0111"+
+ "\u011a\5\n\6\2\u0112\u0114\5<\37\2\u0113\u0112\3\2\2\2\u0113\u0114\3\2"+
+ "\2\2\u0114\u0115\3\2\2\2\u0115\u0116\7\30\2\2\u0116\u0117\7&\2\2\u0117"+
+ "\u0118\5\n\6\2\u0118\u0119\7\'\2\2\u0119\u011b\3\2\2\2\u011a\u0113\3\2"+
+ "\2\2\u011a\u011b\3\2\2\2\u011b!\3\2\2\2\u011c\u011d\7\30\2\2\u011d\u011e"+
+ "\7&\2\2\u011e\u011f\5\n\6\2\u011f\u0120\7\'\2\2\u0120\u0124\5\4\3\2\u0121"+
+ "\u0123\5$\23\2\u0122\u0121\3\2\2\2\u0123\u0126\3\2\2\2\u0124\u0122\3\2"+
+ "\2\2\u0124\u0125\3\2\2\2\u0125\u0129\3\2\2\2\u0126\u0124\3\2\2\2\u0127"+
+ "\u0128\7\31\2\2\u0128\u012a\5\4\3\2\u0129\u0127\3\2\2\2\u0129\u012a\3"+
+ "\2\2\2\u012a\u012b\3\2\2\2\u012b\u012c\7\33\2\2\u012c#\3\2\2\2\u012d\u012e"+
+ "\7\31\2\2\u012e\u012f\7\30\2\2\u012f\u0130\7&\2\2\u0130\u0131\5\n\6\2"+
+ "\u0131\u0132\7\'\2\2\u0132\u0133\5\4\3\2\u0133%\3\2\2\2\u0134\u0139\5"+
+ "(\25\2\u0135\u0136\7\5\2\2\u0136\u0138\5(\25\2\u0137\u0135\3\2\2\2\u0138"+
+ "\u013b\3\2\2\2\u0139\u0137\3\2\2\2\u0139\u013a\3\2\2\2\u013a\'\3\2\2\2"+
+ "\u013b\u0139\3\2\2\2\u013c\u013e\5<\37\2\u013d\u013c\3\2\2\2\u013d\u013e"+
+ "\3\2\2\2\u013e\u013f\3\2\2\2\u013f\u0140\7(\2\2\u0140\u0141\7\n\2\2\u0141"+
+ "\u0142\5,\27\2\u0142)\3\2\2\2\u0143\u0148\5\n\6\2\u0144\u0145\7\5\2\2"+
+ "\u0145\u0147\5\n\6\2\u0146\u0144\3\2\2\2\u0147\u014a\3\2\2\2\u0148\u0146"+
+ "\3\2\2\2\u0148\u0149\3\2\2\2\u0149+\3\2\2\2\u014a\u0148\3\2\2\2\u014b"+
+ "\u014d\5<\37\2\u014c\u014b\3\2\2\2\u014c\u014d\3\2\2\2\u014d\u014e\3\2"+
+ "\2\2\u014e\u0153\7(\2\2\u014f\u0150\7\4\2\2\u0150\u0152\7(\2\2\u0151\u014f"+
+ "\3\2\2\2\u0152\u0155\3\2\2\2\u0153\u0151\3\2\2\2\u0153\u0154\3\2\2\2\u0154"+
+ "-\3\2\2\2\u0155\u0153\3\2\2\2\u0156\u015c\5\62\32\2\u0157\u015c\5\64\33"+
+ "\2\u0158\u015c\5\66\34\2\u0159\u015c\58\35\2\u015a\u015c\5:\36\2\u015b"+
+ "\u0156\3\2\2\2\u015b\u0157\3\2\2\2\u015b\u0158\3\2\2\2\u015b\u0159\3\2"+
+ "\2\2\u015b\u015a\3\2\2\2\u015c/\3\2\2\2\u015d\u015e\7(\2\2\u015e\61\3"+
+ "\2\2\2\u015f\u0160\7-\2\2\u0160\63\3\2\2\2\u0161\u0162\7,\2\2\u0162\65"+
+ "\3\2\2\2\u0163\u0164\7\34\2\2\u0164\67\3\2\2\2\u0165\u0166\7\t\2\2\u0166"+
+ "\u016b\5\n\6\2\u0167\u0168\7\5\2\2\u0168\u016a\5\n\6\2\u0169\u0167\3\2"+
+ "\2\2\u016a\u016d\3\2\2\2\u016b\u0169\3\2\2\2\u016b\u016c\3\2\2\2\u016c"+
+ "\u016e\3\2\2\2\u016d\u016b\3\2\2\2\u016e\u016f\7\3\2\2\u016f\u0173\3\2"+
+ "\2\2\u0170\u0171\7\t\2\2\u0171\u0173\7\3\2\2\u0172\u0165\3\2\2\2\u0172"+
+ "\u0170\3\2\2\2\u01739\3\2\2\2\u0174\u0175\7-\2\2\u0175\u0176\7\17\2\2"+
+ "\u0176\u0179\7-\2\2\u0177\u0178\7\21\2\2\u0178\u017a\7-\2\2\u0179\u0177"+
+ "\3\2\2\2\u0179\u017a\3\2\2\2\u017a;\3\2\2\2\u017b\u017d\5> \2\u017c\u017b"+
+ "\3\2\2\2\u017d\u017e\3\2\2\2\u017e\u017c\3\2\2\2\u017e\u017f\3\2\2\2\u017f"+
+ "=\3\2\2\2\u0180\u018c\7+\2\2\u0181\u0182\7&\2\2\u0182\u0187\5.\30\2\u0183"+
+ "\u0184\7\5\2\2\u0184\u0186\5.\30\2\u0185\u0183\3\2\2\2\u0186\u0189\3\2"+
+ "\2\2\u0187\u0185\3\2\2\2\u0187\u0188\3\2\2\2\u0188\u018a\3\2\2\2\u0189"+
+ "\u0187\3\2\2\2\u018a\u018b\7\'\2\2\u018b\u018d\3\2\2\2\u018c\u0181\3\2"+
+ "\2\2\u018c\u018d\3\2\2\2\u018d?\3\2\2\2\60GLPTX\\`cflw\u009d\u009f\u00a5"+
+ "\u00ab\u00b1\u00b5\u00b8\u00bc\u00c0\u00c4\u00c8\u00ce\u00d2\u00d6\u00e2"+
+ "\u00e6\u00ef\u00f4\u00f9\u0113\u011a\u0124\u0129\u0139\u013d\u0148\u014c"+
+ "\u0153\u015b\u016b\u0172\u0179\u017e\u0187\u018c";
public static final ATN _ATN =
- new ATNDeserializer().deserialize(_serializedATN.toCharArray());
+ ATNSimulator.deserialize(_serializedATN.toCharArray());
static {
_decisionToDFA = new DFA[_ATN.getNumberOfDecisions()];
for (int i = 0; i < _ATN.getNumberOfDecisions(); i++) {
diff --git a/grammar/src/MetaCodeVisitor.class b/grammar/src/MetaCodeVisitor.class
index cd5f9b1..293969a 100644
Binary files a/grammar/src/MetaCodeVisitor.class and b/grammar/src/MetaCodeVisitor.class differ
diff --git a/grammar/src/MetaCodeVisitor.java b/grammar/src/MetaCodeVisitor.java
index 2c6ab34..0f4e23c 100644
--- a/grammar/src/MetaCodeVisitor.java
+++ b/grammar/src/MetaCodeVisitor.java
@@ -1,4 +1,4 @@
-// Generated from ../MetaCode.g4 by ANTLR 4.2
+// Generated from ../MetaCode.g4 by ANTLR 4.1
import org.antlr.v4.runtime.misc.NotNull;
import org.antlr.v4.runtime.tree.ParseTreeVisitor;
@@ -24,6 +24,13 @@ public interface MetaCodeVisitor extends ParseTreeVisitor {
*/
T visitFormalParameter(@NotNull MetaCodeParser.FormalParameterContext ctx);
+ /**
+ * Visit a parse tree produced by {@link MetaCodeParser#returnStatement}.
+ * @param ctx the parse tree
+ * @return the visitor result
+ */
+ T visitReturnStatement(@NotNull MetaCodeParser.ReturnStatementContext ctx);
+
/**
* Visit a parse tree produced by {@link MetaCodeParser#attribute}.
* @param ctx the parse tree
@@ -115,6 +122,13 @@ public interface MetaCodeVisitor extends ParseTreeVisitor {
*/
T visitBooleanConstant(@NotNull MetaCodeParser.BooleanConstantContext ctx);
+ /**
+ * Visit a parse tree produced by {@link MetaCodeParser#memberTagExpression}.
+ * @param ctx the parse tree
+ * @return the visitor result
+ */
+ T visitMemberTagExpression(@NotNull MetaCodeParser.MemberTagExpressionContext ctx);
+
/**
* Visit a parse tree produced by {@link MetaCodeParser#assignmentExpression}.
* @param ctx the parse tree
@@ -200,16 +214,16 @@ public interface MetaCodeVisitor extends ParseTreeVisitor {
T visitForeachStatement(@NotNull MetaCodeParser.ForeachStatementContext ctx);
/**
- * Visit a parse tree produced by {@link MetaCodeParser#identifier}.
+ * Visit a parse tree produced by {@link MetaCodeParser#stringConstant}.
* @param ctx the parse tree
* @return the visitor result
*/
- T visitIdentifier(@NotNull MetaCodeParser.IdentifierContext ctx);
+ T visitStringConstant(@NotNull MetaCodeParser.StringConstantContext ctx);
/**
- * Visit a parse tree produced by {@link MetaCodeParser#stringConstant}.
+ * Visit a parse tree produced by {@link MetaCodeParser#identifier}.
* @param ctx the parse tree
* @return the visitor result
*/
- T visitStringConstant(@NotNull MetaCodeParser.StringConstantContext ctx);
+ T visitIdentifier(@NotNull MetaCodeParser.IdentifierContext ctx);
}
\ No newline at end of file
diff --git a/project/MetaCode/MetaCode.CodeVisualizer/App.config b/project/MetaCode/MetaCode.CodeVisualizer/App.config
new file mode 100644
index 0000000..8e15646
--- /dev/null
+++ b/project/MetaCode/MetaCode.CodeVisualizer/App.config
@@ -0,0 +1,6 @@
+
+
+
+
+
+
\ No newline at end of file
diff --git a/project/MetaCode/MetaCode.CodeVisualizer/App.xaml b/project/MetaCode/MetaCode.CodeVisualizer/App.xaml
new file mode 100644
index 0000000..e7bca29
--- /dev/null
+++ b/project/MetaCode/MetaCode.CodeVisualizer/App.xaml
@@ -0,0 +1,8 @@
+
+
+
+
+
diff --git a/project/MetaCode/MetaCode.CodeVisualizer/App.xaml.cs b/project/MetaCode/MetaCode.CodeVisualizer/App.xaml.cs
new file mode 100644
index 0000000..f16f7aa
--- /dev/null
+++ b/project/MetaCode/MetaCode.CodeVisualizer/App.xaml.cs
@@ -0,0 +1,17 @@
+using System;
+using System.Collections.Generic;
+using System.Configuration;
+using System.Data;
+using System.Linq;
+using System.Threading.Tasks;
+using System.Windows;
+
+namespace MetaCode.CodeVisualizer
+{
+ ///
+ /// Interaction logic for App.xaml
+ ///
+ public partial class App : Application
+ {
+ }
+}
diff --git a/project/MetaCode/MetaCode.CodeVisualizer/MainWindow.xaml b/project/MetaCode/MetaCode.CodeVisualizer/MainWindow.xaml
new file mode 100644
index 0000000..c55b04d
--- /dev/null
+++ b/project/MetaCode/MetaCode.CodeVisualizer/MainWindow.xaml
@@ -0,0 +1,8 @@
+
+
+
+
+
diff --git a/project/MetaCode/MetaCode.CodeVisualizer/MainWindow.xaml.cs b/project/MetaCode/MetaCode.CodeVisualizer/MainWindow.xaml.cs
new file mode 100644
index 0000000..d79a11c
--- /dev/null
+++ b/project/MetaCode/MetaCode.CodeVisualizer/MainWindow.xaml.cs
@@ -0,0 +1,28 @@
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+using System.Windows;
+using System.Windows.Controls;
+using System.Windows.Data;
+using System.Windows.Documents;
+using System.Windows.Input;
+using System.Windows.Media;
+using System.Windows.Media.Imaging;
+using System.Windows.Navigation;
+using System.Windows.Shapes;
+
+namespace MetaCode.CodeVisualizer
+{
+ ///
+ /// Interaction logic for MainWindow.xaml
+ ///
+ public partial class MainWindow : Window
+ {
+ public MainWindow()
+ {
+ InitializeComponent();
+ }
+ }
+}
diff --git a/project/MetaCode/MetaCode.CodeVisualizer/MetaCode.CodeVisualizer.csproj b/project/MetaCode/MetaCode.CodeVisualizer/MetaCode.CodeVisualizer.csproj
new file mode 100644
index 0000000..78df91f
--- /dev/null
+++ b/project/MetaCode/MetaCode.CodeVisualizer/MetaCode.CodeVisualizer.csproj
@@ -0,0 +1,104 @@
+
+
+
+
+ Debug
+ AnyCPU
+ {8FA5FC15-2A2D-4DCD-A8CD-8664B0EFCBAA}
+ WinExe
+ Properties
+ MetaCode.CodeVisualizer
+ MetaCode.CodeVisualizer
+ v4.5
+ 512
+ {60dc8134-eba5-43b8-bcc9-bb4bc16c2548};{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}
+ 4
+
+
+ AnyCPU
+ true
+ full
+ false
+ bin\Debug\
+ DEBUG;TRACE
+ prompt
+ 4
+
+
+ AnyCPU
+ pdbonly
+ true
+ bin\Release\
+ TRACE
+ prompt
+ 4
+
+
+
+
+
+
+
+
+
+
+ 4.0
+
+
+
+
+
+
+
+ MSBuild:Compile
+ Designer
+
+
+ MSBuild:Compile
+ Designer
+
+
+ App.xaml
+ Code
+
+
+ MainWindow.xaml
+ Code
+
+
+
+
+ Code
+
+
+ True
+ True
+ Resources.resx
+
+
+ True
+ Settings.settings
+ True
+
+
+ ResXFileCodeGenerator
+ Resources.Designer.cs
+
+
+ SettingsSingleFileGenerator
+ Settings.Designer.cs
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/project/MetaCode/MetaCode.CodeVisualizer/Properties/AssemblyInfo.cs b/project/MetaCode/MetaCode.CodeVisualizer/Properties/AssemblyInfo.cs
new file mode 100644
index 0000000..1121390
--- /dev/null
+++ b/project/MetaCode/MetaCode.CodeVisualizer/Properties/AssemblyInfo.cs
@@ -0,0 +1,55 @@
+using System.Reflection;
+using System.Resources;
+using System.Runtime.CompilerServices;
+using System.Runtime.InteropServices;
+using System.Windows;
+
+// General Information about an assembly is controlled through the following
+// set of attributes. Change these attribute values to modify the information
+// associated with an assembly.
+[assembly: AssemblyTitle("MetaCode.CodeVisualizer")]
+[assembly: AssemblyDescription("")]
+[assembly: AssemblyConfiguration("")]
+[assembly: AssemblyCompany("")]
+[assembly: AssemblyProduct("MetaCode.CodeVisualizer")]
+[assembly: AssemblyCopyright("Copyright © 2014")]
+[assembly: AssemblyTrademark("")]
+[assembly: AssemblyCulture("")]
+
+// Setting ComVisible to false makes the types in this assembly not visible
+// to COM components. If you need to access a type in this assembly from
+// COM, set the ComVisible attribute to true on that type.
+[assembly: ComVisible(false)]
+
+//In order to begin building localizable applications, set
+//CultureYouAreCodingWith in your .csproj file
+//inside a . For example, if you are using US english
+//in your source files, set the to en-US. Then uncomment
+//the NeutralResourceLanguage attribute below. Update the "en-US" in
+//the line below to match the UICulture setting in the project file.
+
+//[assembly: NeutralResourcesLanguage("en-US", UltimateResourceFallbackLocation.Satellite)]
+
+
+[assembly: ThemeInfo(
+ ResourceDictionaryLocation.None, //where theme specific resource dictionaries are located
+ //(used if a resource is not found in the page,
+ // or application resource dictionaries)
+ ResourceDictionaryLocation.SourceAssembly //where the generic resource dictionary is located
+ //(used if a resource is not found in the page,
+ // app, or any theme specific resource dictionaries)
+)]
+
+
+// Version information for an assembly consists of the following four values:
+//
+// Major Version
+// Minor Version
+// Build Number
+// Revision
+//
+// You can specify all the values or you can default the Build and Revision Numbers
+// by using the '*' as shown below:
+// [assembly: AssemblyVersion("1.0.*")]
+[assembly: AssemblyVersion("1.0.0.0")]
+[assembly: AssemblyFileVersion("1.0.0.0")]
diff --git a/project/MetaCode/MetaCode.CodeVisualizer/Properties/Resources.Designer.cs b/project/MetaCode/MetaCode.CodeVisualizer/Properties/Resources.Designer.cs
new file mode 100644
index 0000000..299f290
--- /dev/null
+++ b/project/MetaCode/MetaCode.CodeVisualizer/Properties/Resources.Designer.cs
@@ -0,0 +1,71 @@
+//------------------------------------------------------------------------------
+//
+// This code was generated by a tool.
+// Runtime Version:4.0.30319.34011
+//
+// Changes to this file may cause incorrect behavior and will be lost if
+// the code is regenerated.
+//
+//------------------------------------------------------------------------------
+
+namespace MetaCode.CodeVisualizer.Properties
+{
+
+
+ ///
+ /// A strongly-typed resource class, for looking up localized strings, etc.
+ ///
+ // This class was auto-generated by the StronglyTypedResourceBuilder
+ // class via a tool like ResGen or Visual Studio.
+ // To add or remove a member, edit your .ResX file then rerun ResGen
+ // with the /str option, or rebuild your VS project.
+ [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Resources.Tools.StronglyTypedResourceBuilder", "4.0.0.0")]
+ [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
+ [global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()]
+ internal class Resources
+ {
+
+ private static global::System.Resources.ResourceManager resourceMan;
+
+ private static global::System.Globalization.CultureInfo resourceCulture;
+
+ [global::System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1811:AvoidUncalledPrivateCode")]
+ internal Resources()
+ {
+ }
+
+ ///
+ /// Returns the cached ResourceManager instance used by this class.
+ ///
+ [global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)]
+ internal static global::System.Resources.ResourceManager ResourceManager
+ {
+ get
+ {
+ if ((resourceMan == null))
+ {
+ global::System.Resources.ResourceManager temp = new global::System.Resources.ResourceManager("MetaCode.CodeVisualizer.Properties.Resources", typeof(Resources).Assembly);
+ resourceMan = temp;
+ }
+ return resourceMan;
+ }
+ }
+
+ ///
+ /// Overrides the current thread's CurrentUICulture property for all
+ /// resource lookups using this strongly typed resource class.
+ ///
+ [global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)]
+ internal static global::System.Globalization.CultureInfo Culture
+ {
+ get
+ {
+ return resourceCulture;
+ }
+ set
+ {
+ resourceCulture = value;
+ }
+ }
+ }
+}
diff --git a/project/MetaCode/MetaCode.CodeVisualizer/Properties/Resources.resx b/project/MetaCode/MetaCode.CodeVisualizer/Properties/Resources.resx
new file mode 100644
index 0000000..af7dbeb
--- /dev/null
+++ b/project/MetaCode/MetaCode.CodeVisualizer/Properties/Resources.resx
@@ -0,0 +1,117 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ text/microsoft-resx
+
+
+ 2.0
+
+
+ System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
+
+
+ System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
+
+
\ No newline at end of file
diff --git a/project/MetaCode/MetaCode.CodeVisualizer/Properties/Settings.Designer.cs b/project/MetaCode/MetaCode.CodeVisualizer/Properties/Settings.Designer.cs
new file mode 100644
index 0000000..d8ad048
--- /dev/null
+++ b/project/MetaCode/MetaCode.CodeVisualizer/Properties/Settings.Designer.cs
@@ -0,0 +1,30 @@
+//------------------------------------------------------------------------------
+//
+// This code was generated by a tool.
+// Runtime Version:4.0.30319.34011
+//
+// Changes to this file may cause incorrect behavior and will be lost if
+// the code is regenerated.
+//
+//------------------------------------------------------------------------------
+
+namespace MetaCode.CodeVisualizer.Properties
+{
+
+
+ [global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()]
+ [global::System.CodeDom.Compiler.GeneratedCodeAttribute("Microsoft.VisualStudio.Editors.SettingsDesigner.SettingsSingleFileGenerator", "11.0.0.0")]
+ internal sealed partial class Settings : global::System.Configuration.ApplicationSettingsBase
+ {
+
+ private static Settings defaultInstance = ((Settings)(global::System.Configuration.ApplicationSettingsBase.Synchronized(new Settings())));
+
+ public static Settings Default
+ {
+ get
+ {
+ return defaultInstance;
+ }
+ }
+ }
+}
diff --git a/project/MetaCode/MetaCode.CodeVisualizer/Properties/Settings.settings b/project/MetaCode/MetaCode.CodeVisualizer/Properties/Settings.settings
new file mode 100644
index 0000000..033d7a5
--- /dev/null
+++ b/project/MetaCode/MetaCode.CodeVisualizer/Properties/Settings.settings
@@ -0,0 +1,7 @@
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/project/MetaCode/MetaCode.CodeVisualizer/bin/Debug/MetaCode.CodeVisualizer.exe b/project/MetaCode/MetaCode.CodeVisualizer/bin/Debug/MetaCode.CodeVisualizer.exe
new file mode 100644
index 0000000..3c44ee8
Binary files /dev/null and b/project/MetaCode/MetaCode.CodeVisualizer/bin/Debug/MetaCode.CodeVisualizer.exe differ
diff --git a/project/MetaCode/MetaCode.CodeVisualizer/bin/Debug/MetaCode.CodeVisualizer.exe.config b/project/MetaCode/MetaCode.CodeVisualizer/bin/Debug/MetaCode.CodeVisualizer.exe.config
new file mode 100644
index 0000000..8e15646
--- /dev/null
+++ b/project/MetaCode/MetaCode.CodeVisualizer/bin/Debug/MetaCode.CodeVisualizer.exe.config
@@ -0,0 +1,6 @@
+
+
+
+
+
+
\ No newline at end of file
diff --git a/project/MetaCode/MetaCode.CodeVisualizer/bin/Debug/MetaCode.CodeVisualizer.pdb b/project/MetaCode/MetaCode.CodeVisualizer/bin/Debug/MetaCode.CodeVisualizer.pdb
new file mode 100644
index 0000000..064f634
Binary files /dev/null and b/project/MetaCode/MetaCode.CodeVisualizer/bin/Debug/MetaCode.CodeVisualizer.pdb differ
diff --git a/project/MetaCode/MetaCode.CodeVisualizer/obj/Debug/App.g.cs b/project/MetaCode/MetaCode.CodeVisualizer/obj/Debug/App.g.cs
new file mode 100644
index 0000000..62d2f6f
--- /dev/null
+++ b/project/MetaCode/MetaCode.CodeVisualizer/obj/Debug/App.g.cs
@@ -0,0 +1,69 @@
+#pragma checksum "..\..\App.xaml" "{406ea660-64cf-4c82-b6f0-42d48172a799}" "2F6E2EF1A3D0A62D186D715DC0D954CF"
+//------------------------------------------------------------------------------
+//
+// This code was generated by a tool.
+// Runtime Version:4.0.30319.34011
+//
+// Changes to this file may cause incorrect behavior and will be lost if
+// the code is regenerated.
+//
+//------------------------------------------------------------------------------
+
+using System;
+using System.Diagnostics;
+using System.Windows;
+using System.Windows.Automation;
+using System.Windows.Controls;
+using System.Windows.Controls.Primitives;
+using System.Windows.Data;
+using System.Windows.Documents;
+using System.Windows.Ink;
+using System.Windows.Input;
+using System.Windows.Markup;
+using System.Windows.Media;
+using System.Windows.Media.Animation;
+using System.Windows.Media.Effects;
+using System.Windows.Media.Imaging;
+using System.Windows.Media.Media3D;
+using System.Windows.Media.TextFormatting;
+using System.Windows.Navigation;
+using System.Windows.Shapes;
+using System.Windows.Shell;
+
+
+namespace MetaCode.CodeVisualizer {
+
+
+ ///
+ /// App
+ ///
+ public partial class App : System.Windows.Application {
+
+ ///
+ /// InitializeComponent
+ ///
+ [System.Diagnostics.DebuggerNonUserCodeAttribute()]
+ [System.CodeDom.Compiler.GeneratedCodeAttribute("PresentationBuildTasks", "4.0.0.0")]
+ public void InitializeComponent() {
+
+ #line 4 "..\..\App.xaml"
+ this.StartupUri = new System.Uri("MainWindow.xaml", System.UriKind.Relative);
+
+ #line default
+ #line hidden
+ }
+
+ ///
+ /// Application Entry Point.
+ ///
+ [System.STAThreadAttribute()]
+ [System.Diagnostics.DebuggerNonUserCodeAttribute()]
+ [System.CodeDom.Compiler.GeneratedCodeAttribute("PresentationBuildTasks", "4.0.0.0")]
+ public static void Main() {
+ MetaCode.CodeVisualizer.App app = new MetaCode.CodeVisualizer.App();
+ app.InitializeComponent();
+ app.Run();
+ }
+ }
+}
+
diff --git a/project/MetaCode/MetaCode.CodeVisualizer/obj/Debug/App.g.i.cs b/project/MetaCode/MetaCode.CodeVisualizer/obj/Debug/App.g.i.cs
new file mode 100644
index 0000000..62d2f6f
--- /dev/null
+++ b/project/MetaCode/MetaCode.CodeVisualizer/obj/Debug/App.g.i.cs
@@ -0,0 +1,69 @@
+#pragma checksum "..\..\App.xaml" "{406ea660-64cf-4c82-b6f0-42d48172a799}" "2F6E2EF1A3D0A62D186D715DC0D954CF"
+//------------------------------------------------------------------------------
+//
+// This code was generated by a tool.
+// Runtime Version:4.0.30319.34011
+//
+// Changes to this file may cause incorrect behavior and will be lost if
+// the code is regenerated.
+//
+//------------------------------------------------------------------------------
+
+using System;
+using System.Diagnostics;
+using System.Windows;
+using System.Windows.Automation;
+using System.Windows.Controls;
+using System.Windows.Controls.Primitives;
+using System.Windows.Data;
+using System.Windows.Documents;
+using System.Windows.Ink;
+using System.Windows.Input;
+using System.Windows.Markup;
+using System.Windows.Media;
+using System.Windows.Media.Animation;
+using System.Windows.Media.Effects;
+using System.Windows.Media.Imaging;
+using System.Windows.Media.Media3D;
+using System.Windows.Media.TextFormatting;
+using System.Windows.Navigation;
+using System.Windows.Shapes;
+using System.Windows.Shell;
+
+
+namespace MetaCode.CodeVisualizer {
+
+
+ ///
+ /// App
+ ///
+ public partial class App : System.Windows.Application {
+
+ ///
+ /// InitializeComponent
+ ///
+ [System.Diagnostics.DebuggerNonUserCodeAttribute()]
+ [System.CodeDom.Compiler.GeneratedCodeAttribute("PresentationBuildTasks", "4.0.0.0")]
+ public void InitializeComponent() {
+
+ #line 4 "..\..\App.xaml"
+ this.StartupUri = new System.Uri("MainWindow.xaml", System.UriKind.Relative);
+
+ #line default
+ #line hidden
+ }
+
+ ///
+ /// Application Entry Point.
+ ///
+ [System.STAThreadAttribute()]
+ [System.Diagnostics.DebuggerNonUserCodeAttribute()]
+ [System.CodeDom.Compiler.GeneratedCodeAttribute("PresentationBuildTasks", "4.0.0.0")]
+ public static void Main() {
+ MetaCode.CodeVisualizer.App app = new MetaCode.CodeVisualizer.App();
+ app.InitializeComponent();
+ app.Run();
+ }
+ }
+}
+
diff --git a/project/MetaCode/MetaCode.CodeVisualizer/obj/Debug/DesignTimeResolveAssemblyReferencesInput.cache b/project/MetaCode/MetaCode.CodeVisualizer/obj/Debug/DesignTimeResolveAssemblyReferencesInput.cache
new file mode 100644
index 0000000..628f3ec
Binary files /dev/null and b/project/MetaCode/MetaCode.CodeVisualizer/obj/Debug/DesignTimeResolveAssemblyReferencesInput.cache differ
diff --git a/project/MetaCode/MetaCode.CodeVisualizer/obj/Debug/MainWindow.baml b/project/MetaCode/MetaCode.CodeVisualizer/obj/Debug/MainWindow.baml
new file mode 100644
index 0000000..cbf9f3e
Binary files /dev/null and b/project/MetaCode/MetaCode.CodeVisualizer/obj/Debug/MainWindow.baml differ
diff --git a/project/MetaCode/MetaCode.CodeVisualizer/obj/Debug/MainWindow.g.cs b/project/MetaCode/MetaCode.CodeVisualizer/obj/Debug/MainWindow.g.cs
new file mode 100644
index 0000000..a17c2b0
--- /dev/null
+++ b/project/MetaCode/MetaCode.CodeVisualizer/obj/Debug/MainWindow.g.cs
@@ -0,0 +1,74 @@
+#pragma checksum "..\..\MainWindow.xaml" "{406ea660-64cf-4c82-b6f0-42d48172a799}" "BFB6842B1B82659611354009AF43D134"
+//------------------------------------------------------------------------------
+//
+// This code was generated by a tool.
+// Runtime Version:4.0.30319.34011
+//
+// Changes to this file may cause incorrect behavior and will be lost if
+// the code is regenerated.
+//
+//------------------------------------------------------------------------------
+
+using System;
+using System.Diagnostics;
+using System.Windows;
+using System.Windows.Automation;
+using System.Windows.Controls;
+using System.Windows.Controls.Primitives;
+using System.Windows.Data;
+using System.Windows.Documents;
+using System.Windows.Ink;
+using System.Windows.Input;
+using System.Windows.Markup;
+using System.Windows.Media;
+using System.Windows.Media.Animation;
+using System.Windows.Media.Effects;
+using System.Windows.Media.Imaging;
+using System.Windows.Media.Media3D;
+using System.Windows.Media.TextFormatting;
+using System.Windows.Navigation;
+using System.Windows.Shapes;
+using System.Windows.Shell;
+
+
+namespace MetaCode.CodeVisualizer {
+
+
+ ///
+ /// MainWindow
+ ///
+ public partial class MainWindow : System.Windows.Window, System.Windows.Markup.IComponentConnector {
+
+ private bool _contentLoaded;
+
+ ///
+ /// InitializeComponent
+ ///
+ [System.Diagnostics.DebuggerNonUserCodeAttribute()]
+ [System.CodeDom.Compiler.GeneratedCodeAttribute("PresentationBuildTasks", "4.0.0.0")]
+ public void InitializeComponent() {
+ if (_contentLoaded) {
+ return;
+ }
+ _contentLoaded = true;
+ System.Uri resourceLocater = new System.Uri("/MetaCode.CodeVisualizer;component/mainwindow.xaml", System.UriKind.Relative);
+
+ #line 1 "..\..\MainWindow.xaml"
+ System.Windows.Application.LoadComponent(this, resourceLocater);
+
+ #line default
+ #line hidden
+ }
+
+ [System.Diagnostics.DebuggerNonUserCodeAttribute()]
+ [System.CodeDom.Compiler.GeneratedCodeAttribute("PresentationBuildTasks", "4.0.0.0")]
+ [System.ComponentModel.EditorBrowsableAttribute(System.ComponentModel.EditorBrowsableState.Never)]
+ [System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Design", "CA1033:InterfaceMethodsShouldBeCallableByChildTypes")]
+ [System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Maintainability", "CA1502:AvoidExcessiveComplexity")]
+ [System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1800:DoNotCastUnnecessarily")]
+ void System.Windows.Markup.IComponentConnector.Connect(int connectionId, object target) {
+ this._contentLoaded = true;
+ }
+ }
+}
+
diff --git a/project/MetaCode/MetaCode.CodeVisualizer/obj/Debug/MainWindow.g.i.cs b/project/MetaCode/MetaCode.CodeVisualizer/obj/Debug/MainWindow.g.i.cs
new file mode 100644
index 0000000..a17c2b0
--- /dev/null
+++ b/project/MetaCode/MetaCode.CodeVisualizer/obj/Debug/MainWindow.g.i.cs
@@ -0,0 +1,74 @@
+#pragma checksum "..\..\MainWindow.xaml" "{406ea660-64cf-4c82-b6f0-42d48172a799}" "BFB6842B1B82659611354009AF43D134"
+//------------------------------------------------------------------------------
+//
+// This code was generated by a tool.
+// Runtime Version:4.0.30319.34011
+//
+// Changes to this file may cause incorrect behavior and will be lost if
+// the code is regenerated.
+//
+//------------------------------------------------------------------------------
+
+using System;
+using System.Diagnostics;
+using System.Windows;
+using System.Windows.Automation;
+using System.Windows.Controls;
+using System.Windows.Controls.Primitives;
+using System.Windows.Data;
+using System.Windows.Documents;
+using System.Windows.Ink;
+using System.Windows.Input;
+using System.Windows.Markup;
+using System.Windows.Media;
+using System.Windows.Media.Animation;
+using System.Windows.Media.Effects;
+using System.Windows.Media.Imaging;
+using System.Windows.Media.Media3D;
+using System.Windows.Media.TextFormatting;
+using System.Windows.Navigation;
+using System.Windows.Shapes;
+using System.Windows.Shell;
+
+
+namespace MetaCode.CodeVisualizer {
+
+
+ ///
+ /// MainWindow
+ ///
+ public partial class MainWindow : System.Windows.Window, System.Windows.Markup.IComponentConnector {
+
+ private bool _contentLoaded;
+
+ ///
+ /// InitializeComponent
+ ///
+ [System.Diagnostics.DebuggerNonUserCodeAttribute()]
+ [System.CodeDom.Compiler.GeneratedCodeAttribute("PresentationBuildTasks", "4.0.0.0")]
+ public void InitializeComponent() {
+ if (_contentLoaded) {
+ return;
+ }
+ _contentLoaded = true;
+ System.Uri resourceLocater = new System.Uri("/MetaCode.CodeVisualizer;component/mainwindow.xaml", System.UriKind.Relative);
+
+ #line 1 "..\..\MainWindow.xaml"
+ System.Windows.Application.LoadComponent(this, resourceLocater);
+
+ #line default
+ #line hidden
+ }
+
+ [System.Diagnostics.DebuggerNonUserCodeAttribute()]
+ [System.CodeDom.Compiler.GeneratedCodeAttribute("PresentationBuildTasks", "4.0.0.0")]
+ [System.ComponentModel.EditorBrowsableAttribute(System.ComponentModel.EditorBrowsableState.Never)]
+ [System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Design", "CA1033:InterfaceMethodsShouldBeCallableByChildTypes")]
+ [System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Maintainability", "CA1502:AvoidExcessiveComplexity")]
+ [System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1800:DoNotCastUnnecessarily")]
+ void System.Windows.Markup.IComponentConnector.Connect(int connectionId, object target) {
+ this._contentLoaded = true;
+ }
+ }
+}
+
diff --git a/project/MetaCode/MetaCode.CodeVisualizer/obj/Debug/MetaCode.CodeVisualizer.Properties.Resources.resources b/project/MetaCode/MetaCode.CodeVisualizer/obj/Debug/MetaCode.CodeVisualizer.Properties.Resources.resources
new file mode 100644
index 0000000..6c05a97
Binary files /dev/null and b/project/MetaCode/MetaCode.CodeVisualizer/obj/Debug/MetaCode.CodeVisualizer.Properties.Resources.resources differ
diff --git a/project/MetaCode/MetaCode.CodeVisualizer/obj/Debug/MetaCode.CodeVisualizer.csproj.FileListAbsolute.txt b/project/MetaCode/MetaCode.CodeVisualizer/obj/Debug/MetaCode.CodeVisualizer.csproj.FileListAbsolute.txt
new file mode 100644
index 0000000..9116467
--- /dev/null
+++ b/project/MetaCode/MetaCode.CodeVisualizer/obj/Debug/MetaCode.CodeVisualizer.csproj.FileListAbsolute.txt
@@ -0,0 +1,13 @@
+E:\Development\Projects\MetaCode\project\MetaCode\MetaCode.CodeVisualizer\bin\Debug\MetaCode.CodeVisualizer.exe.config
+E:\Development\Projects\MetaCode\project\MetaCode\MetaCode.CodeVisualizer\bin\Debug\MetaCode.CodeVisualizer.exe
+E:\Development\Projects\MetaCode\project\MetaCode\MetaCode.CodeVisualizer\bin\Debug\MetaCode.CodeVisualizer.pdb
+E:\Development\Projects\MetaCode\project\MetaCode\MetaCode.CodeVisualizer\obj\Debug\MetaCode.CodeVisualizer.csprojResolveAssemblyReference.cache
+E:\Development\Projects\MetaCode\project\MetaCode\MetaCode.CodeVisualizer\obj\Debug\MainWindow.baml
+E:\Development\Projects\MetaCode\project\MetaCode\MetaCode.CodeVisualizer\obj\Debug\MainWindow.g.cs
+E:\Development\Projects\MetaCode\project\MetaCode\MetaCode.CodeVisualizer\obj\Debug\App.g.cs
+E:\Development\Projects\MetaCode\project\MetaCode\MetaCode.CodeVisualizer\obj\Debug\MetaCode.CodeVisualizer_MarkupCompile.cache
+E:\Development\Projects\MetaCode\project\MetaCode\MetaCode.CodeVisualizer\obj\Debug\MetaCode.CodeVisualizer.g.resources
+E:\Development\Projects\MetaCode\project\MetaCode\MetaCode.CodeVisualizer\obj\Debug\MetaCode.CodeVisualizer.Properties.Resources.resources
+E:\Development\Projects\MetaCode\project\MetaCode\MetaCode.CodeVisualizer\obj\Debug\MetaCode.CodeVisualizer.csproj.GenerateResource.Cache
+E:\Development\Projects\MetaCode\project\MetaCode\MetaCode.CodeVisualizer\obj\Debug\MetaCode.CodeVisualizer.exe
+E:\Development\Projects\MetaCode\project\MetaCode\MetaCode.CodeVisualizer\obj\Debug\MetaCode.CodeVisualizer.pdb
diff --git a/project/MetaCode/MetaCode.CodeVisualizer/obj/Debug/MetaCode.CodeVisualizer.csproj.GenerateResource.Cache b/project/MetaCode/MetaCode.CodeVisualizer/obj/Debug/MetaCode.CodeVisualizer.csproj.GenerateResource.Cache
new file mode 100644
index 0000000..932e47a
Binary files /dev/null and b/project/MetaCode/MetaCode.CodeVisualizer/obj/Debug/MetaCode.CodeVisualizer.csproj.GenerateResource.Cache differ
diff --git a/project/MetaCode/MetaCode.CodeVisualizer/obj/Debug/MetaCode.CodeVisualizer.csprojResolveAssemblyReference.cache b/project/MetaCode/MetaCode.CodeVisualizer/obj/Debug/MetaCode.CodeVisualizer.csprojResolveAssemblyReference.cache
new file mode 100644
index 0000000..4117ac5
Binary files /dev/null and b/project/MetaCode/MetaCode.CodeVisualizer/obj/Debug/MetaCode.CodeVisualizer.csprojResolveAssemblyReference.cache differ
diff --git a/project/MetaCode/MetaCode.CodeVisualizer/obj/Debug/MetaCode.CodeVisualizer.exe b/project/MetaCode/MetaCode.CodeVisualizer/obj/Debug/MetaCode.CodeVisualizer.exe
new file mode 100644
index 0000000..3c44ee8
Binary files /dev/null and b/project/MetaCode/MetaCode.CodeVisualizer/obj/Debug/MetaCode.CodeVisualizer.exe differ
diff --git a/project/MetaCode/MetaCode.CodeVisualizer/obj/Debug/MetaCode.CodeVisualizer.g.resources b/project/MetaCode/MetaCode.CodeVisualizer/obj/Debug/MetaCode.CodeVisualizer.g.resources
new file mode 100644
index 0000000..76dfd95
Binary files /dev/null and b/project/MetaCode/MetaCode.CodeVisualizer/obj/Debug/MetaCode.CodeVisualizer.g.resources differ
diff --git a/project/MetaCode/MetaCode.CodeVisualizer/obj/Debug/MetaCode.CodeVisualizer.pdb b/project/MetaCode/MetaCode.CodeVisualizer/obj/Debug/MetaCode.CodeVisualizer.pdb
new file mode 100644
index 0000000..064f634
Binary files /dev/null and b/project/MetaCode/MetaCode.CodeVisualizer/obj/Debug/MetaCode.CodeVisualizer.pdb differ
diff --git a/project/MetaCode/MetaCode.CodeVisualizer/obj/Debug/MetaCode.CodeVisualizer_MarkupCompile.cache b/project/MetaCode/MetaCode.CodeVisualizer/obj/Debug/MetaCode.CodeVisualizer_MarkupCompile.cache
new file mode 100644
index 0000000..1d115ea
--- /dev/null
+++ b/project/MetaCode/MetaCode.CodeVisualizer/obj/Debug/MetaCode.CodeVisualizer_MarkupCompile.cache
@@ -0,0 +1,20 @@
+MetaCode.CodeVisualizer
+
+
+winexe
+C#
+.cs
+E:\Development\Projects\MetaCode\project\MetaCode\MetaCode.CodeVisualizer\obj\Debug\
+MetaCode.CodeVisualizer
+none
+false
+DEBUG;TRACE
+E:\Development\Projects\MetaCode\project\MetaCode\MetaCode.CodeVisualizer\App.xaml
+11151548125
+
+5-2017746502
+12-1401562060
+MainWindow.xaml;
+
+False
+
diff --git a/project/MetaCode/MetaCode.CodeVisualizer/obj/Debug/MetaCode.CodeVisualizer_MarkupCompile.i.cache b/project/MetaCode/MetaCode.CodeVisualizer/obj/Debug/MetaCode.CodeVisualizer_MarkupCompile.i.cache
new file mode 100644
index 0000000..e8a96c6
--- /dev/null
+++ b/project/MetaCode/MetaCode.CodeVisualizer/obj/Debug/MetaCode.CodeVisualizer_MarkupCompile.i.cache
@@ -0,0 +1,20 @@
+MetaCode.CodeVisualizer
+
+
+winexe
+C#
+.cs
+E:\Development\Projects\MetaCode\project\MetaCode\MetaCode.CodeVisualizer\obj\Debug\
+MetaCode.CodeVisualizer
+none
+false
+DEBUG;TRACE
+E:\Development\Projects\MetaCode\project\MetaCode\MetaCode.CodeVisualizer\App.xaml
+11151548125
+
+91378088775
+12-1401562060
+MainWindow.xaml;
+
+False
+
diff --git a/project/MetaCode/MetaCode.CodeVisualizer/obj/Debug/TemporaryGeneratedFile_036C0B5B-1481-4323-8D20-8F5ADCB23D92.cs b/project/MetaCode/MetaCode.CodeVisualizer/obj/Debug/TemporaryGeneratedFile_036C0B5B-1481-4323-8D20-8F5ADCB23D92.cs
new file mode 100644
index 0000000..e69de29
diff --git a/project/MetaCode/MetaCode.CodeVisualizer/obj/Debug/TemporaryGeneratedFile_5937a670-0e60-4077-877b-f7221da3dda1.cs b/project/MetaCode/MetaCode.CodeVisualizer/obj/Debug/TemporaryGeneratedFile_5937a670-0e60-4077-877b-f7221da3dda1.cs
new file mode 100644
index 0000000..e69de29
diff --git a/project/MetaCode/MetaCode.CodeVisualizer/obj/Debug/TemporaryGeneratedFile_E7A71F73-0F8D-4B9B-B56E-8E70B10BC5D3.cs b/project/MetaCode/MetaCode.CodeVisualizer/obj/Debug/TemporaryGeneratedFile_E7A71F73-0F8D-4B9B-B56E-8E70B10BC5D3.cs
new file mode 100644
index 0000000..e69de29
diff --git a/project/MetaCode/MetaCode.Compiler.Tests/AbstractTreeVisitorTestFixture.cs b/project/MetaCode/MetaCode.Compiler.Tests/AbstractTreeVisitorTestFixture.cs
index 2ecbecf..f5491d3 100644
--- a/project/MetaCode/MetaCode.Compiler.Tests/AbstractTreeVisitorTestFixture.cs
+++ b/project/MetaCode/MetaCode.Compiler.Tests/AbstractTreeVisitorTestFixture.cs
@@ -75,8 +75,33 @@ public void AbstractTreeVisitorDeclareVariableTest()
{
var source = MultiLine(
"var a : System.Boolean = false;",
- "do",
- " var b = a;",
+ "if (a) ",
+ " var b = 10;",
+ "else if (false) ",
+ " skip;",
+ "else if (true) ",
+ " skip;",
+ "else if (false) ",
+ " skip;",
+ "else",
+ " var b = 10;",
+ "end;",
+ "foreach (var ch in \"Hello World\") do",
+ " var b = ch;",
+ "end;"
+ );
+
+ var result = ParseWithAbstractTreeVisitor(Compiler, source);
+ }
+
+ [Test]
+ public void AbstractTreeVisitorDeclareFunctionTest()
+ {
+ var source = MultiLine(
+ "var max = function(a: System.Int32, b: System.Int32): System.Int32 do",
+ " if (true)",
+ " var c = 10;",
+ " end;",
"end;"
);
diff --git a/project/MetaCode/MetaCode.Compiler.Tests/CustomVisitorTestFixture.cs b/project/MetaCode/MetaCode.Compiler.Tests/CustomVisitorTestFixture.cs
new file mode 100644
index 0000000..684e79a
--- /dev/null
+++ b/project/MetaCode/MetaCode.Compiler.Tests/CustomVisitorTestFixture.cs
@@ -0,0 +1,145 @@
+using System;
+using System.Collections.Generic;
+using System.Diagnostics;
+using System.Globalization;
+using System.Linq;
+using System.Linq.Expressions;
+using System.Runtime.InteropServices;
+using System.Text;
+using System.Threading.Tasks;
+using MetaCode.Compiler.AbstractTree;
+using MetaCode.Compiler.AbstractTree.Constants;
+using MetaCode.Compiler.AbstractTree.Expressions;
+using MetaCode.Compiler.AbstractTree.Operators;
+using MetaCode.Compiler.AbstractTree.Operators.Numerics;
+using MetaCode.Compiler.AbstractTree.Statements;
+using MetaCode.Compiler.AbstractTree.Visitors;
+using MetaCode.Compiler.Services;
+using MetaCode.Compiler.Visitors;
+using NUnit.Framework;
+
+namespace MetaCode.Compiler.Tests
+{
+ [TestFixture]
+ public class CustomVisitorTestFixture : CompilerTestFixtureBase
+ {
+ #region Helper methods
+
+ private Node ParseWithAbstractTreeVisitor(MetaCodeCompiler compiler, string source)
+ {
+ return compiler.ParseWithVisitor(source, () => new AbstractTreeVisitor(CompilerService.Instance));
+ }
+
+ #endregion
+
+ public MetaCodeCompiler Compiler { get; set; }
+
+ [SetUp]
+ public void SetUp()
+ {
+ Compiler = new MetaCodeCompiler();
+ }
+
+ [Test]
+ public void CustomVisitorTest()
+ {
+ var source = MultiLine(
+ "var a = function(c: System.Int32): System.Void do" +
+ " var b = 45; " +
+ " if (b == 10)" +
+ " skip;" +
+ " end;" +
+ "end;"
+ );
+
+ var result = ParseWithAbstractTreeVisitor(Compiler, source);
+ var text = new StringBuilder();
+ var visitor = new TreeVisitorBase