我需要打印 javacc 匹配的令牌,但我不知道如何“存储它”。假设我的令牌定义是:
TOKEN :
{
< BLAH: ["0"-"9"]>
}
Run Code Online (Sandbox Code Playgroud)
我的 parser.input() 函数是:
void Input():
{}
{ (<BLAH> { System.out.println("I recognize BLAH"); } )
}
Run Code Online (Sandbox Code Playgroud)
然而,给定一些输入(假设为 5),我真正想要输出的是:
I recognize that BLAH is 5.
Run Code Online (Sandbox Code Playgroud)
有小费吗?谢谢
匹配任何内容的正则表达式是什么,除了这些字符串:
=>, |?
如果您熟悉 javacc,我正在尝试定义我的ANYTHING令牌,如下所示:
TOKEN :
{
<ARROW: "=>" >
|
<ANYTHING: (["\u0001" - "\uffdc"])+>
|
<PIPE: "|">
|
<UPPER_CHAR: (["A"-"Z"])>
}
Run Code Online (Sandbox Code Playgroud)
谢谢
我知道如何使用SKIP声明跳过这些注释,但我需要做的就是获取C源并输出相同的源而不带注释.
所以我声明了一个令牌<GENERIC_TEXT:(〜[])+>,它被复制到输出中,并且不会跳过注释.我怀疑这个令牌为自己获取所有输入.
有谁可以帮助我吗?
谢谢
在我的语法中,有表达式和片段的生成规则,最初包含间接左递归.这是我从它们中删除递归后的规则.
String expression() #Expression : {String number; Token t;}
{
number = fragment()
(
(t = <Mult_Sign> number = fragment())
)
{return number;}
}
String fragment() #void : {String t;}
{
t = identifier() {return t;}
| t = number() {return t;}
| (<PLUS> | <MINUS> ) fragment()
| <LBR> expression() <RBR>
}
Run Code Online (Sandbox Code Playgroud)
尝试解析语法中的条件时使用这些生产规则.但是,生产规则的顺序要么具有它,所以只接受表达式.然而它应该接受像while(x <= 10)这样的东西.如果我有相反顺序的生产规则,如最初在语法中所述.当我尝试使用javac编译java文件时.我收到一个错误,告诉我identifier()是一个无法访问的语句.这是条件生成规则:
void condition() #void : {Token t;}
{
<NOT> expression()
| expression (<EQUALS>|<NOTEQUALS>|<LT>|<GT>|<LTE>|<GTE>|<AND>|<OR>) expression()
| identifier()
}
Run Code Online (Sandbox Code Playgroud)
如果有人能帮助告诉我为什么会出现这个问题,那将非常有帮助.
你们知道JRuby和Jython使用什么解析器来生成JVM字节码吗?是ANTLR还是JavaCC,还是在实现中使用其他解析器?
我是第一次使用javacc.
我一直收到这个错误:
Warning: Choice conflict in (...)* construct at line 35, column 43.
Expansion nested within construct and expansion following construct
have common prefixes, one of which is: <SPACE>
Consider using a lookahead of 2 or more for nested expansion.
Run Code Online (Sandbox Code Playgroud)
我已经调查了这一点,发现它是由于解析器不知道哪个是最合适的选择.
void l_zero() : {} {
TOKEN1 ( TOKEN2 TOKEN1)*
}
Run Code Online (Sandbox Code Playgroud)
这个错误就(在这一行之前产生,任何人都可以帮我理解这一点吗?
我尝试编译一个java程序,但在代码的导入部分失败:
import java.net.*;
import java.io.*;
import java.util.*;
import java.text.*;
import java.awt.*;
//import java.awt.image.*;
import java.awt.event.*;
//import java.awt.image.renderable.*;
import javax.swing.*;
import javax.swing.border.*;
//import javax.swing.border.EtchedBorder;
//import javax.media.jai.*;
//import javax.media.jai.operator.*;
//import com.sun.media.jai.codec.*;
//import java.lang.reflect.*;
Run Code Online (Sandbox Code Playgroud)
我该如何解决linux debian机器中的问题?谢谢
Java Compiler Compiler Version 4.1d1 (Parser Generator)
(type "javacc" with no arguments for help)
Reading from file SAVE.JSigpac.java . . .
org.javacc.parser.ParseException: Encountered " "import" "import "" at line 443, column 1. Was expecting: "PARSER_BEGIN" ...
Detected 1 errors and 0 warnings.
Run Code Online (Sandbox Code Playgroud) 我使用此链接作为指南将JavaCC下载到我的eclipse Luna中 - http://homepages.gac.edu/~hvidsten/courses/MC270/Labs/project4-GacApplication/project-files/JavaCC/JavaCC-Eclipse.html
我读过版本6有问题,但我认为这是版本5.我还添加了javaCC jar文件夹作为参考库
但是,当我尝试通过单击使用javacc编译来编译我的.jj代码时,它不起作用并给出错误 - 无法找到或加载主类javacc
我已经尝试将我的javacc中的bin文件夹添加到我的途径中,但我没有运气
在此先感谢您的帮助!
我在我的应用程序中使用Javacc解析器生成器,并希望对我的语法进行一些单元测试.
我想知道是否有任何javacc的单元测试框架,比如gUnit用于ANTLR.如果没有,那么测试这种语法的最佳方法是什么?