發表文章

目前顯示的是 2006的文章

ANTLR 與 c#

ANTLR 是一個用來將剖析語法轉換成語言的工具,如果你接觸過 lex/yacc 的話,就可以很容易瞭解. 這裡有一篇相當簡單的 Introduction . Step by step, 就可以做出一個計算運算式的小程式. 可是,產生出來的程式語言卻是 java, 如果要改用 c# 呢?? 依照官方的說明, ANTLR 可以產出三種語言: C++, Java, c#. 所以該怎麼產生呢??需不需要另外寫甚麼?? 官方網站同樣也提供了這麼一篇: Notes for using the ANTLR C# Code Generator . 這裡我們以 Introduction 裡面所提供的範例來作為例子,將他命名為 "expr.g.txt": class ExprParser extends Parser; expr returns [int value=0] {int x;} : value=mexpr ( PLUS x=mexpr {value += x;} | MINUS x=mexpr {value -= x;} )* ; mexpr returns [int value=0] {int x;} : value=atom ( STAR x=atom {value *= x;} )* ; atom returns [int value=0] : i:INT {value=Integer.parseInt(i.getText());} | LPAREN value=expr RPAREN ; class ExprLexer extends Lexer; options { k=2; // needed for newline junk charVocabulary='\u0000'..'\u007F'; // allow ascii } LPAREN: '(' ; RPAREN: ')' ; PLUS : '+' ; MINUS : '-' ; STAR : '*' ; INT : ('