Guest User

Untitled

a guest
Jun 23rd, 2016
105
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 2.37 KB | None | 0 0
  1. %{
  2.  
  3. #include "Source.h"
  4.  
  5. extern int yylex();
  6. void yyerror(const char*);
  7. char* typeConvert(Type);
  8.  
  9. ScopeStack* scopeStack = initScope();
  10. SymbolTable* varTable = NULL;
  11.  
  12. #define EPSILON(a) strcmp(a, "epsilon") == 0
  13. #define CHECK_ERROR(a) if(strcmp(a, "ERROR") == 0){$$.name = "ERROR"; return;}
  14. %}
  15.  
  16.  
  17.  
  18.  
  19.  
  20. %token LEFT_BRACKET
  21. %token RIGHT_BRACKET
  22. %token COMMA
  23. %right ASSIGNMENT
  24. %token INT_NUMBER
  25. %token NUMBER
  26. %token START
  27. %left INC
  28. %left MUL
  29. %token INT
  30. %token REAL
  31. %nonassoc ID
  32. %token PROGRAM
  33. %token COLON
  34.  
  35. %left SMALLER_THAN GREATER_THAN EQUAL_GREATER_THAN EQUAL_SMALLER_THAN NOT_EQUAL EQUAL
  36. %token IF
  37. %token THEN
  38. %right ELSE
  39. %token END_IF
  40. %token LOOP
  41. %token UNTIL
  42. %token END_LOOP
  43. %token END
  44. %right SEMICOLON
  45.  
  46. %%
  47.  
  48. Program: Initialize PROGRAM DECLARATIONS STATEMENTS END {//stuff}
  49. ;
  50. Initialize: %empty  {//stuff}
  51. ;
  52. Currupt:    %empty  {//stuff}
  53. ;
  54. DECLARATIONS: DECLARATION SEMICOLON
  55.             | DECLARATION SEMICOLON DECLARATIONS
  56. ;
  57.  
  58. DECLARATION: {//stuff} VARIABLES_LIST COLON TYPE    {//stuff}
  59. ;
  60.  
  61. VARIABLES_LIST: VARIABLE VLIST  {//stuff}          
  62. ;
  63. VLIST: COMMA VARIABLE  VLIST    {//stuff}
  64.         | %empty    {//stuff}
  65. ;
  66.  
  67. VARIABLE: ID V  {//stuff}
  68. ;
  69. V:  LEFT_BRACKET INT_NUMBER RIGHT_BRACKET {//stuff}
  70.     | %empty    {//stuff}
  71. ;
  72.  
  73. TYPE:   INT         {//stuff}
  74.     |   REAL        {//stuff}
  75. ;
  76.  
  77. STATEMENTS: STATEMENT Stmnt
  78. ;
  79. Stmnt:  SEMICOLON STATEMENTS   
  80.     |   %empty
  81. ;
  82.  
  83.  
  84. STATEMENT:      RECEIVER ASSIGNMENT EXPRESSION  {//stuff}
  85.             |  IF CONDITION THEN Initialize STATEMENTS Currupt ELSE Initialize STATEMENTS Currupt END_IF {//stuff}
  86.             |  LOOP Initialize STATEMENTS UNTIL CONDITION END_LOOP Currupt {//stuff}
  87.             |  START Initialize DECLARATIONS SEMICOLON STATEMENTS END Currupt
  88. ;
  89.    
  90. RECEIVER: ID RECV   {//stuff}
  91. ;
  92. RECV: LEFT_BRACKET EXPRESSION RIGHT_BRACKET {//stuff}
  93.     |%empty {//stuff}
  94. ;
  95.  
  96. EXPRESSION:     INT_NUMBER {//stuff}
  97.             |   NUMBER      {//stuff}
  98.             |   ID EXPER    {//stuff}
  99. ;
  100.  
  101. EXPER:      INC EXPRESSION      {//stuff}
  102.         |   MUL EXPRESSION      {//stuff}
  103.         |   LEFT_BRACKET EXPRESSION RIGHT_BRACKET  {//stuff}
  104.         |   %empty {//stuff}
  105. ;
  106.  
  107. CONDITION:    EXPRESSION SMALLER_THAN EXPRESSION    {//stuff}
  108.             | EXPRESSION GREATER_THAN EXPRESSION    {//stuff}
  109.             | EXPRESSION EQUAL_GREATER_THAN EXPRESSION  {//stuff}
  110.             | EXPRESSION EQUAL_SMALLER_THAN EXPRESSION  {//stuff}
  111.             | EXPRESSION NOT_EQUAL EXPRESSION   {//stuff}
  112.             | EXPRESSION EQUAL EXPRESSION   {//stuff}
  113. ;
  114.  
  115.  
  116. %%
  117.  
  118. void main() {
  119.    //stuff 
  120. }
Add Comment
Please, Sign In to add comment