如果语句发布ply py

问题描述 投票:0回答:1

我想实施其他条件来限制我的语言。目前我有

def p_if_statement(p):
     '''if_statement : IF LPAREN condition RPAREN LCURLY statements RCURLY
                 | IF LPAREN condition RPAREN LCURLY statements RCURLY ELSE LCURLY statements RCURLY'''
    print(p[0:10])

我知道它还没有完成,但是当if条件为false时,我很难看该怎么办。例如:

if(False){ 
    a = 5;
    print(a);
}

此代码将打印出5,然后将打印p [0:10]。看起来语句在条件语句之前得到了评估。任何帮助将不胜感激

python yacc lex ply
1个回答
1
投票

是的。当执行减薄动作功能时,其所有组件均已执行。如果不是这种情况,则参数p不可能包含组件的语义值。

因此,如果要将循环和条件合并到要解析的语言中,则必须在解析过程中放弃直接求值的想法。相反,解析需要为解析后的文本创建一个description,然后可以对其进行评估(或对其进行编译以供以后评估)。

描述已解析文本的一种常见形式是抽象语法树(AST),尽管存在许多其他选择(并且没有确定的AST,所以那里也有很多灵活性)。

© www.soinside.com 2019 - 2024. All rights reserved.