python - 在枚举(pypeg)中使用美元符号?

标签 python python-3.x pypeg

我想使用 pypeg 匹配 $f, $c, ..., $d 形式的类型,所以我尝试将其放入 Enum 中,如下所示:

class StatementType(Keyword):
    grammar = Enum( K("$f"), K("$c"), 
                    K("$v"), K("$e"),
                    K("$a"), K("$p"),
                    K("$d"))

然而,这失败了:

>>> k = parse("$d", StatementType)
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "/usr/local/lib/python3.6/site-packages/pypeg2/__init__.py", line 667, in parse
    t, r = parser.parse(text, thing)
  File "/usr/local/lib/python3.6/site-packages/pypeg2/__init__.py", line 794, in parse
    raise r
  File "<string>", line 1
    $d
    ^
SyntaxError: expecting StatementType

我还尝试用 \$x 替换 $x 来转义 $ 字符。我还尝试在 r"\$x" 之前添加,希望它将其视为正则表达式对象。这些组合似乎都不起作用并给出相同的错误消息。如何让它与我给出的示例相匹配?

最佳答案

default regex for Keywords\w+。您可以通过设置 Keyword.regex 类变量来更改它:

class StatementType(Keyword):
    grammar = Enum( K("$f"), K("$c"),
                    K("$v"), K("$e"),
                    K("$a"), K("$p"),
                    K("$d"))

Keyword.regex = re.compile(r"\$\w") # e.g. $a, $2, $_
k = parse("$d", StatementType)

关于python - 在枚举(pypeg)中使用美元符号?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42659136/

相关文章:

python - 处理可能为 None 的变量

python - 如何匹配 pyPEG 中的无序事物?

python - 当用 python 标记阿拉伯文本时,我得到奇怪的结果?

python - 如何从 txt 文件创建 HDF5 文件(多标签分类)以在 Caffe 中使用

python - 在 urllib.requests 中启用重定向

python-3.x - 无法对字典中的值进行 numpy 操作

python - 在 Python 中计算作业列表完成时间的最优雅方法

c++ - 在 C++ 源文件中每个函数定义的开头添加一个宏调用

python - pyPEG2 解析换行符

python - 在 Django 模板中循环字典的字典只需 1 行代码