Advertisement
minh_tran_782

ast-ex5

Mar 8th, 2023 (edited)
460
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 1.29 KB | None | 0 0
  1. class ASTGeneration(MPVisitor):
  2.  
  3.     def visitProgram(self,ctx:MPParser.ProgramContext):
  4.         return self.visit(ctx.exp())
  5.  
  6.     def visitExp(self,ctx:MPParser.ExpContext):
  7.         if ctx.ASSIGN():
  8.             left = self.visit(ctx.term())
  9.             right = self.visit(ctx.exp())
  10.             return Binary(ctx.ASSIGN().getText(),left,right)
  11.         return self.visit(ctx.term())
  12.        
  13.     def visitTerm(self,ctx:MPParser.TermContext):
  14.         if ctx.COMPARE():
  15.             left = self.visit(ctx.factor(0))
  16.             right = self.visit(ctx.factor(1))
  17.             return Binary(ctx.COMPARE().getText(),left,right)
  18.         return self.visit(ctx.factor(0))
  19.        
  20.     def visitFactor(self,ctx:MPParser.FactorContext):
  21.         if ctx.ANDOR():
  22.             left = self.visit(ctx.factor())
  23.             right = self.visit(ctx.operand())
  24.             return Binary(ctx.ANDOR().getText(),left,right)
  25.         return self.visit(ctx.operand())  
  26.  
  27.     def visitOperand(self,ctx:MPParser.OperandContext):
  28.         if ctx.ID():
  29.             return Id(ctx.ID().getText())
  30.         elif ctx.INTLIT():
  31.             return IntLiteral(int(ctx.INTLIT().getText()))
  32.         elif ctx.BOOLIT():
  33.             return BooleanLiteral(ctx.BOOLIT().getText() == "True")
  34.         else: return self.visit(ctx.exp())
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement