checkpoint
[sbp.git] / tests / archscript.g
diff --git a/tests/archscript.g b/tests/archscript.g
new file mode 100644 (file)
index 0000000..5e36d45
--- /dev/null
@@ -0,0 +1,45 @@
+// A grammar for assembling archsim networks
+
+s               = !ws (Statement +/ ws) !ws
+
+Statement       = Import | Instance | Settings | Operations
+
+Settings        = "settings" (Setting+/newline) /newline
+Setting         = Name ^"=" quoted              /ws
+
+Import          = ^"import" JavaClassName "as" Type  /ws
+JavaClassName   = Name +/ "."
+
+Instance        = ^"component" !ws ComponentName !ws ":" !ws Type (!newline Connection +/ newline)?
+
+Connection      = Port ^"->" ForeignPort   /ws
+                | Port ^"<-" ForeignPort   /ws
+
+ForeignPort     = ComponentName ^"." Port
+
+Type            = Name
+Port            = Name
+ComponentName   = Name
+Name            = string:: [a-zA-Z0-9_]++
+
+quoted          = "\"" ~[\"]* "\""
+newline         = !ws "\n" !ws
+ws              = [\r\n ]**
+                | [\r\n ]** !Comment !ws
+Comment         = "//" ~[\n]* "\n"
+                | "/*" ~[\n]* "*/"
+
+Operations      = ^"operations" (Operation+/newline) /newline
+Operation       = ^"build_GASP_model"
+                | ^"output" quoted                   /ws
+                | ^"journal" quoted                  /ws
+                | ^"error" quoted                    /ws
+                | ^"info" quoted                     /ws
+                | ^"run" [0-9]++                     /ws
+                | ^"step" [0-9]++                    /ws
+                | ^"self_check"
+                | ^"reset"
+                | ^"print_parameters"
+                | ^"print_components"
+                | ^"print_model"
+                | ^"print_model_description"