mirror of https://github.com/t1meshift/js.git
30 lines
645 B
Python
30 lines
645 B
Python
"""AST module."""
|
|
|
|
from antlr4 import ParseTreeWalker
|
|
from tree_format import format_tree
|
|
|
|
import lex.JavaScriptParser as Parser
|
|
import ast.nodes
|
|
from .parse_tree_listeners import ASTListener
|
|
|
|
JSP = Parser.JavaScriptParser
|
|
|
|
|
|
def from_parse_tree(tree: JSP.ProgramContext) -> ast.nodes.Program:
|
|
"""Generate AST from ANTLR parse tree.
|
|
|
|
Args:
|
|
tree (JSP.ProgramContext): ANTLR parse tree.
|
|
|
|
Returns:
|
|
`Program` AST node, which is the root node.
|
|
"""
|
|
ast_listener = ASTListener()
|
|
ParseTreeWalker.DEFAULT.walk(ast_listener, tree)
|
|
return ast_listener.program_node
|
|
|
|
|
|
# Delete temporary imports
|
|
del JSP
|
|
del Parser
|