Javaソースコード盗聴検出器のレクサーを書く必要があります。 ここに私が達成したいものがあります。"Class brackets"と "Method bracket"を区別するJFlex Lexer
//Java code Tokens:
public class Count { Begin Class
public static void main(String[] args) Var Def, Begin Method
throws java.io.IOException {
int count = 0; Var Def, Assign
while (System.in.read() != -1) Apply, Begin While
count++; Assign, End While
System.out.println(count+" chars."); Apply
} End Method
} End Class
私はJflexがレクサーを生成するための正しいツールだと思います。しかし、いくつかの例を見てから。クラス括弧とメソッド括弧を区別する方法が見つかりません。私が見つけたほとんどのトークナイザは、それらを同じトークンとして認識しています。また、メソッドの適用を変数識別子から区別するにはどうすればよいですか?
ご理解いただきありがとうございます。自分のやり方でコードを解析するための修飾子となる既存のサンプルコードまたはツールはありますか? –
@ Y.ZhaoさまざまなパーサーコンビネータのJava文法の例がありますが、JFlexと一緒に使うコンビネーションコンビネーションには現在のものを見つけることができませんでした。私は、JFlex + CupやJFlex + BYaccJや人気のある組み合わせはもう考えていません。あなたがJFlexと結婚していない場合は、Antlrの現在のJava文法を簡単に見つけることができます。 – sepp2k