Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- grammar Hello;
- s : title declaration? body;
- numbers : Unary_minus?UnsignedInt ;
- operators : Unary_minus|Multiplicative|Additive|Relational|Logical|StringConcatenation|Assignment;
- separators : LPAREN |RPAREN|LBRACK|RBRACK|SEMICOLON|COLON|COMMA;
- title : PROGRAM Identifiers;
- array: ARRAY LBRACK numbers RBRACK OF VAR_TYPES;
- var_declaration : Identifiers (COMMA Identifiers)* COLON (VAR_TYPES|array);
- declaration : VAR var_declaration (SEMICOLON var_declaration)*;
- body : BODY (statemen| block);
- simple_block : BEGIN (statemen|block) END;
- complex_block: BEGIN (simple_block|statemen) (SEMICOLON block|SEMICOLON statemen)* END;
- block: simple_block | complex_block;
- expr_numb : (Identifiers | numbers) ne;
- ne: (expr_numb Additive expr_numb | expr_numb Multiplicative expr_numb| Whitespace );
- expr_bool : (Logic | Identifiers) be;
- be : (expr_bool Logical expr_bool | expr_numb Relational expr_numb| Whitespace );
- expr_string: (Constans Identifiers) se;
- se: (expr_string StringConcatenation expr_string| Whitespace );
- expr : (expr_numb | expr_string | expr_bool ) r;
- r: expr expr;
- array_pointer: LPAREN (Identifiers|UnsignedInt) RPAREN;
- assignments : Identifiers (array_pointer)? Assignment expr;
- read : READ LPAREN Identifiers (COMMA Identifiers)* RPAREN;
- write: WRITE LPAREN expr (COMMA expr)* RPAREN;
- simple_if : IF expr_bool THEN (statemen | block );
- complex_if: simple_if ELSE (statemen | block );
- if_statemen : simple_if |complex_if;
- while_statemen : WHILE expr_bool DO (statemen | block );
- exit_statemnet : EXIT;
- statemen: read|write| if_statemen | while_statemen | exit_statemnet | assignments;
- //Termatika
- PROGRAM = 'PROGRAM ';
- ARRAY = 'ARRAY' ;
- OF= 'OF';
- VAR='VAR';
- BODY='BODY';
- BEGIN='BEGIN';
- END='END';
- WHILE='WHILE';
- DO='DO';
- EXIT='EXIT';
- READ='READ';
- WRITE='WRITE';
- IF='IF';
- THEN='THEN' ;
- ELSE='ELSE' ;
- Character_Set : [.~];
- Whitespace : [ \t\r\n]+ -> skip ;
- Comments : '{'.*?'}' -> skip ;
- Identifiers : [_a-zA-Z]+[_a-zA-Z0-9]*;
- Logic : 'TRUE'|'FALSE';
- Constans : '"'.*?'"' | '"'numbers'"' | '"'Logic'"';
- Unary_minus : '-';
- UnsignedInt: [1-9][0-9]*|[0];
- Multiplicative : [*%/];
- Additive : [+-];
- Relational : '=' | '<>' | '<' | '>' | '<=' | '>=' ;
- Logical : 'AND' | 'OR' | 'NOT';
- StringConcatenation : '|';
- Assignment : ':=';
- LPAREN : '(';
- RPAREN : ')';
- LBRACK : '[';
- RBRACK : ']';
- SEMICOLON : ';';
- COLON : ':';
- COMMA : ',';
- VAR_TYPES: 'INTEGER'|'STRING'|'BOOLEAN';
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement