对于一个学校项目,我需要解析一个包含简化的“假”编程语言的文本/源文件来构建一个AST。我看过boost::spirit,但是因为这是一个小组项目,而且大多数人似乎不愿意学习额外的库,而且讲师/助教建议倾向于在 C++ 上创建一个简单的库。我想过走那条路。有没有一些例子或关于如何开始的想法?我有一些尝试,但还没有真正成功......
逐行解析
- 用一堆正则表达式测试每一行(1个用于过程/函数声明),一个用于赋值,一个用于while等...... 
- 但我需要假设一行中没有多个语句:例如。a=b;x=1;
 
- 但我需要假设一行中没有多个语句:例如。
- 当我到达容器语句、程序、while 等时,我将增加indent. 所以所有嵌套语句都将在此之下
- 当我达到 a}我会减少缩进
有更好的想法或建议吗?我需要解析的示例代码(这里非常简化......)
procedure Hello {
    a = 1;
    while a {
        b = a + 1 + z; 
    }
}
另一个想法是将整个文件读入一个字符串,然后自上而下。匹配所有过程,然后捕获其中的所有内容,{ ... }然后开始匹配语句(以 结尾;)或容器while { ... }。这类似于 PEG 做事的方式?但我需要阅读整个文件