我有一个简单的HelloWorld.g4
语法(请参阅底部)。我能够.py
使用以下命令成功生成文件:
set CLASSPATH=.;antlr-complete.jar;%CLASSPATH%
java org.antlr.v4.Tool -Dlanguage=Python2 HelloWorld.g4
现在,我想使用TestRig
带有-gui
标志的来生成解析树GUI。我已经安装了ANTRL
Python运行时(antlr4-python2-runtime-4.5.tar.gz
)。我可以打开Python解释器并输入:
import antlr4
然后解释器识别antlr4
模块。
当我这样运行时TestRig
:
set CLASSPATH=.;antlr-complete.jar;%CLASSPATH%
java org.antlr.v4.gui.TestRig HelloWorld message -gui < input.txt
我收到此错误消息:
Can't load HelloWorld as lexer or parser
从我的调查中,我发现了几则帖子列出了相同的错误消息。但是,在这些情况下,他们忘记在类路径中包含句点(。)。但是正如您所看到的,我已经将其包含在类路径中。
我没有关于如何TestRig
开始工作的想法。注意:当目标语言是Java时,我可以TestRig
使用相同的HelloWorld
语法。
您能提供的任何帮助将不胜感激。
HelloWorld.g4
grammar HelloWorld;
options { language=Python; }
message : GREETING NAME;
GREETING : 'Hello' ;
NAME : [a-zA-Z]+ ;
WS : [ \t\r\n]+ -> skip ;
今天也要考虑到这一点:问题在于testrig需要生成的Java源代码。但是,由于您使用的是Python,除非明确运行antlr4
两次,否则您将没有它:一次用于目标语言Python2(或3),一次用于-Dlanguage=java
。
请参阅此答案,该答案建议先运行language=java
目标。然后对问题本身进行注释以编译java文件。
并且为了完整性和在被遗忘之前:确保$CLASSPATH
已设置env变量,使其包含点'.'
和antlr*.jar
文件路径。例如在unix上:
export CLASSPATH=".:/<Mydirectory>/antlr-4.2.2-complete.jar:$CLASSPATH"
$CLASSPATH
正确设置后,我逐步介绍了以下步骤:
为Java编译:
> antlr4 -Dlanguage=java HelloWorld.g4
# or: java org.antlr.v4.Tool -Dlanguage=java HelloWorld.g4
请注意,我的options { language=Python3 }
语法文件中包含,并且-D
覆盖未按预期工作。因此,我删除了选项块,现在在命令行上指定语言目标。
然后将*.java
文件编译成*.class
文件:
> javac -g *.java
然后运行testrig:
> grun HelloWorld message
# or: java org.antlr.v4.gui.TestRig HelloWorld message -gui < input.txt
我有一个简单的HelloWorld。g4语法(见底部)。我能够成功生成<代码>。py文件使用: 现在我想使用带有标志的来生成解析树GUI。我安装了ANTRL Python运行时()。我可以打开一个Python解释器并键入: 并且解释器识别 模块。 当我像这样运行< code>TestRig时: 我收到此错误消息: 从我的调查中,我发现了几篇列出相同错误消息的帖子。但是,在这些情况下,他们忘记在类路
句法分析 先来解释一下句法分析。句法分析分为句法结构分析和依存关系分析。 句法结构分析也就是短语结构分析,比如提取出句子中的名次短语、动词短语等,最关键的是人可以通过经验来判断的短语结构,那么怎么由机器来判断呢? (有关依存关系分析的内容,具体可以看《自己动手做聊天机器人 十二-教你如何利用强大的中文语言技术平台做依存句法和语义依存分析》) 句法分析树 样子如下: -吃(v)-
无向图最小生成树的Prim算法 思路说明 假设点A,B,C,D,E,F,两点之间有连线的,以及它们的距离分别是:(A-B:7);(A-D:5);(B-C:8);(B-D:9);(B-E:7);(C-E:5);(D-E:15);(D-F:6);(E-F:8);(E-G:9);(F-G:11) 关于Prim算法的计算过程,参与维基百科的词条:普里姆算法 将上述点与点关系以及两点之间距离(边长,有的文献
最小生成树英文是Minimum Spanning Tree,对于最小生成树大家应该都不陌生,当然还有最大生成树,首先就简单总结一下算法里的生成树。 一、什么是生成树? Spanning有跨越的意思,生成树一般来说每个节点都能访问到别的节点,是一个连通树。所以,一般考虑无向图里去造生成树。生成树又分最小和最大两种,其中最小生成树应用比较多。总结一下生成树的定义: 1. 首先它得是一个树的结构 2.
最小生成树的Kruskal算法 描述:有A、B、C、D四个点,每两个点之间的距离(无方向)是(第一个数字是两点之间距离,后面两个字母代表两个点):(1,’A’,’B’),(5,’A’,’C’),(3,’A’,’D’),(4,’B’,’C’),(2,’B’,’D’),(1,’C’,’D’) 生成边长和最小的树,也就是找出一种连接方法,将各点连接起来,并且各点之间的距离和最小。 思路说明: Krusk
本文向大家介绍PHP实现无限极分类生成分类树的方法,包括了PHP实现无限极分类生成分类树的方法的使用技巧和注意事项,需要的朋友参考一下 本文实例讲述了PHP实现无限极分类生成分类树的方法。分享给大家供大家参考,具体如下: 现在的分类数据库设计基本都是:每一个分类有一个id主键字段,一个pid指向父类的id,这样便可实现无限级分类,取出的数据就是如下的格式: 不多说,直接上处理代码: 测试运行: 运