【发布时间】:2017-10-16 17:20:27
【问题描述】:
我正在尝试根据this 教程为 IntelliJ Idea 添加对UnrealScript 语言(OOP,使用 C 样式语法)的支持。但是,我在语法和词法分析器生成方面遇到了一些困难。
具体来说,目的是什么:
我在 .bnf 文件中调整了经典的 C 语法,这样一旦我有了一个有效的 C 风格的语法,我就可以根据上述语言对其进行调整。 Here 是我迄今为止所做的。我从this 页面改编它,它大量使用了生成器不支持的左递归。因此,如何将例如以下规则转换为非递归规则?
logical-or-expression ::= logical-and-expression
| logical-or-expression '||' logical-and-expression
这个稍微复杂一点的呢?
direct-abstract-declarator ::= '(' abstract-declarator ')'
| {direct-abstract-declarator}? '[' {constant-expression}? ']'
| {direct-abstract-declarator}? '(' {parameter-type-list}? ')'
但除此之外,我觉得我要实现的目标非常缺乏理论,所以更一般地说,在 IntelliJ 平台中添加语言支持的理论先决条件是什么?到目前为止,我只熟悉一般的 bnf/ebnf 表示法。我需要读龙书吗?如果是,那我应该关注哪些章节(因为我不打算写编译器)?
【问题讨论】:
-
您好!您是否设法实施了美国的支持?如果是,你愿意分享你的实现吗?
标签: intellij-idea grammar intellij-plugin bnf