SKIP没有在线的开头工作

时间:2016-03-03 19:09:07

标签: javacc

有这个

|83.56| |as.63| |as.lk| |as45.34|

作为* .txt文件中的输入我需要跳过字符“|”在开头但也在行尾,导致输出应该是

<83.56> :only numbers <as.63> <as.lk> :only letters <as45.34> :numers/letters together

我得到了这个作为我的代码声明 whitout "|" at the beggining 并且没有任何结果出现,这是奇怪的原因,如果我把字符“|”通过这个way结果,它几乎是预期的一个,就是这个 <|83.56> :only numbers <|as.63> <|as.lk> :only letters <|as45.34> :numers/letters together 所以问题是“|”该行的结尾是跳过属性,但开头的那个没有

注意:我也在开头用numeros和letras_minusculas宣布了这种方式

TOKEN:{<Numeros:["0"-"9"]>}
TOKEN:{<Letras_minusculas:["a"-"z"]>}

1 个答案:

答案 0 :(得分:0)

JavaCC提供了一个跳过部分,其中跳过了不必要的字符。

请在下面找到示例跳过块。

SKIP : {
   "|"
}
TOKEN : {
<NUMERIC: ["0"-"9","."]+ >
<ALPHA : ["a"-"b","."]+ >
<ALPHA-NUM : ((NUMERIC>|<ALPHA>))+ >
}

样本输入:

|83.56| --> NUMERIC without "|"
|as.63| --> ALPHA-NUM without "|"
|as.lk| --> ALPHA without "|"
|as45.34| --> ALPHA-NUM without "|"

请注意,当已经开始任何可能的匹配时,跳过不会跳过字符。

例如:| 83 | 3.56 |

字符“83”将开始匹配NUMERICALPHA-NUM,因此无法跳过下一个字符。在我们的情况下导致错误,因为所有可能的匹配都不适应"|"符号。

如果我们更改了以下规则。

SKIP : {
   "|"
}
TOKEN : {
<NUMERIC: ["0"-"9","."]+ >
<ALPHA : ["a"-"b","."]+ >
<ALPHA-NUM : ((NUMERIC>|<ALPHA>|"|"))+ >
}

然后输入与ALPHA-NUM匹配,包括"|",即:83|3.56