C++
文章平均质量分 66
jjp
热爱技术,热爱生活
展开
-
boost之spirit学习-mini_c(4)
今天看看error_handler.hpp,先把这些周边的东西搞清楚。 /////////////////////////////////////////////////////////////////////////////// // The error handler ///////////////////////////////////////////////原创 2012-03-28 00:21:34 · 585 阅读 · 0 评论 -
C++0x右值、move、forward、引用退化
昨天又学习了下右值、move和forward。记录一下学习到的东西:1、引用退化左值引用有传染性。左值引用的右值引用或右值引用的左值引用结果都是左值引用,即:string& &&和string&& &都等于string&string & & 等于string &string && &&等于string &&2、左值和右值是表达式的属性即存在这个情况:某个变量的类型是右值原创 2012-03-29 19:44:43 · 1183 阅读 · 0 评论 -
boost之spirit学习-mini_c(5)
继续看看周边的小东西,从易到难。今天是annotation.hppannotation.hpp里定义了一个类:annotation。顾名思义,它是给抽象语法树里的对象做标注的。标注什么呢?标注对象的位置。每个待标注的对象有一个id,这个id是一个iterator数组的下标。每次标注一个对象时,就把该对象的位置追加到iter数组的尾部,同时把该数据在数组中的下标作为id赋给该对象。具原创 2012-03-29 21:53:46 · 553 阅读 · 0 评论 -
boost之spirit学习
最近一段时间对boost比较着迷。看了一些boost代码后惊叹C++居然可以写成这样。C++强大的模板、运算符重载让C++拥有强大的灵活性,可以模仿很多其它语言的语法,在解决某个具体问题时可以用最舒服的语法来表达。但同时带来的问题是,每学一个库的使用,相当于要学一门新的小语言,门槛还是有点高的。但常用的基础库用熟了之后应该就问题不大了。不过要把boost用在团队开发里面还是有些麻烦原创 2012-03-22 19:48:16 · 1176 阅读 · 1 评论 -
boost之spirit学习-mini_c(1)
先看看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原创 2012-03-22 19:49:15 · 689 阅读 · 0 评论 -
boost之spirit学习-mini_c(2)
main.cpp就一个main函数,倒是直接明了main函数大概的流程:读代码文件使用spirit将代码解析成抽象语法树使用compiler把语法树编译成字节码从编译后的字节中找出main函数为main函数传入参数(通过虚拟栈传递)使用VM执行字节码输出main函数的返回值一点点把玩其代码:1. 读"代码文件":点击(此处原创 2012-03-22 19:50:06 · 704 阅读 · 0 评论 -
boost之spirit学习-mini_c(3)
前一章分析完了main.cpp,了解了mini_c的主流程。现在来看看抽象语法树的定义:ast.hpp首先,为一些对象打上id,方便编译错误时由对象的id查找到出错的位置(这个是由annotation记录的,后边会讲) struct tagged { int id; // Used to annotate the AST with the i原创 2012-03-23 00:55:21 · 1572 阅读 · 1 评论