我有一个简单的HelloWorld。g4语法(见底部)。我能够成功生成<代码>。py文件使用:
set CLASSPATH=.;antlr-complete.jar;%CLASSPATH%
java org.antlr.v4.Tool -Dlanguage=Python2 HelloWorld.g4
现在我想使用带有-gui
标志的TestRig
来生成解析树GUI。我安装了ANTRL Python运行时(antlr4-python2-runtime-4.5.tar.gz
)。我可以打开一个Python解释器并键入:
import antlr4
并且解释器识别出 antlr4
模块。
当我像这样运行< code>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
从我的调查中,我发现了几篇列出相同错误消息的帖子。但是,在这些情况下,他们忘记在类路径中包含句点 (.)。但正如你所看到的,我已经把它包括在我的类路径中。
我不知道如何让< code>TestRig工作。注意:当目标语言是Java时,让< code>TestRig使用相同的< code>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
。
请看这个答案,它建议首先运行< code>language=java目标。然后对问题本身进行注释来编译java文件。
为了完整起见,在忘记之前:确保您的< code>$CLASSPATH env变量设置为包含点< code > ' . '以及< code>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
请注意,我的语法文件中有< code > options { language = python 3 } ,而< code>-D覆盖没有按预期工作。所以我删除了选项块,现在在命令行上指定语言目标。
然后将 *.java
文件编译为 *.class
文件:
> javac -g *.java
然后运行测试台:
> grun HelloWorld message
# or: java org.antlr.v4.gui.TestRig HelloWorld message -gui < input.txt
问题内容: 我有一个简单的语法(请参阅底部)。我能够使用以下命令成功生成文件: 现在,我想使用带有标志的来生成解析树GUI。我已经安装了ANTRL Python运行时()。我可以打开Python解释器并输入: 然后解释器识别模块。 当我这样运行时: 我收到此错误消息: 从我的调查中,我发现了几则帖子列出了相同的错误消息。但是,在这些情况下,他们忘记在类路径中包含句点(。)。但是正如您所看到的,我已
最小生成树英文是Minimum Spanning Tree,对于最小生成树大家应该都不陌生,当然还有最大生成树,首先就简单总结一下算法里的生成树。 一、什么是生成树? Spanning有跨越的意思,生成树一般来说每个节点都能访问到别的节点,是一个连通树。所以,一般考虑无向图里去造生成树。生成树又分最小和最大两种,其中最小生成树应用比较多。总结一下生成树的定义: 1. 首先它得是一个树的结构 2.
无向图最小生成树的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算法的计算过程,参与维基百科的词条:普里姆算法 将上述点与点关系以及两点之间距离(边长,有的文献
最小生成树的Kruskal算法 描述:有A、B、C、D四个点,每两个点之间的距离(无方向)是(第一个数字是两点之间距离,后面两个字母代表两个点):(1,’A’,’B’),(5,’A’,’C’),(3,’A’,’D’),(4,’B’,’C’),(2,’B’,’D’),(1,’C’,’D’) 生成边长和最小的树,也就是找出一种连接方法,将各点连接起来,并且各点之间的距离和最小。 思路说明: Krusk
本篇主要图文讲解最小生成树的实现和算法。 一、最小生成树 最小生成树(minimum spanning tree)是由n个顶点,n-1条边,将一个连通图连接起来,且使权值最小的结构。最小生成树可以用Prim(普里姆)算法或kruskal(克鲁斯卡尔)算法求出。 此外还可以用bfs和dfs生成,分别叫bfs生成树和dfs生成树。 例: 二、Prim(普里姆)算法 这里就采用的是邻接矩阵存储的,Pri
我试图从这个地址: 服务器转移。co/api/v1 使用OKHttp库。运行以下代码后: 我收到以下警告,我无法解决。 JAVA网UnknownHostException:无法解析主机“server staging.co/api/v1”:没有与主机名关联的地址