summaryrefslogtreecommitdiff
path: root/src/GF/GFCC/Raw/GFCCRaw.cf
diff options
context:
space:
mode:
authoraarne <aarne@cs.chalmers.se>2007-12-13 16:36:32 +0000
committeraarne <aarne@cs.chalmers.se>2007-12-13 16:36:32 +0000
commita311dda5392ac1d019bc4f60bd94b37df01a1411 (patch)
tree66262318d5799ef6279b8d70e9629d2442d0e7c9 /src/GF/GFCC/Raw/GFCCRaw.cf
parentaf2755eebe8baa2c283f7732beec5b230c301760 (diff)
lisp-like GFCC syntax; doesn't quite work yet in gf3
Diffstat (limited to 'src/GF/GFCC/Raw/GFCCRaw.cf')
-rw-r--r--src/GF/GFCC/Raw/GFCCRaw.cf110
1 files changed, 110 insertions, 0 deletions
diff --git a/src/GF/GFCC/Raw/GFCCRaw.cf b/src/GF/GFCC/Raw/GFCCRaw.cf
new file mode 100644
index 000000000..2ec3fac52
--- /dev/null
+++ b/src/GF/GFCC/Raw/GFCCRaw.cf
@@ -0,0 +1,110 @@
+Grm. Grammar ::= [RExp] ;
+
+App. RExp ::= "(" CId [RExp] ")" ;
+AId. RExp ::= CId ;
+AInt. RExp ::= Integer ;
+AStr. RExp ::= String ;
+AFlt. RExp ::= Double ;
+AMet. RExp ::= "?" ;
+
+terminator RExp "" ;
+
+token CId (('_' | letter) (letter | digit | '\'' | '_')*) ;
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+{-
+Grm. Grammar ::=
+ "grammar" CId "(" [CId] ")" "(" [Flag] ")" ";"
+ Abstract ";"
+ [Concrete] ;
+
+Abs. Abstract ::=
+ "abstract" "{"
+ "flags" [Flag]
+ "fun" [FunDef]
+ "cat" [CatDef]
+ "}" ;
+
+Cnc. Concrete ::=
+ "concrete" CId "{"
+ "flags" [Flag]
+ "lin" [LinDef]
+ "oper" [LinDef]
+ "lincat" [LinDef]
+ "lindef" [LinDef]
+ "printname" [LinDef]
+ "param" [LinDef] -- lincats with param value names
+ "}" ;
+
+Flg. Flag ::= CId "=" String ;
+Cat. CatDef ::= CId "[" [Hypo] "]" ;
+
+Fun. FunDef ::= CId ":" Type "=" Exp ;
+Lin. LinDef ::= CId "=" Term ;
+
+DTyp. Type ::= "[" [Hypo] "]" CId [Exp] ; -- dependent type
+DTr. Exp ::= "[" "(" [CId] ")" Atom [Exp] "]" ; -- term with bindings
+
+AC. Atom ::= CId ;
+AS. Atom ::= String ;
+AI. Atom ::= Integer ;
+AF. Atom ::= Double ;
+AM. Atom ::= "?" Integer ;
+
+R. Term ::= "[" [Term] "]" ; -- record/table
+P. Term ::= "(" Term "!" Term ")" ; -- projection/selection
+S. Term ::= "(" [Term] ")" ; -- concatenated sequence
+K. Term ::= Tokn ; -- token
+V. Term ::= "$" Integer ; -- argument
+C. Term ::= Integer ; -- parameter value/label
+F. Term ::= CId ; -- global constant
+FV. Term ::= "[|" [Term] "|]" ; -- free variation
+W. Term ::= "(" String "+" Term ")" ; -- prefix + suffix table
+TM. Term ::= "?" ; -- lin of metavariable
+
+KS. Tokn ::= String ;
+KP. Tokn ::= "[" "pre" [String] "[" [Variant] "]" "]" ;
+Var. Variant ::= [String] "/" [String] ;
+
+
+RP. Term ::= "(" Term "@" Term ")"; -- DEPRECATED: record parameter alias
+
+terminator Concrete ";" ;
+terminator Flag ";" ;
+terminator CatDef ";" ;
+terminator FunDef ";" ;
+terminator LinDef ";" ;
+separator CId "," ;
+separator Term "," ;
+terminator Exp "" ;
+terminator String "" ;
+separator Variant "," ;
+
+
+
+-- the following are needed if dependent types or HOAS or defs are present
+
+Hyp. Hypo ::= CId ":" Type ;
+AV. Atom ::= "$" CId ;
+
+EEq. Exp ::= "{" [Equation] "}" ; -- list of pattern eqs; primitive: []
+Equ. Equation ::= [Exp] "->" Exp ; -- patterns are encoded as exps
+
+separator Hypo "," ;
+terminator Equation ";" ;
+
+-}