add validator to restrict the flexibility of LConfig
[lunaix-os.git] / lunaix-os / scripts / build-tools / lcfg2 / nodes.py
index 703b8f96a6a25c5bfa7238c8706cc827b9abff45..19ead504bb9cf91402f4be5c4295fdbcc35ac1ce 100644 (file)
@@ -5,6 +5,10 @@ from .common     import NodeProperty, ConfigNodeError, NodeDependency
 from .lazy       import LazyLookup
 from .rewriter   import ConfigNodeASTRewriter
 
+from .ast_validator import NodeValidator
+from .rules import SyntaxRule
+
+validator = NodeValidator(SyntaxRule())
 
 class ConfigDecorator:
     Label       = Schema(ast.Constant)
@@ -37,7 +41,10 @@ class ConfigNode:
         NodeProperty.Status[self]   = "Empty"
 
     def set_node_body(self, ast_nodes, rewriter = ConfigNodeASTRewriter):
-        new_ast = rewriter(self).visit(ast.Module(ast_nodes))
+        new_ast = ast.Module(ast_nodes, [])
+        validator.validate(self, new_ast)
+        
+        new_ast = rewriter(self).rewrite(new_ast)
         NodeDependency.try_create(self)
 
         fn_name = f"__fn_{self._name}"