瀏覽代碼

Fixed grammar for modelling

Yentl Van Tendeloo 9 年之前
父節點
當前提交
63992c9a36
共有 2 個文件被更改,包括 13 次插入2 次删除
  1. 3 2
      interface/HUTN/grammars/modelling.g
  2. 10 0
      interface/HUTN/hutn_compiler/model_visitor.py

+ 3 - 2
interface/HUTN/grammars/modelling.g

@@ -3,9 +3,9 @@ grammar{
 
     import: IMPORT MV_URL AS MODEL_ID;
 
-    model: MODEL_ID MODEL_ID NEWLINE? LCURLY NEWLINE? model_element* NEWLINE? RCURLY;
+    model: MODEL_ID MODEL_ID NEWLINE? LCURLY NEWLINE? (model_element)* RCURLY;
 
-    model_element: MODEL_ID MODEL_ID inheritance? (LPAR MODEL_ID COMMA MODEL_ID RPAR)? NEWLINE? LCURLY NEWLINE? model_attribute* NEWLINE? RCURLY;
+    model_element: MODEL_ID MODEL_ID inheritance? (LPAR MODEL_ID COMMA MODEL_ID RPAR)? NEWLINE? LCURLY NEWLINE? (model_attribute)* RCURLY NEWLINE?;
 
     inheritance: COLON MODEL_ID (COMMA MODEL_ID)*;
 
@@ -40,5 +40,6 @@ grammar{
         COLON : ':';
         LPAR: '\(';
         RPAR: '\)';
+        COMMA: ',';
     }
 }

+ 10 - 0
interface/HUTN/hutn_compiler/model_visitor.py

@@ -3,6 +3,9 @@ from visitor import Visitor
 def jsonstr(s):
     return '"%s"' % s
 
+def empty(s):
+    return None
+
 class ModelVisitor(Visitor):
     def __init__(self, args):
         Visitor.__init__(self, args)
@@ -13,8 +16,15 @@ class ModelVisitor(Visitor):
         self.current_element = None
 
     def dump(self):
+        print(self.constructors)
         return self.constructors
 
+    def __getattr__(self, attr):
+        if attr.startswith("visit_"):
+            return empty
+        else:
+            raise AttributeError()
+
     def visit_start(self, tree):
         for t in tree.get_tail():
             self.visit(t)