美好的一天。

我想为此使用词法分析器来实现该语言的语法突出显示。本质很简单,我们找到一个令牌,并用一组符号将其框起来以代表特定的颜色。但是事实是,语言标记是在BNF中描述的,而lex / flex可与正则表达式配合使用来编写标记。

问题本身是如何为BNF语法构建词法分析器?

最佳答案

BNF是语言定义的常用符号,但这并不意味着您需要做的只是将其提供给某个编译器生成器。编译器作者要做的第一件事是将语法转换为更适合他使用的扫描器和解析器的形式。

只需将您的词汇标记的BNF定义转换为正则表达式,就可以工作几个小时。或者,您可以为BNF编写一个有限的自动机。我曾经用这两种方式编写词法扫描器,强烈建议您坚持使用词法。

关于c++ - Lexer用于突出显示BNF语法指定的语法语言吗?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/48994988/

10-09 07:12