Source code for pycropml.transpiler.antlr_py.to_CASG
from pycropml.transpiler.antlr_py import parse, simplifyAntlrTree
from pycropml.transpiler.antlr_py.csharp import csharpTransformer
from pycropml.transpiler.antlr_py.fortran import fortranTransformer
from pycropml.transpiler.antlr_py.java import javaTransformer
from pycropml.transpiler.antlr_py.python import pythonTransformer
from pycropml.transpiler.antlr_py.xml import xmlTransformer
from pycropml.transpiler.ast_transform import transform_to_syntax_tree
from path import Path
import pycropml.transpiler.antlr_py
languages = ['cs',"bioma", "dssat", "f90", "java", "simplace", "xml", "py"]
NAMES = {'cs':'csharp','sirius':'csharp',"bioma":"csharp", "dssat":"fortran", "f90":"fortran", "java":"java", "simplace":"java", "xml":"xml", "py":"python", "openalea":"python", "stics":"f90"}
GENERATORS = {
format: getattr(getattr(
pycropml.transpiler.antlr_py,
'%s' % NAMES[format]), '%sTransformer'% NAMES[format])
for format in languages
}
[docs]
def to_dictASG(code, language,comments=None, env=None):
"""Transform CST provided from ANTLR parsers into a common language ASG
Args:
filePath (Path): path of the class
Returns:
dict: A common Abstract Semantic Graph CASG of a specific language in dict format
"""
tree = parse.parsef(code,language, start="compilation_unit", strict=False)
ast_proc = simplifyAntlrTree.process_tree(tree,transformer_cls =GENERATORS[language].Transformer )
trans = GENERATORS[language].AstTransformer(ast_proc,code, comments, env).transformer()
return trans
[docs]
def to_CASG(dictree):
"""Transform CST provided from ANTLR parsers into a common language ASG
Args:
filePath (Path): path of the class
Returns:
Node: A common Abstract Semantic Graph CASG of a specific language
"""
csag= transform_to_syntax_tree(dictree["body"])
return csag