diff options
| author | bringert <bringert@cs.chalmers.se> | 2007-11-09 15:09:09 +0000 |
|---|---|---|
| committer | bringert <bringert@cs.chalmers.se> | 2007-11-09 15:09:09 +0000 |
| commit | 6568ac4aea0407ede5ed7002d464a119bd5dd5cc (patch) | |
| tree | 4c6e86d71cd06fa47ef9378c16160cdffd0753c3 /src/GF/Canon/CanonToJS.hs | |
| parent | ad96ff18224e08d5450170e87c43250f882674b2 (diff) | |
Fix pre token bug in JS, both in gf and gfc. Pre tokens are still treated like normal tokens, but at least the generated code should be correct now.
Diffstat (limited to 'src/GF/Canon/CanonToJS.hs')
| -rw-r--r-- | src/GF/Canon/CanonToJS.hs | 13 |
1 files changed, 10 insertions, 3 deletions
diff --git a/src/GF/Canon/CanonToJS.hs b/src/GF/Canon/CanonToJS.hs index 78f641139..3bd44eedd 100644 --- a/src/GF/Canon/CanonToJS.hs +++ b/src/GF/Canon/CanonToJS.hs @@ -63,7 +63,7 @@ term2js l t = f t case t of C.R xs -> new "Arr" (map f xs) C.P x y -> JS.ECall (JS.EMember (f x) (JS.Ident "sel")) [f y] - C.S xs -> new "Seq" (map f xs) + C.S xs -> mkSeq (map f xs) C.K t -> tokn2js t C.V i -> JS.EIndex (JS.EVar children) (JS.EInt i) C.C i -> new "Int" [JS.EInt i] @@ -74,8 +74,15 @@ term2js l t = f t C.TM -> new "Meta" [] tokn2js :: C.Tokn -> JS.Expr -tokn2js (C.KS s) = new "Str" [JS.EStr s] -tokn2js (C.KP ss vs) = new "Seq" (map JS.EStr ss) -- FIXME +tokn2js (C.KS s) = mkStr s +tokn2js (C.KP ss vs) = mkSeq (map mkStr ss) -- FIXME + +mkStr :: String -> JS.Expr +mkStr s = new "Str" [JS.EStr s] + +mkSeq :: [JS.Expr] -> JS.Expr +mkSeq [x] = x +mkSeq xs = new "Seq" xs argIdent :: Integer -> JS.Ident argIdent n = JS.Ident ("x" ++ show n) |
