2
(TokenRewriteStreamを使用して):ANTLR rewritedコードソースを取得する方法は?私のようなものを翻訳する簡単なトランスレータを作成しようとしています
grammar test01;
options {
output=AST;
}
@members{
int N;
}
test
@init{
N = 0;
}:
id ('|' id)* -> id (BR id)*;
id : {N++;} ID -> {new CommonTree(new CommonToken(ID, Integer.toString(N) + " : " + $ID.text))};
ID : ('a'..'z')+;
BR : '\n';
WS : ' '{$channel=HIDDEN;};
翻訳元FooTest:
aaa | bbb | ccc
ここ
1 : aaa
2 : bbb
c : ccc
には、文法test01.gです。 java:
import org.antlr.runtime.*;
class FooTest {
public static void main(String[] args) throws Exception {
String text = "aaa | bbb | ccc";
System.out.println("parsing: "+text);
ANTLRStringStream in = new ANTLRStringStream(text);
test01Lexer lexer = new test01Lexer(in);
CommonTokenStream tokens = new TokenRewriteStream(lexer);
test01Parser parser = new test01Parser(tokens);
parser.test();
System.out.println("Result: "+tokens.toString());
}
}
私はそれを実行すると、私のような何かを得るためにexcpect:
parsing: aaa | bbb | ccc
Result:
1 : aaa
2 : bbb
3 : ccc
をしかし、私は得る:
parsing: aaa | bbb | ccc
Result: aaa | bbb | ccc
テキストが変更されていないようです。
ソースを変更するにはどうすればよいですか?