2012-08-30 7 views
6

私は、スペースインデントで非常に単純な文法を作りたいと思っています。各ラインは、Pythonのような1つの以上の単語が、くぼみ(4つのスペースまたはタブ一つインデントである)からなり、インデントには近いがない、例えば:ANTLR:スペースインデント?

if something cool occurs 
    do this 
else 
    otherwise do this 
    loop around something 
     each time doing this 
     and do that 
say good byte 

ではなく、各ラインの読み取り、インデントを計算するとツリーを手動で構築することは、ANTLR文法のすべてを行うことが可能ですか?ターゲット言語はJavaです。

+6

参照:http://stackoverflow.com/questions/8642154/antlr-what-is-simpliest-way-to-realize-python-like-indent-depending-grammar –

答えて

1

これも可能です。ルールを定義してスキップするだけです。ここで

あなたが行く:

Ignore : (' ' | '\t' | '\n' | '\r')+ {skip();}; 

それとも、\ nまたは\ rの

Ignore : (' ' | '\t')+ {skip();}; 

認識し、あなたのgramar、すべてのスペースとタブにこれを追加する必要がある場合は無視されます。