First steps of ConceptLexer. Need to update DefaultParser before continuing

This commit is contained in:
2019-11-29 17:26:50 +01:00
parent 5d37addc7d
commit 5e539a4b28
21 changed files with 1409 additions and 55 deletions
+29 -4
View File
@@ -8,7 +8,7 @@ from core.sheerka import Sheerka
def get_sheerka():
sheerka = Sheerka()
sheerka = Sheerka(skip_builtins_in_db=True)
sheerka.initialize("mem://")
return sheerka
@@ -34,7 +34,7 @@ def my_function(a,b):
return a
"""
tree = ast.parse(source)
tree_as_concept = core.ast.nodes.transform(tree)
tree_as_concept = core.ast.nodes.python_to_concept(tree)
sheerka = get_sheerka()
assert tree_as_concept.node_type == "Module"
@@ -87,7 +87,7 @@ def my_function(a,b):
"""
node = ast.parse(source)
concept_node = core.ast.nodes.transform(node)
concept_node = core.ast.nodes.python_to_concept(node)
visitor = TestNameVisitor()
visitor.visit(concept_node)
@@ -115,7 +115,7 @@ my_function(x,y)
sheerka = get_sheerka()
node = ast.parse(source)
concept_node = core.ast.nodes.transform(node)
concept_node = core.ast.nodes.python_to_concept(node)
visitor = UnreferencedNamesVisitor(sheerka)
visitor.visit(concept_node)
@@ -129,3 +129,28 @@ my_function(x,y)
def test_i_can_compare_NodeParent_with_tuple():
node_parent = NodeParent(GenericNodeConcept("For", None), "target")
assert node_parent == ("For", "target")
def test_i_can_transform_back():
source = """
def my_function(a,b):
for i in range(b):
a = a + b
return a
my_function(x, y)
"""
node = ast.parse(source)
concept_node = core.ast.nodes.python_to_concept(node)
transformed_back = core.ast.nodes.concept_to_python(concept_node)
assert dump_ast(transformed_back) == dump_ast(node)
def dump_ast(node):
dump = ast.dump(node)
for to_remove in [", ctx=Load()", ", kind=None", ", type_ignores=[]"]:
dump = dump.replace(to_remove, "")
return dump