当前位置: 首页>>代码示例>>Python>>正文


Python Analyzer.genArithmetic方法代码示例

本文整理汇总了Python中Analyzer.Analyzer.genArithmetic方法的典型用法代码示例。如果您正苦于以下问题:Python Analyzer.genArithmetic方法的具体用法?Python Analyzer.genArithmetic怎么用?Python Analyzer.genArithmetic使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在Analyzer.Analyzer的用法示例。


在下文中一共展示了Analyzer.genArithmetic方法的1个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的Python代码示例。

示例1: Parser

# 需要导入模块: from Analyzer import Analyzer [as 别名]
# 或者: from Analyzer.Analyzer import genArithmetic [as 别名]

#.........这里部分代码省略.........
        termTailRec = {}
        
        if self.lookahead in ['MP_LPAREN', 'MP_IDENTIFIER',   # 77 SimpleExpression -> OptionalSign Term TermTail
                              'MP_PLUS', 'MP_MINUS',
                              'MP_FLOAT_LIT', 'MP_FIXED_LIT', 'MP_STRING_LIT',
                              'MP_NOT', 'MP_INTEGER_LIT',
                              'MP_TRUE', 'MP_FALSE']:
            
            sign = self.optionalSign()
            termRec = self.term()
            type = termRec['type']
            if sign == "-":
                if type == "Integer":
                    self.analyzer.genNeg()
                elif type in ["Float", "Fixed"]:
                    self.analyzer.genNegf()
            termTailRec = termRec
            termTailRec = self.termTail(termTailRec)
            expressionRec = termTailRec     # This is what Rocky suggested
            return expressionRec
        else:
            self.error("(, identifier, +, -, any literal value, not")
            
    
    
    def termTail(self, termTailRec = {}):
        # Semantic Records
        addopRec = {}
        termRec = {}
        
        if self.lookahead in ['MP_PLUS', 'MP_MINUS', 'MP_OR']:  # 78 TermTail -> AddingOperator Term TermTail
            addopRec["lexeme"] = self.addingOperator()
            termRec = self.term()
            resultRec = self.analyzer.genArithmetic(termTailRec, addopRec, termRec)
            
            self.termTail(resultRec)
            termTailRec = resultRec
            
            return termTailRec
            
        elif self.lookahead in ['MP_SCOLON', 'MP_RPAREN', 'MP_END',  # 79 TermTail -> lambda
                                'MP_COMMA', 'MP_THEN', 'MP_ELSE',
                                'MP_UNTIL', 'MP_DO', 'MP_TO',
                                'MP_DOWNTO', 'MP_EQUAL', 'MP_LTHAN',
                                'MP_GTHAN', 'MP_LEQUAL', 'MP_GEQUAL',
                                'MP_NEQUAL']:
            return termTailRec
        else:
            self.error("+, -, or, ;, ), end, comma, then, else, until, do, to, downto, an equality operator")
            
    
    
    def optionalSign(self):
        if self.lookahead is 'MP_PLUS':  # 80 OptionalSign -> "+"
            self.match('MP_PLUS')
        elif self.lookahead is 'MP_MINUS':  # 81 OptionalSign -> "-"
            return self.match('MP_MINUS')
        elif self.lookahead in ['MP_LPAREN', 'MP_IDENTIFIER',  # 82 OptionalSign -> lambda
                                'MP_NOT', 'MP_INTEGER_LIT',
                                'MP_FLOAT_LIT', 'MP_FIXED_LIT', 'MP_STRING_LIT',
                                'MP_TRUE', 'MP_FALSE']:
            return
        else:
            self.error("+, -, (, identifier, +, -, any literal value, not")
    
    
开发者ID:agroves333,项目名称:compiler,代码行数:68,代码来源:Parser.py


注:本文中的Analyzer.Analyzer.genArithmetic方法示例由纯净天空整理自Github/MSDocs等开源代码及文档管理平台,相关代码片段筛选自各路编程大神贡献的开源项目,源码版权归原作者所有,传播和使用请参考对应项目的License;未经允许,请勿转载。