Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/kotlin/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
JavaCC令牌中的反斜杠转义字符_Javacc - Fatal编程技术网

JavaCC令牌中的反斜杠转义字符

JavaCC令牌中的反斜杠转义字符,javacc,Javacc,我正在为这样的字符流编写解析器 Abc\(Def\)Gh(Ij;Kl);Mno(Pqr) 应该是这样的 Abc\(Def\)Gh LPAREN Ij 分号 吉隆坡 帕伦 分号 Mno LPAREN Pqr 帕伦 当前令牌定义为 TOKEN: { < WORDCHAR : (~[";", "(", ")"])+ > | <LPAREN: "("> | <RPAREN: ")"> | <SEMICOLON: ";"> }

我正在为这样的字符流编写解析器

Abc\(Def\)Gh(Ij;Kl);Mno(Pqr)

应该是这样的

  • Abc\(Def\)Gh
  • LPAREN
  • Ij
  • 分号
  • 吉隆坡
  • 帕伦
  • 分号
  • Mno
  • LPAREN
  • Pqr
  • 帕伦
  • 当前令牌定义为

    TOKEN:
    {
      < WORDCHAR : (~[";", "(", ")"])+ >
       |  <LPAREN: "(">
       |  <RPAREN: ")">
       |  <SEMICOLON: ";">
    }
    
    令牌:
    {
    
    |  
    |  
    |  
    }
    
    如何将WORDCHAR标记更改为包含反斜杠转义括号,但不包含不带前导反斜杠的括号?

    标记:
    
    TOKEN:
    {
      < WORDCHAR : (~[";", "(", ")"] | "\\(" | "\\)")+ >
       |  <LPAREN: "(">
       |  <RPAREN: ")">
       |  <SEMICOLON: ";">
    }
    
    { | | | }
    令牌:
    {
    
    |  
    |  
    |  
    }
    
    在WORDCHAR令牌定义中添加
    “\\(“\\”)”
    成功了。原始海报的问题没有问题。这个答案没有错。问题是“我应该如何更改WORDCHAR标记以包含反斜杠转义括号,而不是不带反斜杠的括号?”这个答案正好回答了这个问题。如果OP问他们的代码为什么不起作用,那就不同了;但很明显,为什么原作不起作用——它没有提到任何反斜杠。为了找出答案代码的工作原理,任何人都可以阅读文档。向WORDCHAR令牌定义中添加
    \\(“\\”\)“
    就可以解决问题。原始海报的问题没有问题。这个答案没有错。问题是“我应该如何更改WORDCHAR标记以包含反斜杠转义括号,而不是不带反斜杠的括号?”这个答案正好回答了这个问题。如果OP问他们的代码为什么不起作用,那就不同了;但很明显,为什么原作不起作用——它没有提到任何反斜杠。要了解答案代码的工作原理,任何人都可以阅读文档。