javaCC 解析语法公式 求解
有这没个公式
A and B or (C and D)
用javacc 定义 并解析
PARSER_END(cmmJavaCC)
SKIP:{
" "
| "\t"
| "\n"
| "\r"
| <"//"(~["\n", "\r"])*("\n"
| "\r"
| "\r\n")>
| <"/*"(~["*"])*"*"(~["/"](~["*"])*"*")*"/">
}
TOKEN:/*定义关键字*/
{
<IF:"if">
| <ELSE:"else">
| <READ:"read">
| <WRITE:"write">
| <WHILE:"while">
| <INT:"int">
| <REAL:"real">
}
TOKEN:/* 定义整数 */
{
<INTEGER_LITERAL:["1"-"9"](<DIGIT>)*>
}
TOKEN:/* 定义实数 */
{
<REAL_LITERAL:(<DIGIT>)+
| (<DIGIT>)+"."
| (<DIGIT>)+"."(<DIGIT>)+
| "."(<DIGIT>)+>
}
TOKEN:/*定义数字*/
{
<#DIGIT:["0"-"9"]>
}
TOKEN:/*定义符号*/
{
<UNDERSCORE:"_">
| <COMMA:",">
| <SEMICOLON:";">
| <COLON:":">
| <LEFTPARENTHESES:"(">
| <RIGHTPARENTHESES:")">
| <EQUAL:"=">
| <PLUS:"+">
| <MINUS:"-">
| <TIMES:"*">
| <DIVIDE:"/">
}
TOKEN:/* 定义标识符 */
{
<IDENTIFIER:<LETTER>
| <LETTER>(<LETTER>
| <DIGIT>
| <UNDERSCORE>)*(<LETTER>
| <DIGIT>)+>
| <#LETTER:["a"-"z", "A"-"Z"]>
}
int Start():{}{
Procedure()"!"{
return 0;
}
| "!"{
return 1;
}
请问 我怎样才能解析出括号 是不是匹配正确
写了递归没成功。。。
void MatchedBraces() :
{}
{
"(" [ MatchedBraces() ] ")"
}