Advertisement
Guest User

Untitled

a guest
May 20th, 2018
138
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.40 KB | None | 0 0
  1. grammar Hello;
  2.  
  3. s : title declaration? body;
  4. numbers : Unary_minus?UnsignedInt ;
  5. operators : Unary_minus|Multiplicative|Additive|Relational|Logical|StringConcatenation|Assignment;
  6. separators : LPAREN |RPAREN|LBRACK|RBRACK|SEMICOLON|COLON|COMMA;
  7. title : PROGRAM Identifiers;
  8. array: ARRAY LBRACK numbers RBRACK OF VAR_TYPES;
  9. var_declaration : Identifiers (COMMA Identifiers)* COLON (VAR_TYPES|array);
  10. declaration : VAR var_declaration (SEMICOLON var_declaration)*;
  11. body : BODY (statemen| block);
  12. simple_block : BEGIN (statemen|block) END;
  13. complex_block: BEGIN (simple_block|statemen) (SEMICOLON block|SEMICOLON statemen)* END;
  14. block: simple_block | complex_block;
  15. expr_numb : (Identifiers | numbers) ne;
  16. ne: (expr_numb Additive expr_numb | expr_numb Multiplicative expr_numb| Whitespace );
  17. expr_bool : (Logic | Identifiers) be;
  18. be : (expr_bool Logical expr_bool | expr_numb Relational expr_numb| Whitespace );
  19. expr_string: (Constans Identifiers) se;
  20. se: (expr_string StringConcatenation expr_string| Whitespace );
  21. expr : (expr_numb | expr_string | expr_bool ) r;
  22. r: expr expr;
  23. array_pointer: LPAREN (Identifiers|UnsignedInt) RPAREN;
  24. assignments : Identifiers (array_pointer)? Assignment expr;
  25. read : READ LPAREN Identifiers (COMMA Identifiers)* RPAREN;
  26. write: WRITE LPAREN expr (COMMA expr)* RPAREN;
  27. simple_if : IF expr_bool THEN (statemen | block );
  28. complex_if: simple_if ELSE (statemen | block );
  29. if_statemen : simple_if |complex_if;
  30. while_statemen : WHILE expr_bool DO (statemen | block );
  31. exit_statemnet : EXIT;
  32. statemen: read|write| if_statemen | while_statemen | exit_statemnet | assignments;
  33. //Termatika
  34. PROGRAM = 'PROGRAM ';
  35. ARRAY = 'ARRAY' ;
  36. OF= 'OF';
  37. VAR='VAR';
  38. BODY='BODY';
  39. BEGIN='BEGIN';
  40. END='END';
  41. WHILE='WHILE';
  42. DO='DO';
  43. EXIT='EXIT';
  44. READ='READ';
  45. WRITE='WRITE';
  46. IF='IF';
  47. THEN='THEN' ;
  48. ELSE='ELSE' ;
  49. Character_Set : [.~];
  50. Whitespace : [ \t\r\n]+ -> skip ;
  51. Comments : '{'.*?'}' -> skip ;
  52. Identifiers : [_a-zA-Z]+[_a-zA-Z0-9]*;
  53. Logic : 'TRUE'|'FALSE';
  54. Constans : '"'.*?'"' | '"'numbers'"' | '"'Logic'"';
  55. Unary_minus : '-';
  56. UnsignedInt: [1-9][0-9]*|[0];
  57. Multiplicative : [*%/];
  58. Additive : [+-];
  59. Relational : '=' | '<>' | '<' | '>' | '<=' | '>=' ;
  60. Logical : 'AND' | 'OR' | 'NOT';
  61. StringConcatenation : '|';
  62. Assignment : ':=';
  63. LPAREN : '(';
  64. RPAREN : ')';
  65. LBRACK : '[';
  66. RBRACK : ']';
  67. SEMICOLON : ';';
  68. COLON : ':';
  69. COMMA : ',';
  70. VAR_TYPES: 'INTEGER'|'STRING'|'BOOLEAN';
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement