Skip to content

Instantly share code, notes, and snippets.

@nickpascucci
Created February 6, 2016 15:45
Show Gist options
  • Save nickpascucci/62d28a8181aa8a427357 to your computer and use it in GitHub Desktop.
Save nickpascucci/62d28a8181aa8a427357 to your computer and use it in GitHub Desktop.
(ns myproject.parsing
(:import [myproject.parsers.java
JavaLexer JavaParser JavaBaseListener]
[org.antlr.v4.runtime
ANTLRInputStream CommonTokenStream]
[org.antlr.v4.runtime.tree
ParseTree ParseTreeWalker]))
(defn- make-listener []
(proxy [JavaBaseListener] []
(enterImportDeclaration [ctx] ... do something ...)
(exitImportDeclaration [ctx] ... do something ...)))
(defn parse-java [source]
"Parse 'source using the Java parser."
(let [input (ANTLRInputStream. source)
lexer (JavaLexer. input)
tokens (CommonTokenStream. lexer)
parser (JavaParser. tokens)
tree (.compilationUnit parser)]
(.walk (ParseTreeWalker.) (make-listener) tree)))
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment