用于突出显示 BNF 语法指定的语法语言的词法分析器?

Lexer for highlighting syntax language specified by the BNF grammar?

美好的一天。

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

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

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

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