0
我是javacc新手。我試圖定義一個可以匹配任何字符串的令牌。我遵循正在工作的正則表達式語法<ANY: (~[])+>
。我想實現的東西很簡單,定義出具有表達以下BNF:定義令牌以匹配任何字符串
<exp> ::= "path(" <string> "," <number> ")"
我目前的.jj文件如下,我如何能解析字符串任何幫助:
options
{
}
PARSER_BEGIN(SimpleAdd)
package SimpleAddTest;
public class SimpleAdd
{
}
PARSER_END(SimpleAdd)
SKIP :
{
" "
| "\r"
| "\t"
| "\n"
}
TOKEN:
{
< NUMBER: (["0"-"9"])+ > |
<PATH: "path"> |
<RPAR: "("> |
<LPAR: ")"> |
<QUOTE: "'"> |
<COMMA: ","> |
<ANY: (~[])+>
}
int expr():
{
String leftValue ;
int rightValue ;
}
{
<PATH> <RPAR> <QUOTE> leftValue = str() <QUOTE> <COMMA> rightValue = num() <LPAR>
{ return 0; }
}
String str():
{
Token t;
}
{
t = <ANY> { return t.toString(); }
}
int num():
{
Token t;
}
{
t = <NUMBER> { return Integer.parseInt(t.toString()); }
}
的錯誤我上述的JavaCC文件得到的是:
Exception in thread "main" SimpleAddTest.ParseException: Encountered " <ANY> "path(\'5\',1) "" at line 1, column 1.
Was expecting:
"path" ...
是的,就是這樣,感謝您的幫助更換令牌的定義,實際上是什麼呢t.image中的回報? – Noor
這是匹配字符的字符串。 –