Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- %{
- #include "Source.h"
- extern int yylex();
- void yyerror(const char*);
- char* typeConvert(Type);
- ScopeStack* scopeStack = initScope();
- SymbolTable* varTable = NULL;
- #define EPSILON(a) strcmp(a, "epsilon") == 0
- #define CHECK_ERROR(a) if(strcmp(a, "ERROR") == 0){$$.name = "ERROR"; return;}
- %}
- %token LEFT_BRACKET
- %token RIGHT_BRACKET
- %token COMMA
- %right ASSIGNMENT
- %token INT_NUMBER
- %token NUMBER
- %token START
- %left INC
- %left MUL
- %token INT
- %token REAL
- %nonassoc ID
- %token PROGRAM
- %token COLON
- %left SMALLER_THAN GREATER_THAN EQUAL_GREATER_THAN EQUAL_SMALLER_THAN NOT_EQUAL EQUAL
- %token IF
- %token THEN
- %right ELSE
- %token END_IF
- %token LOOP
- %token UNTIL
- %token END_LOOP
- %token END
- %right SEMICOLON
- %%
- Program: Initialize PROGRAM DECLARATIONS STATEMENTS END {//stuff}
- ;
- Initialize: %empty {//stuff}
- ;
- Currupt: %empty {//stuff}
- ;
- DECLARATIONS: DECLARATION SEMICOLON
- | DECLARATION SEMICOLON DECLARATIONS
- ;
- DECLARATION: {//stuff} VARIABLES_LIST COLON TYPE {//stuff}
- ;
- VARIABLES_LIST: VARIABLE VLIST {//stuff}
- ;
- VLIST: COMMA VARIABLE VLIST {//stuff}
- | %empty {//stuff}
- ;
- VARIABLE: ID V {//stuff}
- ;
- V: LEFT_BRACKET INT_NUMBER RIGHT_BRACKET {//stuff}
- | %empty {//stuff}
- ;
- TYPE: INT {//stuff}
- | REAL {//stuff}
- ;
- STATEMENTS: STATEMENT Stmnt
- ;
- Stmnt: SEMICOLON STATEMENTS
- | %empty
- ;
- STATEMENT: RECEIVER ASSIGNMENT EXPRESSION {//stuff}
- | IF CONDITION THEN Initialize STATEMENTS Currupt ELSE Initialize STATEMENTS Currupt END_IF {//stuff}
- | LOOP Initialize STATEMENTS UNTIL CONDITION END_LOOP Currupt {//stuff}
- | START Initialize DECLARATIONS SEMICOLON STATEMENTS END Currupt
- ;
- RECEIVER: ID RECV {//stuff}
- ;
- RECV: LEFT_BRACKET EXPRESSION RIGHT_BRACKET {//stuff}
- |%empty {//stuff}
- ;
- EXPRESSION: INT_NUMBER {//stuff}
- | NUMBER {//stuff}
- | ID EXPER {//stuff}
- ;
- EXPER: INC EXPRESSION {//stuff}
- | MUL EXPRESSION {//stuff}
- | LEFT_BRACKET EXPRESSION RIGHT_BRACKET {//stuff}
- | %empty {//stuff}
- ;
- CONDITION: EXPRESSION SMALLER_THAN EXPRESSION {//stuff}
- | EXPRESSION GREATER_THAN EXPRESSION {//stuff}
- | EXPRESSION EQUAL_GREATER_THAN EXPRESSION {//stuff}
- | EXPRESSION EQUAL_SMALLER_THAN EXPRESSION {//stuff}
- | EXPRESSION NOT_EQUAL EXPRESSION {//stuff}
- | EXPRESSION EQUAL EXPRESSION {//stuff}
- ;
- %%
- void main() {
- //stuff
- }
Add Comment
Please, Sign In to add comment