You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
I forget the entry point into class / it changes for each grammar
Here is the code for swift to read a java file you can find in the above repo.
lettextFileName="Test.java"iflet textFilePath =Bundle.main.path(forResource: textFileName, ofType:nil){letlexer=Java8Lexer(ANTLRFileStream(textFilePath))print("lexer:",lexer)lettokens=CommonTokenStream(lexer)letparser=tryJava8Parser(tokens)lettree=try parser.compilationUnit()print("tree:",tree)letwalker=ParseTreeWalker()letjava8walker=Java8Walker()try walker.walk(java8walker,tree)}else{print("error occur: can not open \(textFileName)")}
The psuedo code would be
let textFilePath = "/path/Test.smali"
let lexer = NewSmaliLexer(ANTLRFileStream(textFilePath)) //this NewSmaliLexer exists
print("lexer:",lexer)
let tokens = CommonTokenStream(lexer) /// ?? there should be a method to do this
let parser = try NewSmaliParser(tokens)
let tree = try parser.compilationUnit() // maybe ToStringTree?
print("tree:",tree)
let walker = ParseTreeWalker() // Here as the lexer / parser reads - you can hook in to translate stuff.
let java8walker = Java8Walker()
try walker.walk(java8walker,tree)
there are other people who have created translation using antlr to do this https://github.com/8secz-johndpope/ObjcGrammar
you may need some help - when I have more time I will circle back.
The text was updated successfully, but these errors were encountered:
@8secz-johndpope Thanks for getting back with this issue :)
Took a look at it, but it's actually more confusing, since it's based on regexes.
Planning to make another branch for antlr this week, per your suggestions.
to stabilise parser -
I suggest rebuilding some of the code to leverage the antlr grammar / g4 files here
https://github.com/psygate/smali-antlr4-grammar
If you download this
wget https://www.antlr.org/download/antlr-4.7.2-complete.jar
you can then run
this will spit out the following files / code
https://gist.github.com/8secz-johndpope/30868ccd59f211f0000b90e6176dead7
you should then be able to walk through the smali file / maybe reducing the out of bounds crashes people (including myself) have been experiencing.
For illustration - I successfully used the grammar files to build out parsers / lexers for hundreds of languages with swift
https://github.com/johndpope/ANTLR-Swift-Target
https://github.com/johndpope/Antlr-Swift-runtime
I forget the entry point into class / it changes for each grammar
Here is the code for swift to read a java file you can find in the above repo.
The psuedo code would be
there are other people who have created translation using antlr to do this
https://github.com/8secz-johndpope/ObjcGrammar
you may need some help - when I have more time I will circle back.
The text was updated successfully, but these errors were encountered: