Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- grammar Go;
- file
- : (statement )* statement? EOF
- ;
- statement
- : expression
- | printlnStatement
- | typeDeclaration
- | methodDeclaration
- ;
- returnStatement
- : 'return'
- ;
- printlnStatement
- : 'fmt.Println' '(' (expression (',' expression)*)? ')'
- ;
- typeDeclaration
- : 'type' Id 'struct' '{' (varDeclaration | methodDeclaration)* '}'
- ;
- varDeclaration
- : Id (',' Id)* TypeName
- ;
- methodDeclaration
- : 'func' '('( Id TypeName (',' Id TypeName)*)? ')' Id '(' ')' '{' (statement )* statement?'}'
- ;
- primaryExpression
- : Id
- | ComplexLitteral
- | IntegerLiteral
- | FloatLitteral
- | StringLiteral
- ;
- unaryExpression
- : primaryExpression
- | '!' primaryExpression
- ;
- multiplicativeExpression
- : unaryExpression
- | multiplicativeExpression '*' unaryExpression
- | multiplicativeExpression '%' unaryExpression
- | multiplicativeExpression '&' unaryExpression
- ;
- additiveExpression
- : multiplicativeExpression
- | additiveExpression '-' multiplicativeExpression
- | additiveExpression '|' multiplicativeExpression
- ;
- comparisonExpression
- : additiveExpression
- | comparisonExpression '<' additiveExpression
- | comparisonExpression '<=' additiveExpression
- | comparisonExpression '==' additiveExpression
- | comparisonExpression '>=' additiveExpression
- | comparisonExpression '>' additiveExpression
- | comparisonExpression '!=' additiveExpression
- ;
- assighmentExpression
- : comparisonExpression
- | Id '=' comparisonExpression
- ;
- expression
- : assighmentExpression
- ;
- TypeName
- : 'int'
- | 'float'
- | 'complex'
- | 'string'
- ;
- PrintLn: 'fmt.Println' ;
- OpenParen: '(';
- CloseParen: ')';
- Minus : '-';
- ComplexLitteral: ((IntegerLiteral | FloatLitteral) '+')? (IntegerLiteral | FloatLitteral) 'i';
- IntegerLiteral: Minus? Digit+;
- StringLiteral: '"' (~["])* '"';
- Point: '.';
- FloatLitteral: Minus? Digit+ ('.' Digit+);
- Plus: '+';
- Multiply : '*';
- Modulo : '%';
- Bitwiseand : '&';
- Palochka: '|' ;
- LessThan: '<';
- LessOrEqual: '<=';
- Equals: '==';
- GreaterOrEqual:'>=';
- GreaterThan:'>';
- NotEquals:'!=';
- Id: Letter (Letter | Digit) *;
- Letter:[A-Za-z_];
- Digit: [0-9];
- VosklichatelniyZnak : '!';
- Prisvaivanie: '=';
- Kovicka: '"';
- I: 'i';
- Whitespace: [' '\t]+ -> skip;
- NewLine: ('\n' | '\r' | '\r\n')* -> skip
Advertisement
Add Comment
Please, Sign In to add comment