def parse(self): self.stmt = Stmt() self.stmt.parse() if TokList.checkTok('END') or TokList.checkTok('ELSE') or TokList.checkTok('ENDIF') or TokList.checkTok('ENDWHILE'): return self.stmt_seq = StmtSeq() self.stmt_seq.parse()
def parse(self): self.term = Term() self.term.parse() if TokList.checkTok('PLUS'): TokList.nextToken() self.plusOrMinus = '+' self.expr = Expr() self.expr.parse() elif TokList.checkTok('MINUS'): TokList.nextToken() self.plusOrMinus = '-' self.expr = Expr() self.expr.parse()
def parse(self): if TokList.checkTok('CONST'): self.const = Const() self.const.parse(TokList.getIdOrConst()) TokList.nextToken() elif TokList.checkTok('ID'): self.id = Id() self.id.parse(TokList.getIdOrConst()) TokList.nextToken() elif TokList.match('LEFTPARAN', 'factor'): self.expr = Expr.Expr() self.expr.parse() TokList.match('RIGHTPARAN', 'factor')
def parse(self): if TokList.checkTok('NOT'): self.notStr = '!' TokList.nextToken() TokList.match('LEFTPARAN', 'cond') self.cond = Cond() self.cond.parse() TokList.match('RIGHTPARAN', 'cond') return self.cmpr = Cmpr() self.cmpr.parse() if TokList.checkTok('OR'): TokList.nextToken() self.cond = Cond() self.cond.parse()
def parse(self): self.factor = Factor() self.factor.parse() if TokList.checkTok('MULT'): TokList.nextToken() self.term = Term() self.term.parse()
def parse(self): self.leftExpr = Expr() self.leftExpr.parse() if TokList.checkTok('EQUAL'): self.checkValue = '=' TokList.nextToken() elif TokList.checkTok('LESSTHAN'): self.checkValue = '<' TokList.nextToken() elif TokList.checkTok('LESSTHANEQUAL'): self.checkValue = '<=' TokList.nextToken() else: print('Error: improper syntax for comparator') exit() self.rightExpr = Expr() self.rightExpr.parse()
def parse(self): self.decl = Decl() self.decl.parse() #Checks if the decl_seq is at an end if TokList.checkTok('BEGIN'): return self.decl_seq = DeclSeq() self.decl_seq.parse()
def parse(self): self.id = Id() #Passing in name of id to the parse function self.id.parse(TokList.getIdOrConst()) TokList.nextToken() if TokList.checkTok('COMMA'): TokList.match('COMMA', 'id list') self.id_list = IdList() self.id_list.parse()
def parse(self): TokList.match("PROGRAM", "program") self.decl_seq = DeclSeq() self.decl_seq.parse() TokList.match("BEGIN", "program") self.stmt_seq = StmtSeq() self.stmt_seq.parse() TokList.match("END", "program") #Checks for code after end of program if not TokList.checkTok('EOF'): print("ERROR: Improper code after end of program")
def parse(self): if TokList.checkTok('ID'): self.altNo = 1 self.s1 = Assign() self.s1.parse() elif TokList.checkTok('IF'): self.altNo = 2 self.s2 = If() self.s2.parse() elif TokList.checkTok('WHILE'): self.altNo = 3 self.s3 = Loop() self.s3.parse() elif TokList.checkTok('INPUT'): self.altNo = 4 self.s4 = In() self.s4.parse() elif TokList.checkTok('OUTPUT'): self.altNo = 5 self.s5 = Out() self.s5.parse() elif TokList.checkTok('CASE'): self.altNo = 6 self.s6 = Case() self.s6.parse() else: #Used to briefly check for and EOF exception TokList.match('', 'statement')
def parse(self): TokList.match('IF', 'if') self.cond = Cond() self.cond.parse() TokList.match('THEN', 'if') self.stmt_seq_then = StmtSeq.StmtSeq() self.stmt_seq_then.parse() if TokList.checkTok('ELSE'): TokList.nextToken() self.stmt_seq_else = StmtSeq.StmtSeq() self.stmt_seq_else.parse() TokList.match('ENDIF', 'if') TokList.match('SEMICOLON', 'if')
def parse(self): if not TokList.checkTok('BAR'): return TokList.match('BAR', 'case line follow') self.caseLine = CaseLine.CaseLine() self.caseLine.parse()