日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

antlr idea 入门_ANTLR:入门

發(fā)布時間:2023/12/3 编程问答 26 豆豆
生活随笔 收集整理的這篇文章主要介紹了 antlr idea 入门_ANTLR:入门 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

antlr idea 入門

這篇文章使您了解ANTLR的基礎知識。 以前,我們已經(jīng)了解了如何將ANTLR設置為外部工具。 在這里: ANTLR外部工具
:)
所以,我們開始…。

什么是ANTLR?

?另一個語言識別工具,是一種語言工具,它提供了一個框架,用于從包含動作的語法描述中構造識別器,解釋器,編譯器和翻譯器。

目標語言是什么?

?動作腳本,Ada
? C
? C#; C#2 ?C#3 ?D ?Emacs ELisp ?目標C ?Java ?Java腳本 ?Python ?Ruby ?Perl6 ?Perl ?PHP ?奧伯龍 ?斯卡拉 ?ANTLR支持什么?

?樹木建造
?錯誤恢復
?錯誤處理 ?樹木漫步 ?翻譯 ?它支持什么環(huán)境?

ANTLRWorks是ANTLR的IDE。 它是圖形語法編輯器和調(diào)試器,由Jean Bovet使用Swing編寫。

可以使用ANTLR嗎?

?““ REAL””編程語言
?特定領域的語言[DSL] ?
誰在使用ANTLR?

?編程語言:Boo,Groovy,Mantra,Nemerle,XRuby等。
?其他工具:HIbernate,Intellij IDEA,Jazillian,JBoss Rules,Keynote(Apple),WebLogic(Oracle)等。
?
您在哪里可以找到ANTLR?

您可以隨時在這里關注http://www.antlr.org
?下載免費和開放源代碼的ANTLR和ANTLRWorks
?文檔,文章,Wiki,郵件列表,示例…。 您可以在這里找到所有東西!

劃船...。
?

  • 基本條款

? Lexer :將字符流轉換為令牌流。
? 解析器 :令牌過程,可能會創(chuàng)建AST
? 抽象語法樹(AST) :解析的輸入的中間樹表示,比令牌流更易于處理。 它也可以多次處理。 ? 樹解析器 :它處理AST ? 字符串模板 :一個庫,支持使用帶有占位符的模板來輸出文本

  • 一般步驟

?在一個或多個文件中編寫語法
?編寫字符串模板[可選]?使用ANTLRWorks調(diào)試語法
?從語法生成類 ?編寫使用生成的類的應用程序 ?提交符合語法的應用程序文本
再遠一點...。

讓我們寫一個簡單的語法,其中包括
?Lexer
?解析器 Lexer:將輸入流分成令牌 讓我們以“ int a,b;”形式的C中的簡單聲明類型為例。 或“ int a;” 和浮動。 如我們所見,我們可以編寫lexer如下:

//TestLexer.g
語法TestLexer;
ID:('a'..'z'|'A'..'Z'|'_')('a'..'z'|'A'..'Z'|'0'..' 9'|'_'|'。'|'a'..'z'|'A'..'Z')*; COMMA:','; 分號:';'; 數(shù)據(jù)類型:“ int” | '浮動';
如我們所見,這些是要轉換為令牌的字符。 因此,現(xiàn)在讓我們編寫一些規(guī)則來處理生成的這些令牌,并可能相應地創(chuàng)建一個解析樹。

//TestParser.g
語法TestParser;
選項{語言:Java;} decl:DATATYPE ID(','ID)*;

在語法上運行ANTLR只會生成詞法分析器和解析器,TestParser和TestLexer。 為了在某??些輸入上實際嘗試語法,我們
需要使用main()方法的測試裝置,如下所示:
// Test.java

import org.antlr.runtime.*; public class Test {public static void main(String[] args) throws Exception {// Create an input character stream from standard in ANTLRFileStream input = new ANTLRFileStream("input"); // give path to the file input // Create an ExprLexer that feeds from that stream TestLexer lexer = new TestLexer(input); // Create a stream of tokens fed by the lexer CommonTokenStream tokens = new CommonTokenStream(lexer); // Create a parser that feeds off the token stream TestParser parser = new TestParser(tokens); // Begin parsing at rule decl parser.decl(); }}

在下一篇博客文章中,我們將看到如何創(chuàng)建AST并在樹上走動。
祝您學習愉快! :)

參考: ANTLR入門: JCG合作伙伴 Swathi V的基礎知識 , 網(wǎng)址為* Techie(S)pArK *博客。


翻譯自: https://www.javacodegeeks.com/2012/06/antlr-getting-started.html

antlr idea 入門

總結

以上是生活随笔為你收集整理的antlr idea 入门_ANTLR:入门的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。