summaryrefslogtreecommitdiff
path: root/src/GF/CFGM/CFG.cf
diff options
context:
space:
mode:
Diffstat (limited to 'src/GF/CFGM/CFG.cf')
-rw-r--r--src/GF/CFGM/CFG.cf23
1 files changed, 18 insertions, 5 deletions
diff --git a/src/GF/CFGM/CFG.cf b/src/GF/CFGM/CFG.cf
index 51117b8ba..f7b15aea1 100644
--- a/src/GF/CFGM/CFG.cf
+++ b/src/GF/CFGM/CFG.cf
@@ -20,16 +20,29 @@ separator Integer ",";
CatS. Symbol ::= Category;
TermS. Symbol ::= String;
-separator Symbol "";
+-- separator Symbol "";
+[]. [Symbol] ::= "." ;
+(:[]). [Symbol] ::= Symbol ;
+(:). [Symbol] ::= Symbol [Symbol] ;
+
Name. Name ::= [IdentParam] Category;
terminator IdentParam "/";
-Category. Category ::= IdentParam "." Ident [Param] ;
+Category. Category ::= IdentParam "." Ident [Proj] ;
+
+IdentParam. IdentParam ::= Ident "{" [Field] "}" ;
-IdentParam. IdentParam ::= Ident "{" [Param] "}" ;
+Field. Field ::= "." KeyValue ;
+terminator Field ";" ;
-Param. Param ::= "!" Ident ;
-separator Param "";
+Proj. Proj ::= "!" Param ;
+separator Proj "" ;
+KeyValue. KeyValue ::= Ident "=" Param ;
+separator KeyValue ";" ;
+ParamSimple. Param ::= Ident ;
+ParamPatt. Param ::= Ident "(" [Param] ")" ;
+ParamRec. Param ::= "{" [KeyValue] "}" ;
+separator Param "," ;