除了以下字符串外,与任何内容匹配的正则表达式是什么:
=>|

如果您熟悉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 ='|'
任何=“完成”

07-24 19:23
查看更多