我想实施其他条件来限制我的语言。目前我有
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]。看起来语句在条件语句之前得到了评估。任何帮助将不胜感激
是的。当执行减薄动作功能时,其所有组件均已执行。如果不是这种情况,则参数p
不可能包含组件的语义值。
因此,如果要将循环和条件合并到要解析的语言中,则必须在解析过程中放弃直接求值的想法。相反,解析需要为解析后的文本创建一个description,然后可以对其进行评估(或对其进行编译以供以后评估)。
描述已解析文本的一种常见形式是抽象语法树(AST),尽管存在许多其他选择(并且没有确定的AST,所以那里也有很多灵活性)。