forked from JetBrains-Research/astminer
-
Notifications
You must be signed in to change notification settings - Fork 0
/
RubyParser.kt
27 lines (25 loc) · 936 Bytes
/
RubyParser.kt
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
package astminer.parse.antlr.ruby
import me.vovak.antlr.parser.RubyParser
import me.vovak.antlr.parser.RubyLexer
import astminer.common.model.Parser
import astminer.parse.antlr.SimpleNode
import astminer.parse.antlr.convertAntlrTree
import org.antlr.v4.runtime.CharStreams
import org.antlr.v4.runtime.CommonTokenStream
import java.io.InputStream
import java.lang.Exception
class RubyParser : Parser<SimpleNode> {
override fun parse(content: InputStream): SimpleNode? {
// return try {
val lexer = RubyLexer(CharStreams.fromStream(content))
lexer.removeErrorListeners()
val tokens = CommonTokenStream(lexer)
val parser = RubyParser(tokens)
parser.removeErrorListeners()
val context = parser.compilation_unit()
return convertAntlrTree(context, RubyParser.ruleNames, RubyParser.VOCABULARY)
// } catch (e: Exception) {
// return null
// }
}
}