在解析符号之前在PLY Python中执行操作

2024-10-01 02:39:53 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在制作一个解析器,可以立即将令牌解析为三个地址代码。 为了在调用函数时生成正确的TAC代码,我需要在解析所有标记之前和之后调用函数“GiveTac”。在

我的问题是在解析令牌之前,我找不到调用函数的方法。在PLY的文档中有一个6.11节的嵌入式操作,它声称您可以简单地添加一个空规则,如下所示:

def p_foo(p):
    "foo : A seen_A B C D"
    print("Parsed a foo", p[1],p[3],p[4],p[5])
    print("seen_A returned", p[2])

def p_seen_A(p):
    "seen_A :"
    print("Saw an A = ", p[-1])   # Access grammar symbol to left
    p[0] = some_value            # Assign value to seen_A

但是如果我在我的代码中尝试这个,我总是得到一个“输入语法错误!”错误。 这是我的代码:

^{pr2}$

如果我删除我的p_fun_declaration_type_formal_pars_块函数中的“before”,它确实接受我的语法。在

粘贴我的代码链接: Yacc.py

Parser.out


Tags: to方法代码标记解析器foovalue地址