我搜索了插件仓库并下载了javacc插件.
现在我有了插件,我如何在IntelliJ中使用它.
我的项目看起来像这样.

我知道有JavaCC的解析器的例子很多在这里,但他们都无能为力.它们只接受一个字符串,或产生解析错误.
我需要的是一些真正的解析器的例子,它们在解析过程中实际上做了一些事情.(例如在解析XML字符串期间构建DOM树).
请帮忙!;)
我已经使用了antlr和javacc/freecc一段时间了.现在我需要使用antlr语法编写一堆解析器,但是这样的解析器需要用ruby lang编写.
我用谷歌搜索但没有找到.是否有任何ruby解析器生成器采用antlr语法并创建解析器?如果有很多,你认为哪一个最好?
TIA保罗
基本要求是使用关键字作为标识符,所以我想区分令牌和它的上下文.(例如,class是一个关键字,但我们允许一个名为的变量class).
在Java中,这是可能的,但它是如此艰难,这里就是我如何做到这一点
TOKEN :
{
<I_CAL: "CAL"> : DO_CAL
| <I_CALL: "CALL">
| <I_CMP: "CMP">
| <I_EXIT: "EXIT">
| <I_IN: "IN">
| <I_JMP: "JMP">
| <I_JPC: "JPC"> : NEED_CMP_OP
| <I_LD: "LD"> : NEED_DATA_TYPE
| <I_NOP: "NOP">
| <I_OUT: "OUT">
| <I_POP: "POP">
| <I_PUSH: "PUSH">
| <I_RET: "RET">
| <I_DATA: "DATA"> : DO_DATA
| <I_BLOCK: ".BLOCK">
}
// T prefix for Token
TOKEN :
{
<T_REGISTER : "R0" | "R1" | "R2" | …Run Code Online (Sandbox Code Playgroud) 我想在JJT文件中添加韩文字符:
| < #XCHARSET :
("_latin" | "_unicode" | "_kanjisjis" | "_graphic" | "national" (<WHITESPACE>)+ ("character" | "char"))
(<WHITESPACE>)*
>
| < #XCHARSET2 :
("_latin" | "_unicode" | "_kanjisjis" | "_graphic" | "_kanji1")
(<WHITESPACE>)*
>
Run Code Online (Sandbox Code Playgroud)
如何为此定义韩国人物.我是解析的新手,所以我不确定要在charset中添加它.有人可以请帮助.我是否必须添加_korean或是否还有其他关键字?
我正在教自己在业余爱好项目中使用JavaCC,并且有一个简单的语法来编写解析器.解析器的一部分包括以下内容:
TOKEN : { < DIGIT : (["0"-"9"]) > }
TOKEN : { < INTEGER : (<DIGIT>)+ > }
TOKEN : { < INTEGER_PAIR : (<INTEGER>){2} > }
TOKEN : { < FLOAT : (<NEGATE>)? <INTEGER> | (<NEGATE>)? <INTEGER> "." <INTEGER> | (<NEGATE>)? <INTEGER> "." | (<NEGATE>)? "." <INTEGER> > }
TOKEN : { < FLOAT_PAIR : (<FLOAT>){2} > }
TOKEN : { < NUMBER_PAIR : <FLOAT_PAIR> | <INTEGER_PAIR> > }
TOKEN : { < NEGATE : "-" > } …Run Code Online (Sandbox Code Playgroud) 我试图想出一种使用JavaCC解析字符串的好方法,而不会错误地将它与另一个令牌匹配.这些字符串应该能够包含空格,字母和数字.
我的标识符和号码标记如下:
<IDENTIFIER: (["a"-"z", "A"-"Z"])+>
<NUMBER: (["0"-"9"])+>
Run Code Online (Sandbox Code Playgroud)
我当前的字符串标记是:
<STRING: "\"" (<IDENTIFIER> | <NUMBERS> | " ")+ "\"">
Run Code Online (Sandbox Code Playgroud)
理想情况下,我只想保存引号内的东西.我有一个单独的文件,我在其中实际保存变量和值.我应该删除那里的引号吗?
我最初在解析器文件中有一个方法,如下所示:
variable=<INDENTIFIER> <ASSIGN> <QUOTE> message=<IDENTIFIER> <QUOTE>
{File.saveVariable(variable.image, message.image);}
Run Code Online (Sandbox Code Playgroud)
但是,正如您可能猜到的那样,这不允许使用空格或数字.对于变量名等标识符,我只想允许使用字母.
所以,我想就如何捕获字符串文字得到一些建议.特别是,我想制作如下字符串:
" hello", "hello ", " hello " and "\nhello", "hello\n", "\nhello\n"
Run Code Online (Sandbox Code Playgroud)
在我的语法中有效.
我正在寻找一个解析器生成器,它接受 Javacc 语法文件 (.jj) 并用 Javascript(而不是 Java)生成解析器。这样的事情存在吗?或者,将 .jj 文件转换为 ANTLR(可以输出 Javascript)可以理解的文件有多困难?
遵循此示例,我已经在android studio中成功建立了一个非常基本的云项目。此外,我使用此gradle插件为项目添加了JavaCC支持。现在,我可以将* .jj文件放在javacc文件夹中,并使用android studio中的compileJavacc任务对其进行编译。我的build.gradle文件现在看起来像这样:
buildscript {
repositories {
mavenCentral()
}
dependencies {
classpath 'com.google.appengine:gradle-appengine-plugin:1.9.14'
classpath "ca.coglinc:javacc-gradle-plugin:2.0.4"
}
}
repositories {
mavenCentral();
}
apply plugin: 'java'
apply plugin: 'war'
apply plugin: 'appengine'
apply plugin: "ca.coglinc.javacc"
sourceCompatibility = JavaVersion.VERSION_1_7
targetCompatibility = JavaVersion.VERSION_1_7
dependencies {
appengineSdk 'com.google.appengine:appengine-java-sdk:1.9.14'
compile 'javax.servlet:servlet-api:2.5'
}
appengine {
downloadSdk = true
appcfg {
oauth2 = true
}
}
Run Code Online (Sandbox Code Playgroud)
作为gradle和android studio的初学者,我不确定如何继续以下操作:
我将如何以最优雅的方式解决这两件事?
谢谢!