文章詳情頁(yè)
JAVA開(kāi)源編譯器小集
瀏覽:182日期:2024-06-13 09:02:28
內(nèi)容: 編譯原理是程序語(yǔ)言的基礎(chǔ)。也是人機(jī)交互的重要基石。一般說(shuō)來(lái)很少需要自己寫(xiě)晦澀的編譯器,java世界就有幾個(gè)不錯(cuò)的Parse Generator。首先要澄清的概念就是編譯器有基于LL(自頂向下)和LR(自底向上)兩種算法,據(jù)我的了解,總的說(shuō)來(lái),LR比LL的效率更高,且沒(méi)有左遞歸和二義性問(wèn)題,就是生成出來(lái)的程序簡(jiǎn)直是天書(shū),沒(méi)法懂。不過(guò)LL生成的代碼也好不到哪去,五十步笑百步。所以我更傾向與LR解析器。Lex和Yacc,一個(gè)是詞法分析器,一個(gè)是語(yǔ)法分析器(搞不懂為什么不干脆做到一起算了?),來(lái)自C++,現(xiàn)在好像有了JAVA版本。都是基于LR的。JavaCC和Antlr都是基于LL的,但ANTLR的語(yǔ)法文件更簡(jiǎn)潔易懂,生成AST樹(shù)時(shí)的控制也很多。此外,在ANTLR的語(yǔ)法文件中嵌入JAVA代碼非常方便。而JAVACC是LL(1)算法的,而ANTLR是LL(n,n>=1)算法的(我只知道N越大解析能力越強(qiáng))。 Java, java, J2SE, j2se, J2EE, j2ee, J2ME, j2me, ejb, ejb3, JBOSS, jboss, spring, hibernate, jdo, struts, webwork, ajax, AJAX, mysql, MySQL, Oracle, Weblogic, Websphere, scjp, scjd 編譯原理是程序語(yǔ)言的基礎(chǔ)。也是人機(jī)交互的重要基石。一般說(shuō)來(lái)很少需要自己寫(xiě)晦澀的編譯器,java世界就有幾個(gè)不錯(cuò)的Parse Generator。首先要澄清的概念就是編譯器有基于LL(自頂向下)和LR(自底向上)兩種算法,據(jù)我的了解,總的說(shuō)來(lái),LR比LL的效率?
標(biāo)簽:
Java
相關(guān)文章:
1. Docker 部署 Prometheus的安裝詳細(xì)教程2. idea 打包的jar運(yùn)行報(bào) "XXX中沒(méi)有主清單屬性"3. idea重置默認(rèn)配置的方法步驟4. 通過(guò)Django Admin+HttpRunner1.5.6實(shí)現(xiàn)簡(jiǎn)易接口測(cè)試平臺(tái)5. IntelliJ IDEA設(shè)置自動(dòng)提示功能快捷鍵的方法6. IntelliJ IDEA安裝插件的方法步驟7. idea打開(kāi)多個(gè)窗口的操作方法8. php過(guò)濾器使用詳解9. IntelliJ IDEA調(diào)整字體大小的方法10. idea設(shè)置代碼格式化的方法步驟
排行榜

網(wǎng)公網(wǎng)安備