compiler-construction - 在哪里可以获得学习EBNF的 Material ?

标签 compiler-construction boost parsing bnf ebnf

扩展Backus–Naur形式: EBNF

我是解析概念的新手。在哪里可以足够容易地阅读和遵循有关为boost::spirit库编写语法的 Material ,该库使用类似于EBNF的语法?

目前,我正在研究Wikipedia中的EBNF

最佳答案

维基百科的文章是准确的。如果您有权访问,请绝对在EBNF上阅读Wirth's original article

要知道的另一件事是,EBNF旨在使易于手写递归下降解析器,而对于每种语法构造在开始时都具有识别关键字的语言。花括号转换为while循环;方括号(可选的东西)转换为if,替代项转换为if-then-elsecase语句。如果您可以通过这种方式来设计语言,那么您可以快速关闭解析器并给出良好的错误消息。

唯一令人厌烦的地方是当您使用一种语言时,其中的中缀运算符具有许多不同的优先级。为此,您需要戴夫·汉森(Dave Hanson)的论文Compact Recursive-Descent Parsing of Expressions。也许普林斯顿大学的技术报告系列有免费版本,您可以随时查看Hanson's C front end中的代码。

关于compiler-construction - 在哪里可以获得学习EBNF的 Material ?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/365012/

相关文章:

compiler-construction - flex和bison二人组的替代品?

c++ - 如何在其他线程中运行 io_service?

javascript - 如何将 XML 反序列化为 JavaScript/TypeScript?

c++ - Gnu 编译器限制是否适用于 C 语言

linux - 使用 Linux 使用我的自定义库 (.h) 编译我的 C 程序

c - Intel 64 ISA 中类型转换的说明是什么

c++ - 链接到 boost_thread 的问题

boost图库内存消耗大图

parsing - 在 proc 宏派生上将属性转换为标识符

perl - 将 Perl 中的哈希解析为 CSV 格式