美文网首页
编译原理3

编译原理3

作者: 丁狗子 | 来源:发表于2017-08-11 17:40 被阅读0次

    递归下降文法,LL文法,优势在于文法实现相对LR文法简单,缺点在于不接受左递归文法,语义实现基于L属性集,实现难度较大

    LR文法,能够接受左递归(对输入文法要求低),语义实现基于S属性集,归约时可以进行语法制导翻译,实现直观简洁,缺点在于LR文法需要预先构建LR自动机,算法较为复杂

    LR自动机,项集,闭包,GOTO函数

    LR归约时需要堆栈结合自动机状态进行

    堆栈归约例子

    N → a ( N, N )

    N → ε

    ###############堆栈###########
    def parse_tree():

    stack = []
    grammar = 0
    
    for i in range(len(stmt)):
        if stmt[i]=='(':
            grammar=1
            pass
        elif stmt[i]==')':
            grammar=0
            node=stack.pop(0)
            pass
        elif stmt[i]==',':
            grammar=2
            pass
        else:
            _node=Node()
            _node.value=expression[i]
    
            if(grammar==1):
                stack[0].left=_node
            elif(grammar==2):
                stack[0].right=_node
    
            stack.insert(0, _node)
    
    return node

    相关文章

      网友评论

          本文标题:编译原理3

          本文链接:https://www.haomeiwen.com/subject/qljrrxtx.html