iT邦幫忙

鐵人檔案

2018 iT 邦幫忙鐵人賽
回列表
Software Development

做一個JVM語言 系列

透過ANTLR 編語法,及自動產生相對應的程式碼,
透過ASM 工具庫輔助產生JVM上的目的語言。

參賽天數 12 天 | 共 12 篇文章 | 8 人訂閱 訂閱系列文 RSS系列文
DAY 1

緣起:受了詛咒似的愛創作新語言,愛學新語言的程式設計師天性

創世紀11章, 那時,天下人的口音、言語都是一樣。...他們說:「來吧!我們要建造一座城和一座塔,塔頂通天,為要傳揚我們的名,免得我們分散在全地上。」...耶...

2017-12-18 ‧ 由 timloo 分享
DAY 2

參考資料:一本書及一系列的文章

編寫程式語言最經典的參考書,當然是最有名的恐龍書,幾十年來,書愈編愈厚,基本上是不要讓人在當學生時可以練習完的厚度,而且滿布了編譯器的專有名詞。而本文所要參考的...

2017-12-19 ‧ 由 timloo 分享
DAY 3

Antlr 環境設定

Antlr 的文件,只有設定寫的最詳細,再來的使用就很少範例,從出書的2012年到現在,網上可Google到的sample code依然不多, 而且Antlr被...

2017-12-20 ‧ 由 timloo 分享
DAY 4

Antlr:文法檔(.g4)練習之一,四則運算式的工程用計算機

例子: 193 a = 5 b = 6 a+b*2 (1+2)*3 這是換行即是一列運算式的例子。上面5列,都是合文法的句子。 基本上,程式的數字計算功能是很...

2017-12-21 ‧ 由 timloo 分享
DAY 5

Antlr:文法檔(.g4)練習之二,工程用計算機把值算出來

前面的文章裏,我們已經知道Antlr可以解析簡單的程式碼,並生成文法樹。它的流程是LEXER 與PARSER,LEXER把TOKEN一段一段切出來,而與PARS...

2017-12-22 ‧ 由 timloo 分享
DAY 6

Antlr:Listener監聽者模式

昨天講到Antlr尋訪(Visit)模式。這個功能在實務上比較少用到,尤其是在做工具時。不管是Listener監聽者模式或是尋訪(Visit)模式,基本上Ant...

2017-12-23 ‧ 由 timloo 分享
DAY 7

Antlr練習,解析CSV檔

CSV是Comma-Separated Values ,依逗點分隔的值。測試的樣本,要有一些代表性,如: Details,Month,Amount Mid Bo...

2017-12-24 ‧ 由 timloo 分享
DAY 8

Antlr練習,轉換JSON到XML

XML及其相關的應用,曾經是很多人的回憶(痛?),最近還被SOAP資料交換(XML)整到,尤其是WSDL有些很舊的版本,沒辦法自動產生JAVA代碼。 因為XML...

2017-12-25 ‧ 由 timloo 分享
DAY 9

Antlr練習,生成函數呼叫圖(Call Graph)

基本上是把程式呼叫的路線,用Graphviz畫成圖,而Graphviz基本上也是一種DSL語言,為了特定領域所創作的語言。 所以本需求,基本上還是把Cymbol...

2017-12-26 ‧ 由 timloo 分享
DAY 10

Antlr練習,程式符號的有效性檢查

實做一個程語言時,我們必須做符號(symbols或identifiers)被恰當的使用。用Antlr做一個檢驗器(validator), 檢查一下事項: 變數...

2017-12-27 ‧ 由 timloo 分享