def getRelationalOperator(self): op = RelationalOperator tok = self.getNextToken() if (tok.getTokType() is TokenType.EQ_TOK): op = RelationalOperator.EQ_OP elif (tok.getTokType() is TokenType.NE_TOK): op = RelationalOperator.NE_OP elif (tok.getTokType() is TokenType.GT_TOK): op = RelationalOperator.GT_OP elif (tok.getTokType() is TokenType.GE_TOK): op = RelationalOperator.GE_OP elif (tok.getTokType() is TokenType.LT_TOK): op = RelationalOperator.LT_OP elif (tok.getTokType() is TokenType.LE_TOK): op = RelationalOperator.LE_OP else: raise ParserException("relational operator expected at row " + Token.getRowNumber() + "and column " + Token.getColumnNumber()) return op
def getStatement(self): tok = self.getLookaheadToken() if(tok.getTokType() == TokenType.ID_TOK): s = self.getAssignmentStatement() elif (tok.getTokType() == TokenType.IF_TOK): s = self.getIfStatement() elif (tok.getTokType() == TokenType.PRINT_TOK): s = self.getPrintStatement() elif (tok.getTokType() == TokenType.FROM_TOK): s = self.getLoopStatement() else: #raise ParserException(tok.getTokType) raise ParserException(str(tok.getTokType()) + " statement is expected at row " + str(Token.getRowNumber()) + "and column " + str(Token.getColumnNumber())) return s