我想在我的语言中实现if else条件。目前我有
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,然后打印p0:10。看起来语句在条件语句之前进行了计算。任何帮助都将不胜感激
发布于 2020-04-28 16:45:45
是这样的。当一个铺层减少动作函数执行时,它的所有组件都已执行。如果不是这样,参数p就不可能包含组件的语义值。
因此,如果您希望将循环和条件语句合并到正在解析的语言中,则必须放弃在解析过程中直接求值的想法。相反,解析需要创建已解析文本的描述,随后可以对其进行评估(或编译以供以后评估)。
描述已解析文本的一种常见形式是抽象语法树( Abstract Syntax Tree,AST),尽管还有许多其他选项(而且没有明确的AST,因此您也有很大的灵活性)。
https://stackoverflow.com/questions/61473838
复制相似问题