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


Python Analyzer.output方法代码示例

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


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

示例1: Parser

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

#.........这里部分代码省略.........
    
    
    def forStatement(self):
        ident_rec = {}
        expression_rec = {}
        
        if self.lookahead is 'MP_FOR':  # 56 ForStatement -> "for" ControlVariable ":=" InitialValue StepValue FinalValue "do" Statement
            self.match('MP_FOR')
            ident_rec = self.controlVariable()
            self.match('MP_ASSIGN')
            expression_rec = self.initialValue()
            self.analyzer.genAssign(ident_rec, expression_rec)
            step = self.stepValue()
            self.analyzer.incrementLabel()
            start_label = self.analyzer.getLabel()
            self.analyzer.incrementLabel()
            false_label = self.analyzer.getLabel()
            self.analyzer.genLabel(start_label)
            self.finalValue()
            self.analyzer.genPushId(ident_rec)
            if(step == "to"):
                self.analyzer.genBoolean(">=", ident_rec, expression_rec)
                self.analyzer.genBranchFalse(false_label)
            elif(step == "downto"):
                self.analyzer.genBoolean("<=", ident_rec, expression_rec)
                self.analyzer.genBranchFalse(false_label)
            self.match('MP_DO')
            self.statement()
            if(step == "to"):
                self.analyzer.genPushInt(str(1))
            elif(step == "downto"):
                self.analyzer.genPushInt(str(-1))
            self.analyzer.genPushId(ident_rec)
            self.analyzer.output("ADDS")
            self.analyzer.genAssign(ident_rec, expression_rec)
            self.analyzer.genBranch(start_label)
            self.analyzer.genLabel(false_label)
        else:
            self.error("for")
            
    
    
    def controlVariable(self):
        identRec = {}
        if self.lookahead is 'MP_IDENTIFIER':  # 57 ControlVariable -> VariableIdentifier
            id = self.variableIdentifier()                
            identRec = self.analyzer.processId(id)
            identRec["lexeme"] = id
            return identRec
        else:
            self.error("identifier")

    
    def initialValue(self):
        if self.lookahead in ['MP_LPAREN', 'MP_IDENTIFIER',  # 58 InitialValue -> OrdinalExpression
                              'MP_PLUS', 'MP_MINUS',
                              'MP_FLOAT_LIT', 'MP_FIXED_LIT', 'MP_STRING_LIT',
                              'MP_NOT', 'MP_INTEGER_LIT',
                              'MP_TRUE', 'MP_FALSE']:
            return self.ordinalExpression()
        else:
            self.error("(, identifier, +, -, any literal value, not")
    
    
    
    def stepValue(self):
开发者ID:agroves333,项目名称:compiler,代码行数:70,代码来源:Parser.py


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