我有以下语法
return $(this).parent().attr('class');
要匹配以下脚本,
grammar Group;
script: statementList;
statementList: (statement NEWLINE+)*;
statement: titleStatement | groupStatement;
titleStatement
: 'hello_world' WS+ ':' WS+ IDENTIFIER;
groupStatement
:groupDefStatement
(messageFlowStatementList | groupStatement)
END
;
messageFlowStatementList: (messageFlowStatement NEWLINE+)*;
messageFlowStatement: processingStatement;
groupDefStatement : GROUP WS+ (NAME WS* EQ_SYMBOL WS* STRINGX WS* COMMA_SYMBOL WS*)?
PATH WS* EQ_SYMBOL WS* STRINGX WS*
(COMMA_SYMBOL WS* METHOD WS* EQ_SYMBOL WS* STRINGX WS*)? NEWLINE+;
processingStatement: PROCESS_MESSAGE LPAREN STRINGX COMMA_SYMBOL STRINGX RPAREN;
或
hello_world : abc
group name="group", path="hello", method="POST"
group name="group", path="hello", method="POST"
process_message("aaa","bbb")
end
group name="group", path="hello", method="POST"
process_message("aaa","bbb")
end
end
第二个按预期匹配,但第一个不匹配。
在第一个脚本中,第二个内部组在父组下不匹配。
相反,它与hello_world : abc
group name="group", path="hello", method="POST"
process_message("aaa","bbb")
end
this is the tree view with errors
我在这里缺少什么?
答案 0 :(得分:0)
第一组之后缺少'结束'。第二组是嵌套的,但根据规则groupStatement
,它们都需要结束。一个正确的输入,应该解析:
hello_world : abc
group name="group", path="hello", method="POST"
group name="group", path="hello", method="POST"
process_message("aaa","bbb")
end
end
group name="group", path="hello", method="POST"
process_message("aaa","bbb")
end
end
如果您希望原始输入正确,可以将groupStatement
规则更改为:
groupStatement
: groupDefStatement messageFlowStatementList END
| groupDefStatement groupStatement
;
然后它应该正确解析。