ANTLR 簡介


《ANTLR 4權威指南》由機械工業出版社出版,有興趣的讀者推薦購買閱讀。

本專題大多內容來源於我讀《ANTLR 4權威指南》的隨手筆記以及個人實踐,僅供參考學習,請勿用於任何商業用途,后果自負,如涉及侵權或有錯誤之處,及時 聯系本人

官網: https://www.antlr.org/
文檔: ANTLR 4 Documentation
GitHub: https://github.com/antlr/antlr4
語法例子: https://github.com/antlr/grammars-v4

另外參考:

序文

ANTLR能夠解決別的工具無法解決的問題。

軟件改變了世界。數十年來,信息化的浪潮在全球顛覆着一個又一個的行業。然而,整個世界的信息化程度還遠未達到合理的高度,還有大量傳統行業的生產力可以被信息化所解放。在這種看似矛盾的情形背后存在着一條鴻溝:大量從事傳統行業的人員擁有在本行業中無與倫比的業務知識和經驗,卻苦於跟不上現代軟件發展的腳步。解決這個問題的根本方法就是DSL(Domain specific Language),讓傳統行業的人員能夠用嚴謹的方式與計算機對話。其實,本質上任何編程語言都是一種DSL,殊途同歸。

實現DSL的主要困難就在編譯器前端。幸運的是,ANTLR的出現使這個過程變得易如反掌。 ANTLR能夠根據用戶定義的語法文件自動生成詞法分析器語法分析器,並將輸入文本處理為(可視化的)語法分析樹

這一切都是自動進行的, 所需的僅僅是一份描述該語言的語法文件。

ANTLR自動生成的編譯器前端高效、准確,能夠將開發者從繁雜的編譯理論中解放岀來,集中精力處理自己的業務邏輯。 ANTLR4引入的自動語法分析樹創建與遍歷機制,極大地提高了語言識別程序的開發效率。

本專題適用於對語言識別程序的開發感興趣的工程師。不過,假如你現在沒有這樣的需求,仍然建議你閱讀,因為它能夠開拓你的眼界,加深對編程語言的理解。

應用

ANTLR被廣泛用於學術界、工業界:

  • twitter搜索用ANTLR做語法分析
  • Hadoop中的 Hive 是基於ANTLR
  • Netbeas IDEANTLR解析C++
  • HibernateANTLR處理HQL語言
  • Spark SQL 使用ANTLR4SQL語句解析成語法樹,進而生成邏輯計划LogicPlan
  • ......

個人可以用ANTLR創建使用工具,例如:

  • 配置文件讀取器
  • 遺留代碼轉換器
  • JSON 解析器
  • ......

ANTLR可根據語法自動創建語法分析器,大大降低了開發語言識別應用的難度。

一些企業內部可能也會使用到ANTLR,我上家公司內部就定義了一套對使用者相對友好的查詢語法,用ANTLR4解析這種自定義語法的查詢語句,然后再轉成Elasticsearch Query DSLOpenTSDB Query等,從而降低了使用其他中間件的復雜度,也更有利於軟件產品化。

為什么不花5天時間編程,來使你25年的生活自動化呢?

由於ANTLR能夠自動生成語法分析樹和樹的遍歷器,在ANTLR4中,你無須再編寫樹語法,取而代之的是一些廣為人知的設計模式,如訪問者模式(Visitor Pattern)等。

這意味着,掌握了ANTLR這個強大的武器,你就可以重回自己熟悉的Java領域來實現真正的語言類應用程序。

主要內容

《ANTLR 4權威指南》由四部分組成:

  • 第一部分介紹了ANTLR,提供了一些與語言相關的背景知識,並展示了ANTLR的一些簡單應用。在這一部分中,你會了解ANTLR的句法以及主要用途。

  • 第二部分是一部有關設計語法和使用語法來構建語言類應用程序的“百科全書”

  • 第三部分展示了自定義ANTLR生成的語法分析器的錯誤處理機制的方法。隨后,你會學到在語法中嵌入動作的方法——在某些場景下,這樣做比建立樹並遍歷之更簡單,也更有效率。此外,你還將學會使用語義判定(semantic predicate)來修改語法分析器的行為,以便解決一些充滿挑戰的識別難題,例如識別XMLPython中的上下文相關的換行符。

  • 第四部分是參考章節,詳細列出了ANTLR語法元語言的所有規則和ANTLR運行庫的用法。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM