Advertisement
Guest User

grammar

a guest
Nov 16th, 2019
111
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Bash 1.02 KB | None | 0 0
  1. grammar Lab1;
  2.  
  3. fragment E: 'E' | 'e';
  4. fragment X: 'X' | 'x';
  5. fragment A: 'A' | 'a';
  6. fragment B: 'B' | 'b';
  7. fragment C: 'C' | 'c';
  8. fragment D: 'D' | 'd';
  9.  
  10. REGISTER: ('%'E A X | '%'E B X | '%'E C X | '%'E D X);
  11.  
  12. ADD: '+';
  13. SUB: '-';
  14. MUL: '*';
  15. DIV: '/';
  16. LBRA: '(';
  17. RBRA: ')';
  18. NUMBER: [0-9]+;
  19. WHITESPACE: [ \r\n\t]+ -> skip;
  20.  
  21. MOV: 'mov';
  22. PUSH: 'push';
  23. INT: 'int 0x80';
  24. XOR: 'xor';
  25. COMMANDS: MOV | PUSH | INT | XOR;
  26.  
  27. start: commands;
  28.  
  29. commands
  30.     : MOV expression ',' registers      #Mov
  31.     | PUSH expression                   #Push
  32.     | XOR expression ',' expression     #Xor
  33.     | INT '0x80'                        #Int
  34.     ;
  35.  
  36. expression
  37.     : NUMBER                        #Number
  38.     | registers                     #ExpRegi
  39.     | LBRA expression RBRA          #BRexp
  40.     | expression MUL expression     #Multiply
  41.     | expression DIV expression     #Divide
  42.     | expression ADD expression     #Add
  43.     | expression SUB expression     #Subtract
  44.     ;
  45.  
  46. registers
  47.     : REGISTER #Register
  48.     ;
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement