2017-07-30 3 views
-1

ANTLRを使用して、クローン検出と削除システム用のパーサーとレクサーを構築しました。 プライベート、パブリック、プロテクトされたキーワードを区別しないように文法を構築したいのは、同じものと見なしたいからですが、これを実行しようとすると正しく入力されません。Java用Antlr Grammerの変更点

linkからグラマーの.g4ファイルを取得しましたが、以下のようにいくつか修正しました。

PRIVATE  : 'public' || 'private' || 'protected'; 
RETURN  : 'return'; 
SHORT   : 'short'; 

ご迷惑をおかけしますようお願い申し上げます。

答えて

1

この:

PRIVATE  : 'public' || 'private' || 'protected'; 

が正しくありません。

PRIVATE 
: 'public' 
| 
| 'private' 
| 
| 'protected' 
; 

つまり、次のように書き換えられます。つまり、空の文字列に一致します。

おそらく、この書きたい:PRIVATE:ところで奇妙な名前の

PRIVATE : 'public' | 'private' | 'protected'; 

ビットを。

MODIFIER : 'public' | 'private' | 'protected'; 

またはパーサー規則を使用します:

modifier : PUBLIC | PRIVATE | PROTECTED; 

PUBLIC : 'public'; 
PRIVATE : 'private'; 
PROTECTED : 'protected'; 
私の代わりにこのような何かを期待したいです