Andrew's Blog

Make things as simple as possible, but no simpler -- Albert Einstein

导航

12 2004 档案

摘要:介绍 Spirit是一个使用模板元编程技术实现的面向对象的递归下降解析器生成器框架。表达式模板允许我们完全使用C++来模拟扩展巴克斯范式(EBNF)的语法。 在Spirit框架中,我们仅仅使用C++就能编写目标文法。直接嵌入的EBNF文法说明可以自由地与其他C++代码混合的一起。由于C++模板的再生能力,这种文法说明是可以直接执行的。请回想一下,常规的编译器之编译器或解析器的生成器必须执行一个附加的翻译步骤,即将EBNF源代码转换为C或C++代码。 阅读全文

posted @ 2004-12-18 18:01 andrew 阅读(1157) 评论(0) 推荐(0)

摘要:序言 “符合大多数“优良”(易懂、灵活、高效)标准的设计实例包括递归下降解析器,它是传统的过程式代码。另一个实例是STL,它是一个容器和算法的泛型库,且在很大程度上依赖于传统的过程式代码和参数多态性。” -- Bjarne Stroustrup 历史 十五年前,我用Pascal语言写了我的第一个计算器程序。那是我最难忘的编码经历之一。令我感到惊奇的是,相互递归的函数集合竟能作为文法说明的模型。最终,我从求学经历中获得的技能变为了实践。我总要不时地做一些文法解析工作。例如,每当我需要做任何形式的(甚至是二进制形式的)I/O操作时,我总是设法用类Pascal的语法图写出文法,从而略显正式地处理该任务。这种方法十分奏效。 阅读全文

posted @ 2004-12-17 10:20 andrew 阅读(1777) 评论(1) 推荐(0)