Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- grammar Lab1;
- fragment E: 'E' | 'e';
- fragment X: 'X' | 'x';
- fragment A: 'A' | 'a';
- fragment B: 'B' | 'b';
- fragment C: 'C' | 'c';
- fragment D: 'D' | 'd';
- REGISTER: ('%'E A X | '%'E B X | '%'E C X | '%'E D X);
- ADD: '+';
- SUB: '-';
- MUL: '*';
- DIV: '/';
- LBRA: '(';
- RBRA: ')';
- NUMBER: [0-9]+;
- WHITESPACE: [ \r\n\t]+ -> skip;
- MOV: 'mov';
- PUSH: 'push';
- INT: 'int 0x80';
- XOR: 'xor';
- COMMANDS: MOV | PUSH | INT | XOR;
- start: commands;
- commands
- : MOV expression ',' registers #Mov
- | PUSH expression #Push
- | XOR expression ',' expression #Xor
- | INT '0x80' #Int
- ;
- expression
- : NUMBER #Number
- | registers #ExpRegi
- | LBRA expression RBRA #BRexp
- | expression MUL expression #Multiply
- | expression DIV expression #Divide
- | expression ADD expression #Add
- | expression SUB expression #Subtract
- ;
- registers
- : REGISTER #Register
- ;
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement