boost之spirit学习-mini_c(1)

原创 2012年03月22日 19:49:15
先看看mini_c底下的文件:
main.cpp:主程序,没啥说的
function.hpp function_def.hpp function.cpp:定义解析函数的qi::grammer类
statement.hpp statement_def.hpp statement.cpp:定义解析语句的qi::grammer类
expression.hpp expression_def.hpp expression.cpp:定义解析表达式的qi::grammer类
skipper.hpp:定义解析空格与注释的qi::grammer类
ast.hpp:定义抽象语法树(Abstract Syntax Tree)相关的各种类
annotation.hpp: 用于把ast对象与代码位置关联起来,用于编译错误时提示出错位置
error_handler.hpp:处理解析错误,输出错误信息及位置
compiler.hpp:提供compiler类,把抽象语法树编译成字节码
vm.hpp vm.cpp:最简单的虚拟机,可以执行compiler编译出的字节码
 
 
function、statement、expression三个grammer类之所以搞三个文件,估计是为了加快编译速度。把模板类的实现部分放在xxx_def.hpp里,在xxx.cpp里include这个xxx_def.hpp,然后用

点击(此处)折叠或打开

  1. template struct client::parser::function<iterator_type>;
强制实例化。
 
再说一下例子里的命名空间:
client: annotation、error_handler、vmmachine在这里
client::parser:function、statement、expression、skipper四个grammer类在这
client::ast:各种抽象语法树类定义在这里
client::code_gen:function(不是grammer,是代表编译后的函数)、compiler
 
下一篇从main.cpp开始解剖

Kylix 安装错误解答

Kylix 安装错误解答Kylix是Borland推出的Delphi for Linux,界面已有网友贴出来了,但普通的安装方式不一定能够安装成功,尤其是Linux使用了2.4内核,可以说是肯定安装不...
  • woolgate
  • woolgate
  • 2001-09-28 10:35:00
  • 530

boost spirit ——编译器,语法解析器

使用spirit能很方便的解析自定义的语法规则,在他的文档中也说明了spirit与regex还有其他库的不同点。灵活,伸缩性好,可以用来搭建小的语法解析器也可以用来开发大型编译器等等。 boost:...
  • GW569453350game
  • GW569453350game
  • 2015-08-20 14:13:23
  • 3882

boost之词法解析器spirit

摘要:解析器就是编译原理中的语言的词法分析器。可以按照文法规则提取字符或者单词。 C++ 程序员需要面对的最复杂的任务之一就是在一段合理的时间期限内编写一个解析器。在为 SQL 或 C++ 这类...
  • crazyhacking
  • crazyhacking
  • 2014-07-09 18:11:50
  • 2834

boost之spirit学习

最近一段时间对boost比较着迷。看了一些boost代码后惊叹C++居然可以写成这样。 C++强大的模板、运算符重载让C++拥有强大的灵活性,可以模仿很多其它语言的语法,在解决某个具体问题时可以...
  • jjparch
  • jjparch
  • 2012-03-22 19:48:16
  • 584

boost开发指南

C++确实很复杂,神一样的0x不知道能否使C++变得纯粹和干爽?     boost很复杂,感觉某些地方有过度设计和太过于就事论事的嫌疑,对实际开发工作的考虑太过于理想化。学习boost本身就是...
  • muyuxuebao
  • muyuxuebao
  • 2016-07-20 21:13:59
  • 1514

boost开发指南

C++确实很复杂,神一样的0x不知道能否使C++变得纯粹和干爽?     boost很复杂,感觉某些地方有过度设计和太过于就事论事的嫌疑,对实际开发工作的考虑太过于理想化。学习boost本身就是...
  • muyuxuebao
  • muyuxuebao
  • 2016-07-20 21:13:59
  • 1514

BoostPro

在Windows下使用c++ boost库开发(YC)  作者: 发布时间:APRIL 22, 2012 分类:原创技术 http://loccs.sjtu.edu.cn/typech...
  • scut1135
  • scut1135
  • 2012-12-13 14:23:55
  • 2577

vs2012编译boost_1_54_0

在原文上进行了修改,我的环境是VS2012 ,在编译 注意事项:Boost 请慎用!微软太坑爹...且直接使用GitHub上的exe文件也可以,特定版本的只能自己编译了....汗!!! 原文地址:ht...
  • wishchin
  • wishchin
  • 2013-09-01 22:40:27
  • 1347

Boost ptree 解析 (spirit 库)多线程 崩溃

一直喜欢用boost,但是 ptree 解析在多线程下确实很容易崩溃。其实只需要添加一个宏,一直记不住,现在收藏一下。 原因:ptree解析使用的是语法解析器spirit库,默认非线程安全。 如果...
  • Alsmile
  • Alsmile
  • 2013-11-13 09:49:18
  • 2891

来自 Boost 的 Spirit 解析器框架入门

C++ 程序员需要面对的最复杂的任务之一就是在一段合理的时间期限内编写一个解析器。在为 SQL 或 C++ 这类成熟的语言开发编译器时,使用 GNU Flex/Bison 或 ANTLR 解析...
  • yacper
  • yacper
  • 2010-06-03 15:33:00
  • 1169
收藏助手
不良信息举报
您举报文章:boost之spirit学习-mini_c(1)
举报原因:
原因补充:

(最多只允许输入30个字)