我需要使用javaCC从错误中识别正确的语法。
< #horario : "<"<hora>":"<minuto>"-"<hora>":"<minuto>">"<retorno> >
< #horarioError : "<" ("()"|"(" (~["<", ">"])+")")? ">"<retorno> >
第一个是正确的语法,第二个是识别tge错误。
错误定义可以包含正确的语法,但至少有一次错误。
这是我的想法,但它将正确的分类为错误:
< error : (<diaSemana>(<horarioError>|<horario>)<retorno>)+<delimitador> >
如何在任何一行中至少出现一次horarioError?
感谢。
答案 0 :(得分:1)
首先,我认为你试图在词汇层面做太多。我建议除了最低级别的标记之外,使用解析(BNF)规则。
要回答这个问题,您可以执行以下操作:
< error : ( <diaSemana>
<horario><retorno>
)*
( <diaSemana>
<horarioError><retorno>
)
( <diaSemana>
(<horarioError>|<horario>)<retorno>
)*
<delimitador>
>