git://scm.lunaixsky.com
/
lunaix-os.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
add validator to restrict the flexibility of LConfig
[lunaix-os.git]
/
lunaix-os
/
scripts
/
build-tools
/
lcfg2
/
nodes.py
diff --git
a/lunaix-os/scripts/build-tools/lcfg2/nodes.py
b/lunaix-os/scripts/build-tools/lcfg2/nodes.py
index 703b8f96a6a25c5bfa7238c8706cc827b9abff45..19ead504bb9cf91402f4be5c4295fdbcc35ac1ce 100644
(file)
--- a/
lunaix-os/scripts/build-tools/lcfg2/nodes.py
+++ b/
lunaix-os/scripts/build-tools/lcfg2/nodes.py
@@
-5,6
+5,10
@@
from .common import NodeProperty, ConfigNodeError, NodeDependency
from .lazy import LazyLookup
from .rewriter import ConfigNodeASTRewriter
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)
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):
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}"
NodeDependency.try_create(self)
fn_name = f"__fn_{self._name}"