如何解决如何使用 Lark EBNF 拆分规则?
我正在编写解析 PlantUML 状态图的语法,但有以下疑问:
我有:
transition: STATE arrow STATE (":" event? guard? action?)? "\n"
arrow: ("->" | "-->" | "-left->" | "-right->" | "-up->" | "-down->")
但不得不改为:
transition: STATE ("->" | "-->" | "-left->" | "-right->" | "-up->" | "-down->") STATE (":" event? GUARD? action?)? "\n"
因为,对于我的应用程序,我不需要也不关心使用哪种类型的箭头;知道有一个箭头来形成过渡就足够了。
问题是:有没有办法在解析树中不出现箭头类型的情况下将transition
规则拆分为其他更易于管理的规则?
完整文件位于 https://github.com/thomedes/PlantUML-Lark-EBNF。随意评论/批评。想在这里学习?
解决方法
经过RTFM,我发现名字以下划线开头的终端没有输出到树中,所以我把它改成了:
transition: STATE _ARROW STATE (":" event? GUARD? ACTION?)? "\n"
_ARROW: "->" | "-->" | "-left->" | "-right->" | "-up->" | "-down->"
现在一切正常。
不将此标记为已接受的答案,因为我相信有更多经验的人可以给出更好的答案。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。