summaryrefslogtreecommitdiff
path: root/src/GF/JavaScript/JS.cf
diff options
context:
space:
mode:
authorbringert <bringert@cs.chalmers.se>2006-12-05 22:10:28 +0000
committerbringert <bringert@cs.chalmers.se>2006-12-05 22:10:28 +0000
commit18ec82b54deb9be67a9c541bf69fca0ac020fe9b (patch)
tree0cdda01326b69edb3d5b8a7cc078c6f3fcdb767a /src/GF/JavaScript/JS.cf
parent3d68f22b95fcae256f05fb7a35815fd481b876a0 (diff)
Got GFCC to JavaScript compilation working. Variants are still printed in a weird way.
Diffstat (limited to 'src/GF/JavaScript/JS.cf')
-rw-r--r--src/GF/JavaScript/JS.cf19
1 files changed, 15 insertions, 4 deletions
diff --git a/src/GF/JavaScript/JS.cf b/src/GF/JavaScript/JS.cf
index 3c89f9c45..6f5c7481e 100644
--- a/src/GF/JavaScript/JS.cf
+++ b/src/GF/JavaScript/JS.cf
@@ -8,14 +8,24 @@ separator Element "" ;
separator Ident "," ;
-Compound. Stmt ::= "{" [Stmt] "}" ;
-ReturnVoid. Stmt ::= "return" ";" ;
-Return. Stmt ::= "return" Expr ";" ;
+SCompound. Stmt ::= "{" [Stmt] "}" ;
+SReturnVoid. Stmt ::= "return" ";" ;
+SReturn. Stmt ::= "return" Expr ";" ;
+SDeclOrExpr. Stmt ::= DeclOrExpr ";" ;
separator Stmt "" ;
+Decl. DeclOrExpr ::= "var" [DeclVar];
+DExpr. DeclOrExpr ::= Expr ;
+
+DVar. DeclVar ::= Ident ;
+DInit. DeclVar ::= Ident "=" Expr ;
+separator DeclVar "," ;
+
+EAssign. Expr13 ::= Expr14 "=" Expr13 ;
+
ENew. Expr14 ::= "new" Ident "(" [Expr] ")" ;
-EMember. Expr15 ::= Expr15 "." Expr16 ;
+EMember. Expr15 ::= Expr15 "." Ident ;
EIndex. Expr15 ::= Expr15 "[" Expr "]" ;
ECall. Expr15 ::= Expr15 "(" [Expr] ")" ;
@@ -27,6 +37,7 @@ ETrue. Expr16 ::= "true" ;
EFalse. Expr16 ::= "false" ;
ENull. Expr16 ::= "null" ;
EThis. Expr16 ::= "this" ;
+EFun. Expr16 ::= "function" "(" [Ident] ")" "{" [Stmt] "}" ;
separator Expr "," ;
coercions Expr 16 ;