有这个
|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"]>}
答案 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”将开始匹配NUMERIC
和ALPHA-NUM
,因此无法跳过下一个字符。在我们的情况下导致错误,因为所有可能的匹配都不适应"|"
符号。
如果我们更改了以下规则。
SKIP : {
"|"
}
TOKEN : {
<NUMERIC: ["0"-"9","."]+ >
<ALPHA : ["a"-"b","."]+ >
<ALPHA-NUM : ((NUMERIC>|<ALPHA>|"|"))+ >
}
然后输入与ALPHA-NUM
匹配,包括"|"
,即:83|3.56