除了以下字符串外,与任何内容匹配的正则表达式是什么:
=>
,|
?
如果您熟悉javacc,我将尝试定义我的ANYTHING
令牌,如下所示:
TOKEN :
{
<ARROW: "=>" >
|
<ANYTHING: (["\u0001" - "\uffdc"])+>
|
<PIPE: "|">
|
<UPPER_CHAR: (["A"-"Z"])>
}
谢谢
最佳答案
尝试这样的事情:
测试
options {
STATIC = false ;
}
PARSER_BEGIN(Test)
public class Test {
public static void main(String[] args) throws Exception {
Test parser = new Test(new java.io.StringReader("foo=>bar=baz|done"));
parser.Parse();
}
}
PARSER_END(Test)
TOKEN :
{
< ARROW : "=>" >
| < PIPE : "|" >
| < ANYTHING : (~["=", "|"] | "=" ~[">"])+ >
}
void Parse() :
{}
{
(Any())* <EOF>
}
void Any() :
{Token t;}
{
( t=<ARROW> {System.out.println("ARROW = '" + t.image + "'");}
| t=<PIPE> {System.out.println("PIPE = '" + t.image + "'");}
| t=<ANYTHING> {System.out.println("ANYTHING = '" + t.image + "'");}
)
}
生成解析器类:
javacc Test.jj
并运行
main
方法:Java测试
将为输入
"foo=>bar=baz|done"
打印以下内容:任何='foo'
箭头='=>'
任何='bar = baz'
PIPE ='|'
任何=“完成”