標籤:

(截止2014.8.21)windows平台上完成一個編譯器(詞法、語法分析),想使用C++11開發,有啥好的技術推薦嗎?

之前使用的是parser generator 2,裡面集成了lex和yacc不過版本太老已經好幾年沒有更新了,裡面的庫文件已經和vs2013不兼容,想要找到一個理想的替代技術。

PS:我在實現一個新邏輯語言的推理機。


謝謝邀請,我覺得還是直接就用C++11實現了吧,不用找其它類似FLEX和YACC之類的工具了,這確實也不大難(除非你要實現的語言很複雜),我博客講過詞法分析以及其實現代碼(也是C++11),不過還沒有講到語法分析,你可以參考一下實現的思路。也順便推薦一本書供你參考吧:Engineering a Compiler, Second Edition (豆瓣)


Monadic Parser Combinators using C# 3.0

看看這個,高效手擼語法分析不是夢


個人推薦使用LLVM,而LLVM的clang的目錄結構 Include,lib目錄有相應的代碼實現語法解析,因為Clang本就是一個編譯器前端,Overview — LLVM 3.6 documentation可以查看相應文檔

IBM Create a working compiler with the LLVM framework, Part 1

使用 LLVM 框架創建有效的編譯器,第 2 部分

Kaleidoscope:用LLVM開發新語言 第二章 實現語法分析器和AST

事實上LLVM無論在前端語法解析還是後端目標文件生成都下了十足的功夫,

LLVM擁有LLVM工具鏈 Clang C/C++ Objc Objc++編譯器,LLDB調試器,lld連接器,目前以上Linux都能使用,Windows上LLDB沒有完全實現。LLVM clang AST(svn) llvm-project

swift 目測是基於LLVM實現的,Android ART基於LLVM實現。


詞法分析可以用 ragel 代替 lex,語法分析用 lemon 代替 yacc 或 bison,這兩者生成的代碼都簡潔乾淨、效率高、且支持重入和 push 模式


看別人博客知道這麼個網站,http://goldparser.org/ GOLD 能給人一點直觀上的認識.


Flex+Bison


antlr 挺好 不過好像沒有c++版的吧


垃圾知乎, 不玩了


推薦閱讀:

這是OS X下g++的bug嗎?
遞歸下降的語法分析程序如何進行錯誤恢復?
模板編程如何引入類型是否存在條件???
能否通過對編譯器或者編譯環境的限制來應對木馬或者病毒呢?
如何構造上下文無關文法?

TAG:編譯器 | C11 |