我们试图用Antlr4(Python2目标)解析raspberrypib上的自定义语言。不过,解析任何东西都要花上10秒钟的时间。这是我的代码:
在转置器.py公司名称:
# -*- coding:Utf-8 -*-
from antlr4 import *
from TransposeurLexer import TransposeurLexer
from TransposeurParser import TransposeurParser
import sys
from Listener import Listener
def transpose(file_path):
input = FileStream(file_path)
lexer = TransposeurLexer(input)
stream = CommonTokenStream(lexer)
parser = TransposeurParser(stream)
tree = parser.myfile()
listener = Listener()
walker = ParseTreeWalker()
walker.walk(listener, tree)
return listener.array
Transposeur.g4:
^{pr2}$需要时间的命令是tree = parser.myfile()
。有什么方法可以让事情更快些吗?在
我怀疑它在解决low+vs(low | cap)*…..的案例时遇到了困难,在这些案例中,它可能不得不任意地向前看,以确定适用哪种减少。在
我认为真正的问题是,你的单位+参照相对于低+是模棱两可的。给出一个单元的文本,包括:
(五十个a)。我们可以用以下方法进行分析:
所以我认为你的这部分语法非常模糊,ANTLR正在探索巨大的选择空间,试图选择一个。你可能是 幸运的是,ANTLR足够快的完成了:-}
使用单位+和上限(==上限+)也会遇到同样的问题。在
我不清楚一个单位有多少结构需要你去捕捉。在我看来你只是想要一根绳子。 尝试将其重新编码为:
^{pr2}$更好的方法是这样定义单元:
相关问题 更多 >
编程相关推荐