mirror of
https://github.com/revanced/smali.git
synced 2025-05-01 23:24:38 +02:00
Refactor how PARAM_LIST is parsed
This commit is contained in:
parent
c5cf51ac69
commit
0f49330183
@ -129,8 +129,6 @@ tokens {
|
||||
OPEN_BRACE;
|
||||
OPEN_PAREN;
|
||||
PACKED_SWITCH_DIRECTIVE;
|
||||
PARAM_LIST_END;
|
||||
PARAM_LIST_START;
|
||||
PARAM_LIST_OR_ID_PRIMITIVE_TYPE;
|
||||
PARAMETER_DIRECTIVE;
|
||||
POSITIVE_INTEGER_LITERAL;
|
||||
@ -582,8 +580,7 @@ method_prototype
|
||||
-> ^(I_METHOD_PROTOTYPE[$start, "I_METHOD_PROTOTYPE"] ^(I_METHOD_RETURN_TYPE type_descriptor) param_list?);
|
||||
|
||||
param_list
|
||||
: PARAM_LIST_START nonvoid_type_descriptor* PARAM_LIST_END -> nonvoid_type_descriptor*
|
||||
| (PARAM_LIST_OR_ID_PRIMITIVE_TYPE -> PRIMITIVE_TYPE[$PARAM_LIST_OR_ID_PRIMITIVE_TYPE])+
|
||||
: (PARAM_LIST_OR_ID_PRIMITIVE_TYPE -> PRIMITIVE_TYPE[$PARAM_LIST_OR_ID_PRIMITIVE_TYPE])+
|
||||
| nonvoid_type_descriptor*;
|
||||
|
||||
array_descriptor
|
||||
|
@ -316,8 +316,8 @@ Type = {PrimitiveType} | {ClassDescriptor} | {ArrayPrefix} ({ClassDescriptor} |
|
||||
{PrimitiveType} { return newToken(PRIMITIVE_TYPE); }
|
||||
{ClassDescriptor} { return newToken(CLASS_DESCRIPTOR); }
|
||||
{ArrayPrefix} { return newToken(ARRAY_TYPE_PREFIX); }
|
||||
[^] { yypushback(1); yybegin(YYINITIAL); return newToken(PARAM_LIST_END); }
|
||||
<<EOF>> { yybegin(YYINITIAL); return newToken(PARAM_LIST_END); }
|
||||
[^] { yypushback(1); yybegin(YYINITIAL);}
|
||||
<<EOF>> { yybegin(YYINITIAL);}
|
||||
}
|
||||
|
||||
<STRING> {
|
||||
@ -638,9 +638,9 @@ Type = {PrimitiveType} | {ClassDescriptor} | {ArrayPrefix} ({ClassDescriptor} |
|
||||
}
|
||||
|
||||
{Type} {Type}+ {
|
||||
// go back and re-lex it as a PARAM_LIST
|
||||
yypushback(yylength());
|
||||
yybegin(PARAM_LIST);
|
||||
return newToken(PARAM_LIST_START);
|
||||
}
|
||||
|
||||
{SimpleName} { return newToken(SIMPLE_NAME); }
|
||||
|
@ -554,13 +554,11 @@ METHOD_DIRECTIVE(".method")
|
||||
ACCESS_SPEC("public")
|
||||
SIMPLE_NAME("setCallForwardingOption")
|
||||
OPEN_PAREN("(")
|
||||
PARAM_LIST_START("")
|
||||
PRIMITIVE_TYPE("I")
|
||||
PRIMITIVE_TYPE("I")
|
||||
CLASS_DESCRIPTOR("Ljava/lang/String;")
|
||||
PRIMITIVE_TYPE("I")
|
||||
CLASS_DESCRIPTOR("Landroid/os/Message;")
|
||||
PARAM_LIST_END("")
|
||||
CLOSE_PAREN(")")
|
||||
VOID_TYPE("V")
|
||||
REGISTERS_DIRECTIVE(".registers")
|
||||
@ -705,12 +703,10 @@ CLASS_DESCRIPTOR("Lcom/android/internal/telephony/gsm/GSMPhone$MyHandler;")
|
||||
ARROW("->")
|
||||
SIMPLE_NAME("obtainMessage")
|
||||
OPEN_PAREN("(")
|
||||
PARAM_LIST_START("")
|
||||
PRIMITIVE_TYPE("I")
|
||||
PRIMITIVE_TYPE("I")
|
||||
PRIMITIVE_TYPE("I")
|
||||
CLASS_DESCRIPTOR("Ljava/lang/Object;")
|
||||
PARAM_LIST_END("")
|
||||
CLOSE_PAREN(")")
|
||||
CLASS_DESCRIPTOR("Landroid/os/Message;")
|
||||
INSTRUCTION_FORMAT11x("move-result-object")
|
||||
@ -762,14 +758,12 @@ CLASS_DESCRIPTOR("Lcom/android/internal/telephony/CommandsInterface;")
|
||||
ARROW("->")
|
||||
SIMPLE_NAME("setCallForward")
|
||||
OPEN_PAREN("(")
|
||||
PARAM_LIST_START("")
|
||||
PRIMITIVE_TYPE("I")
|
||||
PRIMITIVE_TYPE("I")
|
||||
PRIMITIVE_TYPE("I")
|
||||
CLASS_DESCRIPTOR("Ljava/lang/String;")
|
||||
PRIMITIVE_TYPE("I")
|
||||
CLASS_DESCRIPTOR("Landroid/os/Message;")
|
||||
PARAM_LIST_END("")
|
||||
CLOSE_PAREN(")")
|
||||
VOID_TYPE("V")
|
||||
LINE_DIRECTIVE(".line")
|
||||
|
@ -53,42 +53,32 @@ PARAM_LIST_OR_ID_PRIMITIVE_TYPE("J")
|
||||
PARAM_LIST_OR_ID_PRIMITIVE_TYPE("F")
|
||||
PARAM_LIST_OR_ID_PRIMITIVE_TYPE("D")
|
||||
|
||||
PARAM_LIST_START("")
|
||||
PRIMITIVE_TYPE("I")
|
||||
CLASS_DESCRIPTOR("La;")
|
||||
ARRAY_TYPE_PREFIX("[")
|
||||
CLASS_DESCRIPTOR("La;")
|
||||
ARRAY_TYPE_PREFIX("[")
|
||||
PRIMITIVE_TYPE("I")
|
||||
PARAM_LIST_END("")
|
||||
|
||||
PARAM_LIST_START("")
|
||||
CLASS_DESCRIPTOR("Ljava/lang/String;")
|
||||
CLASS_DESCRIPTOR("Ljava/lang/String;")
|
||||
PARAM_LIST_END("")
|
||||
|
||||
PARAM_LIST_START("")
|
||||
ARRAY_TYPE_PREFIX("[")
|
||||
PRIMITIVE_TYPE("I")
|
||||
ARRAY_TYPE_PREFIX("[")
|
||||
PRIMITIVE_TYPE("I")
|
||||
ARRAY_TYPE_PREFIX("[")
|
||||
PRIMITIVE_TYPE("I")
|
||||
PARAM_LIST_END("")
|
||||
|
||||
PARAM_LIST_START("")
|
||||
ARRAY_TYPE_PREFIX("[")
|
||||
PRIMITIVE_TYPE("I")
|
||||
ARRAY_TYPE_PREFIX("[")
|
||||
PRIMITIVE_TYPE("Z")
|
||||
PARAM_LIST_END("")
|
||||
|
||||
PARAM_LIST_START("")
|
||||
ARRAY_TYPE_PREFIX("[")
|
||||
PRIMITIVE_TYPE("I")
|
||||
ARRAY_TYPE_PREFIX("[")
|
||||
CLASS_DESCRIPTOR("Ljava/lang/String;")
|
||||
PARAM_LIST_END("")
|
||||
|
||||
MEMBER_NAME("<init>")
|
||||
MEMBER_NAME("<clinit>")
|
||||
|
@ -477,8 +477,7 @@ colon
|
||||
}
|
||||
|
||||
param_list_inner
|
||||
: ((PARAM_LIST_START param* PARAM_LIST_END)
|
||||
| (param+));
|
||||
: param+;
|
||||
catch [RecognitionException re] {
|
||||
Marker errorMarker = mark();
|
||||
recover(input, re);
|
||||
@ -509,8 +508,7 @@ param_list_reference
|
||||
@init {
|
||||
Marker marker = mark();
|
||||
}
|
||||
: ((PARAM_LIST_START nonvoid_type_descriptor* PARAM_LIST_END)
|
||||
| (nonvoid_type_descriptor)*)
|
||||
: nonvoid_type_descriptor*
|
||||
{ marker.done(SmaliElementTypes.METHOD_REFERENCE_PARAM_LIST); };
|
||||
catch [RecognitionException re] {
|
||||
recover(input, re);
|
||||
|
@ -141,8 +141,6 @@ public class SmaliTokens {
|
||||
@SuppressWarnings({"UnusedDeclaration"}) public static IElementType OPEN_BRACE;
|
||||
@SuppressWarnings({"UnusedDeclaration"}) public static IElementType OPEN_PAREN;
|
||||
@SuppressWarnings({"UnusedDeclaration"}) public static IElementType PACKED_SWITCH_DIRECTIVE;
|
||||
@SuppressWarnings({"UnusedDeclaration"}) public static IElementType PARAM_LIST_END;
|
||||
@SuppressWarnings({"UnusedDeclaration"}) public static IElementType PARAM_LIST_START;
|
||||
@SuppressWarnings({"UnusedDeclaration"}) public static IElementType PARAM_LIST_OR_ID_PRIMITIVE_TYPE;
|
||||
@SuppressWarnings({"UnusedDeclaration"}) public static IElementType PARAMETER_DIRECTIVE;
|
||||
@SuppressWarnings({"UnusedDeclaration"}) public static IElementType POSITIVE_INTEGER_LITERAL;
|
||||
@ -261,9 +259,7 @@ public class SmaliTokens {
|
||||
tokenColors.put("OPEN_BRACE", SmaliHighlightingColors.BRACES);
|
||||
tokenColors.put("OPEN_PAREN", SmaliHighlightingColors.PARENS);
|
||||
tokenColors.put("PACKED_SWITCH_DIRECTIVE", SmaliHighlightingColors.DIRECTIVE);
|
||||
tokenColors.put("PARAM_LIST_END", SmaliHighlightingColors.TYPE);
|
||||
tokenColors.put("PARAM_LIST_OR_ID_PRIMITIVE_TYPE", SmaliHighlightingColors.TYPE);
|
||||
tokenColors.put("PARAM_LIST_START", SmaliHighlightingColors.TYPE);
|
||||
tokenColors.put("PARAMETER_DIRECTIVE", SmaliHighlightingColors.DIRECTIVE);
|
||||
tokenColors.put("POSITIVE_INTEGER_LITERAL", SmaliHighlightingColors.NUMBER);
|
||||
tokenColors.put("PRIMITIVE_TYPE", SmaliHighlightingColors.TYPE);
|
||||
|
@ -43,6 +43,8 @@ smali.FILE
|
||||
PsiWhiteSpace('\n')
|
||||
PsiElement(MEMBER_NAME)
|
||||
<empty list>
|
||||
PsiElement(METHOD_REFERENCE_PARAM_LIST)
|
||||
<empty list>
|
||||
PsiElement(END_METHOD_DIRECTIVE)('.end method')
|
||||
PsiWhiteSpace('\n\n')
|
||||
SmaliMethod(METHOD)
|
||||
@ -85,6 +87,8 @@ smali.FILE
|
||||
PsiWhiteSpace('\n')
|
||||
PsiElement(MEMBER_NAME)
|
||||
<empty list>
|
||||
PsiElement(METHOD_REFERENCE_PARAM_LIST)
|
||||
<empty list>
|
||||
PsiElement(END_METHOD_DIRECTIVE)('.end method')
|
||||
PsiWhiteSpace('\n\n')
|
||||
SmaliMethod(METHOD)
|
||||
|
Loading…
x
Reference in New Issue
Block a user