diff --git a/sleepy/main.py b/sleepy/main.py index e39d3cb..69a22cf 100644 --- a/sleepy/main.py +++ b/sleepy/main.py @@ -1,6 +1,6 @@ from sleepy.asmik import asmik_emit from sleepy.interpreter import AsmikInterpreter -from sleepy.syntax import LarkParser, Syntax2Program +from sleepy.syntax import LarkParser, to_program from sleepy.tafka import TafkaUnit @@ -17,7 +17,7 @@ def main() -> None: parser = LarkParser() syntax = parser.parse_program(source) - program = Syntax2Program.converted(syntax) + program = to_program(syntax) tafka = TafkaUnit.emitted_from(program) asmik = asmik_emit(tafka) diff --git a/sleepy/syntax/__init__.py b/sleepy/syntax/__init__.py index 11cadc6..2d16159 100644 --- a/sleepy/syntax/__init__.py +++ b/sleepy/syntax/__init__.py @@ -1,7 +1,7 @@ from .exception import ParsingError from .lark import LarkParser from .parser import SleepyParser -from .s2p import Syntax2Program +from .s2p import to_program from .tree import ( Application, Args, diff --git a/sleepy/syntax/s2p.py b/sleepy/syntax/s2p.py index f40056a..94849b8 100644 --- a/sleepy/syntax/s2p.py +++ b/sleepy/syntax/s2p.py @@ -30,12 +30,8 @@ from .visitor import Visitor -class Syntax2Program(Visitor[ProgramNode]): - def __init__( - self, - namespace: Namespace, - bindings: Bindings, - ) -> None: +class S2PVisitor(Visitor[ProgramNode]): + def __init__(self, namespace: Namespace, bindings: Bindings) -> None: self.namespace = namespace self.bindings = bindings @@ -124,19 +120,16 @@ def visit_definition( return Definition(symbol, expression) @override - def visit_expression( - self, - expression: ExpressionAST, - ) -> Expression: + def visit_expression(self, expression: ExpressionAST) -> Expression: return cast(Expression, super().visit_expression(expression)) - @classmethod - def converted(cls, tree: ProgramAST) -> ProgramUnit: - builtin = BuiltinLayer() - s2p = Syntax2Program(builtin.namespace, builtin.bindings) - program = s2p.visit_program(tree) - return ProgramUnit( - program=program, - bindings=s2p.bindings, - root=builtin.namespace, - ) + +def to_program(tree: ProgramAST) -> ProgramUnit: + builtin = BuiltinLayer() + s2p = S2PVisitor(builtin.namespace, builtin.bindings) + program = s2p.visit_program(tree) + return ProgramUnit( + program=program, + bindings=s2p.bindings, + root=builtin.namespace, + ) diff --git a/test/asmik/evaluate.py b/test/asmik/evaluate.py index bbc71f2..6f58750 100644 --- a/test/asmik/evaluate.py +++ b/test/asmik/evaluate.py @@ -2,13 +2,13 @@ from sleepy.asmik import asmik_emit from sleepy.interpreter import AsmikInterpreter -from sleepy.syntax import Syntax2Program +from sleepy.syntax import to_program from sleepy.tafka import TafkaUnit def evaluate(source: str) -> str: syntax = parser.parse_program(source) - program = Syntax2Program.converted(syntax) + program = to_program(syntax) tafka = TafkaUnit.emitted_from(program) asmik = asmik_emit(tafka) diff --git a/test/program/parse.py b/test/program/parse.py index b58add9..707f2ac 100644 --- a/test/program/parse.py +++ b/test/program/parse.py @@ -1,8 +1,8 @@ from test.common import parser from sleepy.program import ProgramUnit -from sleepy.syntax import Syntax2Program +from sleepy.syntax import to_program def parse(source: str) -> ProgramUnit: - return Syntax2Program.converted(parser.parse_program(source)) + return to_program(parser.parse_program(source))