smali では、2 つの整数を取り、1 つの整数を返すメソッドのシグネチャは次のように記述されます。
add(II)I
xtext を使用してこれを解析するために、次のことを試しました。
ID'('Type*')'Type
残念ながら、これは 2 つの間の空白でのみ機能しますI
。
ここで空白を主張しないようにルールを変更するにはどうすればよいですか?
私が見る限り、これはすでに最終規則を処理するレクサーに問題があるはずです。のような一連の文字が表示されるたびに、III
常にすぐに ID としてマークされます。- 位置に依存しません。:(
次のようなものを解析するには:
III(III)I
つまり、III
3 つの Integer を取り、別の Integer を返すという名前の関数の場合、レクサーが常に単一の文字のみを出力し、パーサー ルールを使用して再アセンブルするように強制する必要があるようです。
しかし、この場合、ID ルールを作成することができなくなりました...
大事なことを見落としていたようです。
I
注: (integer)、D
(double)、 (void)などのプリミティブ データ型の他に、および で始まる配列V
として記述されたクラス型もあります。Ljava/lang/String;
[
典型的な main メソッドは次のようになります.method public static main([Ljava/lang/String;)V
。