mirror of
https://github.com/revanced/smali.git
synced 2025-05-16 06:07:05 +02:00
Update to latest antlr3/string template
This commit is contained in:
parent
6c15046f2b
commit
0dceb148f3
@ -69,8 +69,8 @@ subprojects {
|
||||
depends = [guava: 'com.google.guava:guava:14.0',
|
||||
findbugs: 'com.google.code.findbugs:jsr305:1.3.9',
|
||||
junit: 'junit:junit:4.6',
|
||||
antlr_runtime: 'org.antlr:antlr-runtime:3.2',
|
||||
antlr: 'org.antlr:antlr:3.2',
|
||||
antlr_runtime: 'org.antlr:antlr-runtime:3.5',
|
||||
antlr: 'org.antlr:antlr:3.5',
|
||||
commons_cli: 'commons-cli:commons-cli:1.2',
|
||||
jflex: 'de.jflex:jflex:1.4.3',
|
||||
proguard: 'net.sf.proguard:proguard-base:4.8'
|
||||
|
@ -33,7 +33,7 @@ dependencies {
|
||||
compile project(':util')
|
||||
compile 'com.google.code.findbugs:jsr305:1.3.9'
|
||||
compile 'com.google.guava:guava:13.0.1'
|
||||
compile 'org.antlr:stringtemplate:4.0.2'
|
||||
compile 'org.antlr:ST4:4.0.7'
|
||||
|
||||
testCompile 'junit:junit:4.6'
|
||||
}
|
@ -255,7 +255,7 @@ literal returns[EncodedValue encodedValue]
|
||||
| bool_literal { $encodedValue = ImmutableBooleanEncodedValue.forBoolean($bool_literal.value); }
|
||||
| NULL_LITERAL { $encodedValue = ImmutableNullEncodedValue.INSTANCE; }
|
||||
| type_descriptor { $encodedValue = new ImmutableTypeEncodedValue($type_descriptor.type); }
|
||||
| array_literal { $encodedValue = new ImmutableArrayEncodedValue($array_literal.values); }
|
||||
| array_literal { $encodedValue = new ImmutableArrayEncodedValue($array_literal.elements); }
|
||||
| subannotation { $encodedValue = new ImmutableAnnotationEncodedValue($subannotation.annotationType, $subannotation.elements); }
|
||||
| field_literal { $encodedValue = new ImmutableFieldEncodedValue($field_literal.value); }
|
||||
| method_literal { $encodedValue = new ImmutableMethodEncodedValue($method_literal.value); }
|
||||
@ -295,12 +295,12 @@ fixed_32bit_literal returns[int value]
|
||||
| char_literal { $value = $char_literal.value; }
|
||||
| bool_literal { $value = $bool_literal.value?1:0; };
|
||||
|
||||
array_elements returns[List<byte[\]> values]
|
||||
: {$values = new ArrayList<byte[]>();}
|
||||
array_elements returns[List<byte[\]> elements]
|
||||
: {$elements = Lists.newArrayList();}
|
||||
^(I_ARRAY_ELEMENTS
|
||||
(fixed_size_literal
|
||||
{
|
||||
$values.add($fixed_size_literal.value);
|
||||
$elements.add($fixed_size_literal.value);
|
||||
})*);
|
||||
|
||||
packed_switch_elements[int baseAddress, int firstKey] returns[List<SwitchElement> elements]
|
||||
@ -1221,7 +1221,7 @@ insn_array_data_directive[int totalMethodRegisters, int methodParameterRegisters
|
||||
// TODO: reimplement, after changing how it's parsed
|
||||
/*
|
||||
int elementWidth = $short_integral_literal.value;
|
||||
List<byte[]> byteValues = $array_elements.values;
|
||||
List<byte[]> byteValues = $array_elements.elements;
|
||||
|
||||
int length = 0;
|
||||
for (byte[] byteValue: byteValues) {
|
||||
@ -1345,13 +1345,9 @@ string_literal returns[String value]
|
||||
bool_literal returns[boolean value]
|
||||
: BOOL_LITERAL { $value = Boolean.parseBoolean($BOOL_LITERAL.text); };
|
||||
|
||||
array_literal returns[List<EncodedValue> values]
|
||||
: {ArrayList<EncodedValue> valuesList = new ArrayList<EncodedValue>();}
|
||||
^(I_ENCODED_ARRAY (literal {valuesList.add($literal.encodedValue);})*)
|
||||
{
|
||||
$values = valuesList;
|
||||
};
|
||||
|
||||
array_literal returns[List<EncodedValue> elements]
|
||||
: {$elements = Lists.newArrayList();}
|
||||
^(I_ENCODED_ARRAY (literal {$elements.add($literal.encodedValue);})*);
|
||||
|
||||
annotations returns[Set<Annotation> annotations]
|
||||
: {HashMap<String, Annotation> annotationMap = Maps.newHashMap();}
|
||||
|
@ -45,7 +45,7 @@ import static org.jf.smali.smaliParser.*;
|
||||
}
|
||||
catch (java.io.IOException e) {
|
||||
System.err.println("shouldn't happen: " + e.getMessage());
|
||||
return Token.EOF_TOKEN;
|
||||
return newToken(EOF);
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -30,15 +30,21 @@ import org.antlr.runtime.ANTLRInputStream;
|
||||
import org.antlr.runtime.CommonToken;
|
||||
import org.antlr.runtime.CommonTokenStream;
|
||||
import org.antlr.runtime.RecognitionException;
|
||||
import org.jf.smali.*;
|
||||
import static org.jf.smali.expectedTokensTestGrammarParser.ExpectedToken;
|
||||
import org.jf.smali.expectedTokensTestGrammarLexer;
|
||||
import org.jf.smali.expectedTokensTestGrammarParser;
|
||||
import org.jf.smali.smaliFlexLexer;
|
||||
import org.jf.smali.smaliParser;
|
||||
import org.junit.Assert;
|
||||
import org.junit.Test;
|
||||
|
||||
import java.io.*;
|
||||
import java.io.File;
|
||||
import java.io.IOException;
|
||||
import java.io.InputStream;
|
||||
import java.util.HashMap;
|
||||
import java.util.List;
|
||||
|
||||
import static org.jf.smali.expectedTokensTestGrammarParser.ExpectedToken;
|
||||
|
||||
public class LexerTest {
|
||||
private static final HashMap<String, Integer> tokenTypesByName;
|
||||
|
||||
@ -157,11 +163,12 @@ public class LexerTest {
|
||||
lexer.setSuppressErrors(true);
|
||||
|
||||
CommonTokenStream tokenStream = new CommonTokenStream(lexer);
|
||||
tokenStream.fill();
|
||||
List tokens = tokenStream.getTokens();
|
||||
|
||||
int expectedTokenIndex = 0;
|
||||
CommonToken token;
|
||||
for (int i=0; i<tokens.size(); i++) {
|
||||
for (int i=0; i<tokens.size()-1; i++) {
|
||||
token = (CommonToken)tokens.get(i);
|
||||
|
||||
if (discardHiddenTokens && token.getChannel() == smaliParser.HIDDEN) {
|
||||
|
Loading…
x
Reference in New Issue
Block a user