diff options
| author | aarne <aarne@cs.chalmers.se> | 2007-11-10 10:23:35 +0000 |
|---|---|---|
| committer | aarne <aarne@cs.chalmers.se> | 2007-11-10 10:23:35 +0000 |
| commit | eb7b0286016714128aae742b4cedccc3dc30a9a0 (patch) | |
| tree | e47841adbafe272068f0720348b16f68c569bc8f /src/GF/Devel/GFCCtoJS.hs | |
| parent | ba735d802bd5904949de2e6d6bd9be9b32c69057 (diff) | |
printing grammarReference.js with gfc -jsref
Diffstat (limited to 'src/GF/Devel/GFCCtoJS.hs')
| -rw-r--r-- | src/GF/Devel/GFCCtoJS.hs | 22 |
1 files changed, 21 insertions, 1 deletions
diff --git a/src/GF/Devel/GFCCtoJS.hs b/src/GF/Devel/GFCCtoJS.hs index 65d3185e2..5ec438bc7 100644 --- a/src/GF/Devel/GFCCtoJS.hs +++ b/src/GF/Devel/GFCCtoJS.hs @@ -1,4 +1,4 @@ -module GF.Devel.GFCCtoJS (gfcc2js) where +module GF.Devel.GFCCtoJS (gfcc2js,gfcc2grammarRef) where import qualified GF.GFCC.Macros as M import qualified GF.GFCC.DataGFCC as D @@ -84,3 +84,23 @@ children = JS.Ident "cs" new :: String -> [JS.Expr] -> JS.Expr new f xs = JS.ENew (JS.Ident f) xs + +-- grammar reference file for js applications. AR 10/11/2007 + +gfcc2grammarRef :: D.GFCC -> String +gfcc2grammarRef gfcc = + encodeUTF8 $ refs + where + C.CId abstr = D.absname gfcc + refs = unlines $ [ + "// Grammar Reference", + "function concreteReference(concreteSyntax, concreteSyntaxName) {", + "this.concreteSyntax = concreteSyntax;", + "this.concreteSyntaxName = concreteSyntaxName;", + "}", + "var myAbstract = " ++ abstr ++ " ;", + "var myConcrete = new Array();" + ] ++ [ + "myConcrete.push(new concreteReference(" ++ c ++ ",\"" ++ c ++ "\"));" + | C.CId c <- D.cncnames gfcc] + |
