packages feed

language-javascript 0.6.0.8 → 0.6.0.9

raw patch · 8 files changed

+541/−355 lines, 8 filesPVP: major bump suggested

API removals or changes: PVP suggests a major version bump

API changes (from Hackage documentation)

- Language.JavaScript.Parser.Lexer: instance GHC.Base.Functor Language.JavaScript.Parser.Lexer.AlexLastAcc
+ Language.JavaScript.Parser: JSAnnotSpace :: JSAnnot
+ Language.JavaScript.Parser.AST: JSAnnotSpace :: JSAnnot
+ Language.JavaScript.Parser.AST: binOpEq :: JSBinOp -> JSBinOp -> Bool

Files

Tests/Minify.hs view
@@ -115,12 +115,15 @@      it "string concatenation" $ do         minifyExpr " 'ab' + \"cd\" " `shouldBe` "'abcd'"-        minifyExpr " \"bc\" + 'de' " `shouldBe` "\"bcde\""-        minifyExpr " \"cd\" + 'ef' + 'gh' " `shouldBe` "\"cdefgh\""-        -- TODO: Correct, but can we do better?-        minifyExpr " 'de' + \"'fg'\" + 'hi' " `shouldBe` "'de'+\"'fg'\"+'hi'"+        minifyExpr " \"bc\" + 'de' " `shouldBe` "'bcde'"+        minifyExpr " \"cd\" + 'ef' + 'gh' " `shouldBe` "'cdefgh'" +        minifyExpr " 'de' + '\"fg\"' + 'hi' " `shouldBe` "'de\"fg\"hi'"+        minifyExpr " 'ef' + \"'gh'\" + 'ij' " `shouldBe` "'ef\\'gh\\'ij'" +--        minifyExpr " 'de' + '\"fg\"' + 'hi' " `shouldBe` "'de\"fg\"hi'"+--        minifyExpr " 'ef' + \"'gh'\" + 'ij' " `shouldBe` "'ef'gh'ij'"+ testMinifyStmt :: Spec testMinifyStmt = describe "Minify statements:" $ do     forM_ [ "break", "continue", "return" ] $ \kw ->@@ -205,7 +208,7 @@         minifyStmt " var d = 1, x = 2 ; " `shouldBe` "var d=1,x=2"      it "string concatenation" $-        minifyStmt " f (\"ab\"+\"cd\") " `shouldBe` "f(\"abcd\")"+        minifyStmt " f (\"ab\"+\"cd\") " `shouldBe` "f('abcd')"   testMinifyProg :: Spec
dist/build/Language/JavaScript/Parser/Grammar5.hs view
@@ -1355,7 +1355,7 @@ happyReduction_4 happy_x_1 	 =  case happyOutTok happy_x_1 of { happy_var_1 ->  	happyIn7-		 (AST.JSSemi (AST.JSAnnot (ts happy_var_1) (tc happy_var_1))+		 (AST.JSSemi (mkJSAnnot happy_var_1) 	)}  happyReduce_5 = happySpecReduce_0  0# happyReduction_5@@ -1367,7 +1367,7 @@ happyReduction_6 happy_x_1 	 =  case happyOutTok happy_x_1 of { happy_var_1 ->  	happyIn8-		 (AST.JSSemi (AST.JSAnnot (ts happy_var_1) (tc happy_var_1))+		 (AST.JSSemi (mkJSAnnot happy_var_1) 	)}  happyReduce_7 = happySpecReduce_1  1# happyReduction_7@@ -1385,518 +1385,518 @@ happyReduction_9 happy_x_1 	 =  case happyOutTok happy_x_1 of { happy_var_1 ->  	happyIn9-		 (AST.JSAnnot (ts happy_var_1) (tc happy_var_1)+		 (mkJSAnnot happy_var_1 	)}  happyReduce_10 = happySpecReduce_1  3# happyReduction_10 happyReduction_10 happy_x_1 	 =  case happyOutTok happy_x_1 of { happy_var_1 ->  	happyIn10-		 (AST.JSAnnot (ts happy_var_1) (tc happy_var_1)+		 (mkJSAnnot happy_var_1 	)}  happyReduce_11 = happySpecReduce_1  4# happyReduction_11 happyReduction_11 happy_x_1 	 =  case happyOutTok happy_x_1 of { happy_var_1 ->  	happyIn11-		 (AST.JSAnnot (ts happy_var_1) (tc happy_var_1)+		 (mkJSAnnot happy_var_1 	)}  happyReduce_12 = happySpecReduce_1  5# happyReduction_12 happyReduction_12 happy_x_1 	 =  case happyOutTok happy_x_1 of { happy_var_1 ->  	happyIn12-		 (AST.JSAnnot (ts happy_var_1) (tc happy_var_1)+		 (mkJSAnnot happy_var_1 	)}  happyReduce_13 = happySpecReduce_1  6# happyReduction_13 happyReduction_13 happy_x_1 	 =  case happyOutTok happy_x_1 of { happy_var_1 ->  	happyIn13-		 (AST.JSAnnot (ts happy_var_1) (tc happy_var_1)+		 (mkJSAnnot happy_var_1 	)}  happyReduce_14 = happySpecReduce_1  7# happyReduction_14 happyReduction_14 happy_x_1 	 =  case happyOutTok happy_x_1 of { happy_var_1 ->  	happyIn14-		 (AST.JSAnnot (ts happy_var_1) (tc happy_var_1)+		 (mkJSAnnot happy_var_1 	)}  happyReduce_15 = happySpecReduce_1  8# happyReduction_15 happyReduction_15 happy_x_1 	 =  case happyOutTok happy_x_1 of { happy_var_1 ->  	happyIn15-		 (AST.JSAnnot (ts happy_var_1) (tc happy_var_1)+		 (mkJSAnnot happy_var_1 	)}  happyReduce_16 = happySpecReduce_1  9# happyReduction_16 happyReduction_16 happy_x_1 	 =  case happyOutTok happy_x_1 of { happy_var_1 ->  	happyIn16-		 (AST.JSAnnot (ts happy_var_1) (tc happy_var_1)+		 (mkJSAnnot happy_var_1 	)}  happyReduce_17 = happySpecReduce_1  10# happyReduction_17 happyReduction_17 happy_x_1 	 =  case happyOutTok happy_x_1 of { happy_var_1 ->  	happyIn17-		 (AST.JSAnnot (ts happy_var_1) (tc happy_var_1)+		 (mkJSAnnot happy_var_1 	)}  happyReduce_18 = happySpecReduce_1  11# happyReduction_18 happyReduction_18 happy_x_1 	 =  case happyOutTok happy_x_1 of { happy_var_1 ->  	happyIn18-		 (AST.JSAnnot (ts happy_var_1) (tc happy_var_1)+		 (mkJSAnnot happy_var_1 	)}  happyReduce_19 = happySpecReduce_1  12# happyReduction_19 happyReduction_19 happy_x_1 	 =  case happyOutTok happy_x_1 of { happy_var_1 ->  	happyIn19-		 (AST.JSUnaryOpIncr (AST.JSAnnot (ts happy_var_1) (tc happy_var_1))+		 (AST.JSUnaryOpIncr (mkJSAnnot happy_var_1) 	)}  happyReduce_20 = happySpecReduce_1  13# happyReduction_20 happyReduction_20 happy_x_1 	 =  case happyOutTok happy_x_1 of { happy_var_1 ->  	happyIn20-		 (AST.JSUnaryOpDecr (AST.JSAnnot (ts happy_var_1) (tc happy_var_1))+		 (AST.JSUnaryOpDecr (mkJSAnnot happy_var_1) 	)}  happyReduce_21 = happySpecReduce_1  14# happyReduction_21 happyReduction_21 happy_x_1 	 =  case happyOutTok happy_x_1 of { happy_var_1 ->  	happyIn21-		 (AST.JSUnaryOpDelete (AST.JSAnnot (ts happy_var_1) (tc happy_var_1))+		 (AST.JSUnaryOpDelete (mkJSAnnot happy_var_1) 	)}  happyReduce_22 = happySpecReduce_1  15# happyReduction_22 happyReduction_22 happy_x_1 	 =  case happyOutTok happy_x_1 of { happy_var_1 ->  	happyIn22-		 (AST.JSUnaryOpVoid (AST.JSAnnot (ts happy_var_1) (tc happy_var_1))+		 (AST.JSUnaryOpVoid (mkJSAnnot happy_var_1) 	)}  happyReduce_23 = happySpecReduce_1  16# happyReduction_23 happyReduction_23 happy_x_1 	 =  case happyOutTok happy_x_1 of { happy_var_1 ->  	happyIn23-		 (AST.JSUnaryOpTypeof (AST.JSAnnot (ts happy_var_1) (tc happy_var_1))+		 (AST.JSUnaryOpTypeof (mkJSAnnot happy_var_1) 	)}  happyReduce_24 = happySpecReduce_1  17# happyReduction_24 happyReduction_24 happy_x_1 	 =  case happyOutTok happy_x_1 of { happy_var_1 ->  	happyIn24-		 (AST.JSBinOpPlus (AST.JSAnnot (ts happy_var_1) (tc happy_var_1))+		 (AST.JSBinOpPlus (mkJSAnnot happy_var_1) 	)}  happyReduce_25 = happySpecReduce_1  18# happyReduction_25 happyReduction_25 happy_x_1 	 =  case happyOutTok happy_x_1 of { happy_var_1 ->  	happyIn25-		 (AST.JSBinOpMinus (AST.JSAnnot (ts happy_var_1) (tc happy_var_1))+		 (AST.JSBinOpMinus (mkJSAnnot happy_var_1) 	)}  happyReduce_26 = happySpecReduce_1  19# happyReduction_26 happyReduction_26 happy_x_1 	 =  case happyOutTok happy_x_1 of { happy_var_1 ->  	happyIn26-		 (AST.JSUnaryOpTilde (AST.JSAnnot (ts happy_var_1) (tc happy_var_1))+		 (AST.JSUnaryOpTilde (mkJSAnnot happy_var_1) 	)}  happyReduce_27 = happySpecReduce_1  20# happyReduction_27 happyReduction_27 happy_x_1 	 =  case happyOutTok happy_x_1 of { happy_var_1 ->  	happyIn27-		 (AST.JSUnaryOpNot (AST.JSAnnot (ts happy_var_1) (tc happy_var_1))+		 (AST.JSUnaryOpNot (mkJSAnnot happy_var_1) 	)}  happyReduce_28 = happySpecReduce_1  21# happyReduction_28 happyReduction_28 happy_x_1 	 =  case happyOutTok happy_x_1 of { happy_var_1 ->  	happyIn28-		 (AST.JSBinOpTimes (AST.JSAnnot (ts happy_var_1) (tc happy_var_1))+		 (AST.JSBinOpTimes (mkJSAnnot happy_var_1) 	)}  happyReduce_29 = happySpecReduce_1  22# happyReduction_29 happyReduction_29 happy_x_1 	 =  case happyOutTok happy_x_1 of { happy_var_1 ->  	happyIn29-		 (AST.JSBinOpDivide (AST.JSAnnot (ts happy_var_1) (tc happy_var_1))+		 (AST.JSBinOpDivide (mkJSAnnot happy_var_1) 	)}  happyReduce_30 = happySpecReduce_1  23# happyReduction_30 happyReduction_30 happy_x_1 	 =  case happyOutTok happy_x_1 of { happy_var_1 ->  	happyIn30-		 (AST.JSBinOpMod (AST.JSAnnot (ts happy_var_1) (tc happy_var_1))+		 (AST.JSBinOpMod (mkJSAnnot happy_var_1) 	)}  happyReduce_31 = happySpecReduce_1  24# happyReduction_31 happyReduction_31 happy_x_1 	 =  case happyOutTok happy_x_1 of { happy_var_1 ->  	happyIn31-		 (AST.JSBinOpLsh (AST.JSAnnot (ts happy_var_1) (tc happy_var_1))+		 (AST.JSBinOpLsh (mkJSAnnot happy_var_1) 	)}  happyReduce_32 = happySpecReduce_1  25# happyReduction_32 happyReduction_32 happy_x_1 	 =  case happyOutTok happy_x_1 of { happy_var_1 ->  	happyIn32-		 (AST.JSBinOpRsh (AST.JSAnnot (ts happy_var_1) (tc happy_var_1))+		 (AST.JSBinOpRsh (mkJSAnnot happy_var_1) 	)}  happyReduce_33 = happySpecReduce_1  26# happyReduction_33 happyReduction_33 happy_x_1 	 =  case happyOutTok happy_x_1 of { happy_var_1 ->  	happyIn33-		 (AST.JSBinOpUrsh (AST.JSAnnot (ts happy_var_1) (tc happy_var_1))+		 (AST.JSBinOpUrsh (mkJSAnnot happy_var_1) 	)}  happyReduce_34 = happySpecReduce_1  27# happyReduction_34 happyReduction_34 happy_x_1 	 =  case happyOutTok happy_x_1 of { happy_var_1 ->  	happyIn34-		 (AST.JSBinOpLe (AST.JSAnnot (ts happy_var_1) (tc happy_var_1))+		 (AST.JSBinOpLe (mkJSAnnot happy_var_1) 	)}  happyReduce_35 = happySpecReduce_1  28# happyReduction_35 happyReduction_35 happy_x_1 	 =  case happyOutTok happy_x_1 of { happy_var_1 ->  	happyIn35-		 (AST.JSBinOpLt (AST.JSAnnot (ts happy_var_1) (tc happy_var_1))+		 (AST.JSBinOpLt (mkJSAnnot happy_var_1) 	)}  happyReduce_36 = happySpecReduce_1  29# happyReduction_36 happyReduction_36 happy_x_1 	 =  case happyOutTok happy_x_1 of { happy_var_1 ->  	happyIn36-		 (AST.JSBinOpGe (AST.JSAnnot (ts happy_var_1) (tc happy_var_1))+		 (AST.JSBinOpGe (mkJSAnnot happy_var_1) 	)}  happyReduce_37 = happySpecReduce_1  30# happyReduction_37 happyReduction_37 happy_x_1 	 =  case happyOutTok happy_x_1 of { happy_var_1 ->  	happyIn37-		 (AST.JSBinOpGt (AST.JSAnnot (ts happy_var_1) (tc happy_var_1))+		 (AST.JSBinOpGt (mkJSAnnot happy_var_1) 	)}  happyReduce_38 = happySpecReduce_1  31# happyReduction_38 happyReduction_38 happy_x_1 	 =  case happyOutTok happy_x_1 of { happy_var_1 ->  	happyIn38-		 (AST.JSBinOpIn (AST.JSAnnot (ts happy_var_1) (tc happy_var_1))+		 (AST.JSBinOpIn (mkJSAnnot happy_var_1) 	)}  happyReduce_39 = happySpecReduce_1  32# happyReduction_39 happyReduction_39 happy_x_1 	 =  case happyOutTok happy_x_1 of { happy_var_1 ->  	happyIn39-		 (AST.JSBinOpInstanceOf (AST.JSAnnot (ts happy_var_1) (tc happy_var_1))+		 (AST.JSBinOpInstanceOf (mkJSAnnot happy_var_1) 	)}  happyReduce_40 = happySpecReduce_1  33# happyReduction_40 happyReduction_40 happy_x_1 	 =  case happyOutTok happy_x_1 of { happy_var_1 ->  	happyIn40-		 (AST.JSBinOpStrictEq (AST.JSAnnot (ts happy_var_1) (tc happy_var_1))+		 (AST.JSBinOpStrictEq (mkJSAnnot happy_var_1) 	)}  happyReduce_41 = happySpecReduce_1  34# happyReduction_41 happyReduction_41 happy_x_1 	 =  case happyOutTok happy_x_1 of { happy_var_1 ->  	happyIn41-		 (AST.JSBinOpEq (AST.JSAnnot (ts happy_var_1) (tc happy_var_1))+		 (AST.JSBinOpEq (mkJSAnnot happy_var_1) 	)}  happyReduce_42 = happySpecReduce_1  35# happyReduction_42 happyReduction_42 happy_x_1 	 =  case happyOutTok happy_x_1 of { happy_var_1 ->  	happyIn42-		 (AST.JSBinOpStrictNeq (AST.JSAnnot (ts happy_var_1) (tc happy_var_1))+		 (AST.JSBinOpStrictNeq (mkJSAnnot happy_var_1) 	)}  happyReduce_43 = happySpecReduce_1  36# happyReduction_43 happyReduction_43 happy_x_1 	 =  case happyOutTok happy_x_1 of { happy_var_1 ->  	happyIn43-		 (AST.JSBinOpNeq (AST.JSAnnot (ts happy_var_1) (tc happy_var_1))+		 (AST.JSBinOpNeq (mkJSAnnot happy_var_1) 	)}  happyReduce_44 = happySpecReduce_1  37# happyReduction_44 happyReduction_44 happy_x_1 	 =  case happyOutTok happy_x_1 of { happy_var_1 ->  	happyIn44-		 (AST.JSBinOpOr (AST.JSAnnot (ts happy_var_1) (tc happy_var_1))+		 (AST.JSBinOpOr (mkJSAnnot happy_var_1) 	)}  happyReduce_45 = happySpecReduce_1  38# happyReduction_45 happyReduction_45 happy_x_1 	 =  case happyOutTok happy_x_1 of { happy_var_1 ->  	happyIn45-		 (AST.JSBinOpAnd (AST.JSAnnot (ts happy_var_1) (tc happy_var_1))+		 (AST.JSBinOpAnd (mkJSAnnot happy_var_1) 	)}  happyReduce_46 = happySpecReduce_1  39# happyReduction_46 happyReduction_46 happy_x_1 	 =  case happyOutTok happy_x_1 of { happy_var_1 ->  	happyIn46-		 (AST.JSBinOpBitOr (AST.JSAnnot (ts happy_var_1) (tc happy_var_1))+		 (AST.JSBinOpBitOr (mkJSAnnot happy_var_1) 	)}  happyReduce_47 = happySpecReduce_1  40# happyReduction_47 happyReduction_47 happy_x_1 	 =  case happyOutTok happy_x_1 of { happy_var_1 ->  	happyIn47-		 (AST.JSBinOpBitAnd (AST.JSAnnot (ts happy_var_1) (tc happy_var_1))+		 (AST.JSBinOpBitAnd (mkJSAnnot happy_var_1) 	)}  happyReduce_48 = happySpecReduce_1  41# happyReduction_48 happyReduction_48 happy_x_1 	 =  case happyOutTok happy_x_1 of { happy_var_1 ->  	happyIn48-		 (AST.JSBinOpBitXor (AST.JSAnnot (ts happy_var_1) (tc happy_var_1))+		 (AST.JSBinOpBitXor (mkJSAnnot happy_var_1) 	)}  happyReduce_49 = happySpecReduce_1  42# happyReduction_49 happyReduction_49 happy_x_1 	 =  case happyOutTok happy_x_1 of { happy_var_1 ->  	happyIn49-		 (AST.JSAnnot (ts happy_var_1) (tc happy_var_1)+		 (mkJSAnnot happy_var_1 	)}  happyReduce_50 = happySpecReduce_1  43# happyReduction_50 happyReduction_50 happy_x_1 	 =  case happyOutTok happy_x_1 of { happy_var_1 ->  	happyIn50-		 (AST.JSAnnot (ts happy_var_1) (tc happy_var_1)+		 (mkJSAnnot happy_var_1 	)}  happyReduce_51 = happySpecReduce_1  44# happyReduction_51 happyReduction_51 happy_x_1 	 =  case happyOutTok happy_x_1 of { happy_var_1 ->  	happyIn51-		 (AST.JSTimesAssign  (AST.JSAnnot (ts happy_var_1) (tc happy_var_1))+		 (AST.JSTimesAssign  (mkJSAnnot happy_var_1) 	)}  happyReduce_52 = happySpecReduce_1  44# happyReduction_52 happyReduction_52 happy_x_1 	 =  case happyOutTok happy_x_1 of { happy_var_1 ->  	happyIn51-		 (AST.JSDivideAssign (AST.JSAnnot (ts happy_var_1) (tc happy_var_1))+		 (AST.JSDivideAssign (mkJSAnnot happy_var_1) 	)}  happyReduce_53 = happySpecReduce_1  44# happyReduction_53 happyReduction_53 happy_x_1 	 =  case happyOutTok happy_x_1 of { happy_var_1 ->  	happyIn51-		 (AST.JSModAssign    (AST.JSAnnot (ts happy_var_1) (tc happy_var_1))+		 (AST.JSModAssign    (mkJSAnnot happy_var_1) 	)}  happyReduce_54 = happySpecReduce_1  44# happyReduction_54 happyReduction_54 happy_x_1 	 =  case happyOutTok happy_x_1 of { happy_var_1 ->  	happyIn51-		 (AST.JSPlusAssign   (AST.JSAnnot (ts happy_var_1) (tc happy_var_1))+		 (AST.JSPlusAssign   (mkJSAnnot happy_var_1) 	)}  happyReduce_55 = happySpecReduce_1  44# happyReduction_55 happyReduction_55 happy_x_1 	 =  case happyOutTok happy_x_1 of { happy_var_1 ->  	happyIn51-		 (AST.JSMinusAssign  (AST.JSAnnot (ts happy_var_1) (tc happy_var_1))+		 (AST.JSMinusAssign  (mkJSAnnot happy_var_1) 	)}  happyReduce_56 = happySpecReduce_1  44# happyReduction_56 happyReduction_56 happy_x_1 	 =  case happyOutTok happy_x_1 of { happy_var_1 ->  	happyIn51-		 (AST.JSLshAssign    (AST.JSAnnot (ts happy_var_1) (tc happy_var_1))+		 (AST.JSLshAssign    (mkJSAnnot happy_var_1) 	)}  happyReduce_57 = happySpecReduce_1  44# happyReduction_57 happyReduction_57 happy_x_1 	 =  case happyOutTok happy_x_1 of { happy_var_1 ->  	happyIn51-		 (AST.JSRshAssign    (AST.JSAnnot (ts happy_var_1) (tc happy_var_1))+		 (AST.JSRshAssign    (mkJSAnnot happy_var_1) 	)}  happyReduce_58 = happySpecReduce_1  44# happyReduction_58 happyReduction_58 happy_x_1 	 =  case happyOutTok happy_x_1 of { happy_var_1 ->  	happyIn51-		 (AST.JSUrshAssign   (AST.JSAnnot (ts happy_var_1) (tc happy_var_1))+		 (AST.JSUrshAssign   (mkJSAnnot happy_var_1) 	)}  happyReduce_59 = happySpecReduce_1  44# happyReduction_59 happyReduction_59 happy_x_1 	 =  case happyOutTok happy_x_1 of { happy_var_1 ->  	happyIn51-		 (AST.JSBwAndAssign  (AST.JSAnnot (ts happy_var_1) (tc happy_var_1))+		 (AST.JSBwAndAssign  (mkJSAnnot happy_var_1) 	)}  happyReduce_60 = happySpecReduce_1  44# happyReduction_60 happyReduction_60 happy_x_1 	 =  case happyOutTok happy_x_1 of { happy_var_1 ->  	happyIn51-		 (AST.JSBwXorAssign  (AST.JSAnnot (ts happy_var_1) (tc happy_var_1))+		 (AST.JSBwXorAssign  (mkJSAnnot happy_var_1) 	)}  happyReduce_61 = happySpecReduce_1  44# happyReduction_61 happyReduction_61 happy_x_1 	 =  case happyOutTok happy_x_1 of { happy_var_1 ->  	happyIn51-		 (AST.JSBwOrAssign   (AST.JSAnnot (ts happy_var_1) (tc happy_var_1))+		 (AST.JSBwOrAssign   (mkJSAnnot happy_var_1) 	)}  happyReduce_62 = happySpecReduce_1  45# happyReduction_62 happyReduction_62 happy_x_1 	 =  case happyOutTok happy_x_1 of { happy_var_1 ->  	happyIn52-		 (AST.JSAnnot (ts happy_var_1) (tc happy_var_1)+		 (mkJSAnnot happy_var_1 	)}  happyReduce_63 = happySpecReduce_1  46# happyReduction_63 happyReduction_63 happy_x_1 	 =  case happyOutTok happy_x_1 of { happy_var_1 ->  	happyIn53-		 (AST.JSAnnot (ts happy_var_1) (tc happy_var_1)+		 (mkJSAnnot happy_var_1 	)}  happyReduce_64 = happySpecReduce_1  47# happyReduction_64 happyReduction_64 happy_x_1 	 =  case happyOutTok happy_x_1 of { happy_var_1 ->  	happyIn54-		 (AST.JSAnnot (ts happy_var_1) (tc happy_var_1)+		 (mkJSAnnot happy_var_1 	)}  happyReduce_65 = happySpecReduce_1  48# happyReduction_65 happyReduction_65 happy_x_1 	 =  case happyOutTok happy_x_1 of { happy_var_1 ->  	happyIn55-		 (AST.JSAnnot (ts happy_var_1) (tc happy_var_1)+		 (mkJSAnnot happy_var_1 	)}  happyReduce_66 = happySpecReduce_1  49# happyReduction_66 happyReduction_66 happy_x_1 	 =  case happyOutTok happy_x_1 of { happy_var_1 ->  	happyIn56-		 (AST.JSAnnot (ts happy_var_1) (tc happy_var_1)+		 (mkJSAnnot happy_var_1 	)}  happyReduce_67 = happySpecReduce_1  50# happyReduction_67 happyReduction_67 happy_x_1 	 =  case happyOutTok happy_x_1 of { happy_var_1 ->  	happyIn57-		 (AST.JSAnnot (ts happy_var_1) (tc happy_var_1)+		 (mkJSAnnot happy_var_1 	)}  happyReduce_68 = happySpecReduce_1  51# happyReduction_68 happyReduction_68 happy_x_1 	 =  case happyOutTok happy_x_1 of { happy_var_1 ->  	happyIn58-		 (AST.JSAnnot (ts happy_var_1) (tc happy_var_1)+		 (mkJSAnnot happy_var_1 	)}  happyReduce_69 = happySpecReduce_1  52# happyReduction_69 happyReduction_69 happy_x_1 	 =  case happyOutTok happy_x_1 of { happy_var_1 ->  	happyIn59-		 (AST.JSAnnot (ts happy_var_1) (tc happy_var_1)+		 (mkJSAnnot happy_var_1 	)}  happyReduce_70 = happySpecReduce_1  53# happyReduction_70 happyReduction_70 happy_x_1 	 =  case happyOutTok happy_x_1 of { happy_var_1 ->  	happyIn60-		 (AST.JSAnnot (ts happy_var_1) (tc happy_var_1)+		 (mkJSAnnot happy_var_1 	)}  happyReduce_71 = happySpecReduce_1  54# happyReduction_71 happyReduction_71 happy_x_1 	 =  case happyOutTok happy_x_1 of { happy_var_1 ->  	happyIn61-		 (AST.JSAnnot (ts happy_var_1) (tc happy_var_1)+		 (mkJSAnnot happy_var_1 	)}  happyReduce_72 = happySpecReduce_1  55# happyReduction_72 happyReduction_72 happy_x_1 	 =  case happyOutTok happy_x_1 of { happy_var_1 ->  	happyIn62-		 (AST.JSAnnot (ts happy_var_1) (tc happy_var_1)+		 (mkJSAnnot happy_var_1 	)}  happyReduce_73 = happySpecReduce_1  56# happyReduction_73 happyReduction_73 happy_x_1 	 =  case happyOutTok happy_x_1 of { happy_var_1 ->  	happyIn63-		 (AST.JSAnnot (ts happy_var_1) (tc happy_var_1)+		 (mkJSAnnot happy_var_1 	)}  happyReduce_74 = happySpecReduce_1  57# happyReduction_74 happyReduction_74 happy_x_1 	 =  case happyOutTok happy_x_1 of { happy_var_1 ->  	happyIn64-		 (AST.JSAnnot (ts happy_var_1) (tc happy_var_1)+		 (mkJSAnnot happy_var_1 	)}  happyReduce_75 = happySpecReduce_1  58# happyReduction_75 happyReduction_75 happy_x_1 	 =  case happyOutTok happy_x_1 of { happy_var_1 ->  	happyIn65-		 (AST.JSAnnot (ts happy_var_1) (tc happy_var_1)+		 (mkJSAnnot happy_var_1 	)}  happyReduce_76 = happySpecReduce_1  59# happyReduction_76 happyReduction_76 happy_x_1 	 =  case happyOutTok happy_x_1 of { happy_var_1 ->  	happyIn66-		 (AST.JSAnnot (ts happy_var_1) (tc happy_var_1) {- 'Throw' -}+		 (mkJSAnnot happy_var_1 {- 'Throw' -} 	)}  happyReduce_77 = happySpecReduce_1  60# happyReduction_77 happyReduction_77 happy_x_1 	 =  case happyOutTok happy_x_1 of { happy_var_1 ->  	happyIn67-		 (AST.JSAnnot (ts happy_var_1) (tc happy_var_1)+		 (mkJSAnnot happy_var_1 	)}  happyReduce_78 = happySpecReduce_1  61# happyReduction_78 happyReduction_78 happy_x_1 	 =  case happyOutTok happy_x_1 of { happy_var_1 ->  	happyIn68-		 (AST.JSAnnot (ts happy_var_1) (tc happy_var_1)+		 (mkJSAnnot happy_var_1 	)}  happyReduce_79 = happySpecReduce_1  62# happyReduction_79 happyReduction_79 happy_x_1 	 =  case happyOutTok happy_x_1 of { happy_var_1 ->  	happyIn69-		 (AST.JSAnnot (ts happy_var_1) (tc happy_var_1)+		 (mkJSAnnot happy_var_1 	)}  happyReduce_80 = happySpecReduce_1  63# happyReduction_80 happyReduction_80 happy_x_1 	 =  case happyOutTok happy_x_1 of { happy_var_1 ->  	happyIn70-		 (AST.JSAnnot (ts happy_var_1) (tc happy_var_1) {- 'Function' -}+		 (mkJSAnnot happy_var_1 {- 'Function' -} 	)}  happyReduce_81 = happySpecReduce_1  64# happyReduction_81 happyReduction_81 happy_x_1 	 =  case happyOutTok happy_x_1 of { happy_var_1 ->  	happyIn71-		 (AST.JSAnnot (ts happy_var_1) (tc happy_var_1)+		 (mkJSAnnot happy_var_1 	)}  happyReduce_82 = happySpecReduce_1  65# happyReduction_82 happyReduction_82 happy_x_1 	 =  case happyOutTok happy_x_1 of { happy_var_1 ->  	happyIn72-		 (AST.JSAnnot (ts happy_var_1) (tc happy_var_1) {- 'Eof' -}+		 (mkJSAnnot happy_var_1 {- 'Eof' -} 	)}  happyReduce_83 = happySpecReduce_1  66# happyReduction_83@@ -1938,63 +1938,63 @@ happyReduction_88 happy_x_1 	 =  case happyOutTok happy_x_1 of { happy_var_1 ->  	happyIn74-		 (AST.JSLiteral (AST.JSAnnot (ts happy_var_1) (tc happy_var_1)) "null"+		 (AST.JSLiteral (mkJSAnnot happy_var_1) "null" 	)}  happyReduce_89 = happySpecReduce_1  68# happyReduction_89 happyReduction_89 happy_x_1 	 =  case happyOutTok happy_x_1 of { happy_var_1 ->  	happyIn75-		 (AST.JSLiteral (AST.JSAnnot (ts happy_var_1) (tc happy_var_1)) "true"+		 (AST.JSLiteral (mkJSAnnot happy_var_1) "true" 	)}  happyReduce_90 = happySpecReduce_1  68# happyReduction_90 happyReduction_90 happy_x_1 	 =  case happyOutTok happy_x_1 of { happy_var_1 ->  	happyIn75-		 (AST.JSLiteral (AST.JSAnnot (ts happy_var_1) (tc happy_var_1)) "false"+		 (AST.JSLiteral (mkJSAnnot happy_var_1) "false" 	)}  happyReduce_91 = happySpecReduce_1  69# happyReduction_91 happyReduction_91 happy_x_1 	 =  case happyOutTok happy_x_1 of { happy_var_1 ->  	happyIn76-		 (AST.JSDecimal (AST.JSAnnot (ts happy_var_1) (tc happy_var_1)) (tokenLiteral happy_var_1)+		 (AST.JSDecimal (mkJSAnnot happy_var_1) (tokenLiteral happy_var_1) 	)}  happyReduce_92 = happySpecReduce_1  69# happyReduction_92 happyReduction_92 happy_x_1 	 =  case happyOutTok happy_x_1 of { happy_var_1 ->  	happyIn76-		 (AST.JSHexInteger (AST.JSAnnot (ts happy_var_1) (tc happy_var_1)) (tokenLiteral happy_var_1)+		 (AST.JSHexInteger (mkJSAnnot happy_var_1) (tokenLiteral happy_var_1) 	)}  happyReduce_93 = happySpecReduce_1  69# happyReduction_93 happyReduction_93 happy_x_1 	 =  case happyOutTok happy_x_1 of { happy_var_1 ->  	happyIn76-		 (AST.JSOctal (AST.JSAnnot (ts happy_var_1) (tc happy_var_1)) (tokenLiteral happy_var_1)+		 (AST.JSOctal (mkJSAnnot happy_var_1) (tokenLiteral happy_var_1) 	)}  happyReduce_94 = happySpecReduce_1  70# happyReduction_94 happyReduction_94 happy_x_1 	 =  case happyOutTok happy_x_1 of { happy_var_1 ->  	happyIn77-		 (AST.JSStringLiteral (AST.JSAnnot (ts happy_var_1) (tc happy_var_1)) (tokenLiteral happy_var_1)+		 (AST.JSStringLiteral (mkJSAnnot happy_var_1) (tokenLiteral happy_var_1) 	)}  happyReduce_95 = happySpecReduce_1  71# happyReduction_95 happyReduction_95 happy_x_1 	 =  case happyOutTok happy_x_1 of { happy_var_1 ->  	happyIn78-		 (AST.JSRegEx (AST.JSAnnot (ts happy_var_1) (tc happy_var_1)) (tokenLiteral happy_var_1)+		 (AST.JSRegEx (mkJSAnnot happy_var_1) (tokenLiteral happy_var_1) 	)}  happyReduce_96 = happySpecReduce_1  72# happyReduction_96 happyReduction_96 happy_x_1 	 =  case happyOutTok happy_x_1 of { happy_var_1 ->  	happyIn79-		 (AST.JSLiteral (AST.JSAnnot (ts happy_var_1) (tc happy_var_1)) "this"+		 (AST.JSLiteral (mkJSAnnot happy_var_1) "this" 	)}  happyReduce_97 = happySpecReduce_1  72# happyReduction_97@@ -2040,21 +2040,21 @@ happyReduction_102 happy_x_1 	 =  case happyOutTok happy_x_1 of { happy_var_1 ->  	happyIn80-		 (AST.JSIdentifier (AST.JSAnnot (ts happy_var_1) (tc happy_var_1)) (tokenLiteral happy_var_1)+		 (AST.JSIdentifier (mkJSAnnot happy_var_1) (tokenLiteral happy_var_1) 	)}  happyReduce_103 = happySpecReduce_1  73# happyReduction_103 happyReduction_103 happy_x_1 	 =  case happyOutTok happy_x_1 of { happy_var_1 ->  	happyIn80-		 (AST.JSIdentifier (AST.JSAnnot (ts happy_var_1) (tc happy_var_1)) "get"+		 (AST.JSIdentifier (mkJSAnnot happy_var_1) "get" 	)}  happyReduce_104 = happySpecReduce_1  73# happyReduction_104 happyReduction_104 happy_x_1 	 =  case happyOutTok happy_x_1 of { happy_var_1 ->  	happyIn80-		 (AST.JSIdentifier (AST.JSAnnot (ts happy_var_1) (tc happy_var_1)) "set"+		 (AST.JSIdentifier (mkJSAnnot happy_var_1) "set" 	)}  happyReduce_105 = happySpecReduce_1  74# happyReduction_105@@ -2068,238 +2068,238 @@ happyReduction_106 happy_x_1 	 =  case happyOutTok happy_x_1 of { happy_var_1 ->  	happyIn81-		 (AST.JSIdentifier (AST.JSAnnot (ts happy_var_1) (tc happy_var_1)) "break"+		 (AST.JSIdentifier (mkJSAnnot happy_var_1) "break" 	)}  happyReduce_107 = happySpecReduce_1  74# happyReduction_107 happyReduction_107 happy_x_1 	 =  case happyOutTok happy_x_1 of { happy_var_1 ->  	happyIn81-		 (AST.JSIdentifier (AST.JSAnnot (ts happy_var_1) (tc happy_var_1)) "case"+		 (AST.JSIdentifier (mkJSAnnot happy_var_1) "case" 	)}  happyReduce_108 = happySpecReduce_1  74# happyReduction_108 happyReduction_108 happy_x_1 	 =  case happyOutTok happy_x_1 of { happy_var_1 ->  	happyIn81-		 (AST.JSIdentifier (AST.JSAnnot (ts happy_var_1) (tc happy_var_1)) "catch"+		 (AST.JSIdentifier (mkJSAnnot happy_var_1) "catch" 	)}  happyReduce_109 = happySpecReduce_1  74# happyReduction_109 happyReduction_109 happy_x_1 	 =  case happyOutTok happy_x_1 of { happy_var_1 ->  	happyIn81-		 (AST.JSIdentifier (AST.JSAnnot (ts happy_var_1) (tc happy_var_1)) "const"+		 (AST.JSIdentifier (mkJSAnnot happy_var_1) "const" 	)}  happyReduce_110 = happySpecReduce_1  74# happyReduction_110 happyReduction_110 happy_x_1 	 =  case happyOutTok happy_x_1 of { happy_var_1 ->  	happyIn81-		 (AST.JSIdentifier (AST.JSAnnot (ts happy_var_1) (tc happy_var_1)) "continue"+		 (AST.JSIdentifier (mkJSAnnot happy_var_1) "continue" 	)}  happyReduce_111 = happySpecReduce_1  74# happyReduction_111 happyReduction_111 happy_x_1 	 =  case happyOutTok happy_x_1 of { happy_var_1 ->  	happyIn81-		 (AST.JSIdentifier (AST.JSAnnot (ts happy_var_1) (tc happy_var_1)) "debugger"+		 (AST.JSIdentifier (mkJSAnnot happy_var_1) "debugger" 	)}  happyReduce_112 = happySpecReduce_1  74# happyReduction_112 happyReduction_112 happy_x_1 	 =  case happyOutTok happy_x_1 of { happy_var_1 ->  	happyIn81-		 (AST.JSIdentifier (AST.JSAnnot (ts happy_var_1) (tc happy_var_1)) "default"+		 (AST.JSIdentifier (mkJSAnnot happy_var_1) "default" 	)}  happyReduce_113 = happySpecReduce_1  74# happyReduction_113 happyReduction_113 happy_x_1 	 =  case happyOutTok happy_x_1 of { happy_var_1 ->  	happyIn81-		 (AST.JSIdentifier (AST.JSAnnot (ts happy_var_1) (tc happy_var_1)) "delete"+		 (AST.JSIdentifier (mkJSAnnot happy_var_1) "delete" 	)}  happyReduce_114 = happySpecReduce_1  74# happyReduction_114 happyReduction_114 happy_x_1 	 =  case happyOutTok happy_x_1 of { happy_var_1 ->  	happyIn81-		 (AST.JSIdentifier (AST.JSAnnot (ts happy_var_1) (tc happy_var_1)) "do"+		 (AST.JSIdentifier (mkJSAnnot happy_var_1) "do" 	)}  happyReduce_115 = happySpecReduce_1  74# happyReduction_115 happyReduction_115 happy_x_1 	 =  case happyOutTok happy_x_1 of { happy_var_1 ->  	happyIn81-		 (AST.JSIdentifier (AST.JSAnnot (ts happy_var_1) (tc happy_var_1)) "else"+		 (AST.JSIdentifier (mkJSAnnot happy_var_1) "else" 	)}  happyReduce_116 = happySpecReduce_1  74# happyReduction_116 happyReduction_116 happy_x_1 	 =  case happyOutTok happy_x_1 of { happy_var_1 ->  	happyIn81-		 (AST.JSIdentifier (AST.JSAnnot (ts happy_var_1) (tc happy_var_1)) "enum"+		 (AST.JSIdentifier (mkJSAnnot happy_var_1) "enum" 	)}  happyReduce_117 = happySpecReduce_1  74# happyReduction_117 happyReduction_117 happy_x_1 	 =  case happyOutTok happy_x_1 of { happy_var_1 ->  	happyIn81-		 (AST.JSIdentifier (AST.JSAnnot (ts happy_var_1) (tc happy_var_1)) "false"+		 (AST.JSIdentifier (mkJSAnnot happy_var_1) "false" 	)}  happyReduce_118 = happySpecReduce_1  74# happyReduction_118 happyReduction_118 happy_x_1 	 =  case happyOutTok happy_x_1 of { happy_var_1 ->  	happyIn81-		 (AST.JSIdentifier (AST.JSAnnot (ts happy_var_1) (tc happy_var_1)) "finally"+		 (AST.JSIdentifier (mkJSAnnot happy_var_1) "finally" 	)}  happyReduce_119 = happySpecReduce_1  74# happyReduction_119 happyReduction_119 happy_x_1 	 =  case happyOutTok happy_x_1 of { happy_var_1 ->  	happyIn81-		 (AST.JSIdentifier (AST.JSAnnot (ts happy_var_1) (tc happy_var_1)) "for"+		 (AST.JSIdentifier (mkJSAnnot happy_var_1) "for" 	)}  happyReduce_120 = happySpecReduce_1  74# happyReduction_120 happyReduction_120 happy_x_1 	 =  case happyOutTok happy_x_1 of { happy_var_1 ->  	happyIn81-		 (AST.JSIdentifier (AST.JSAnnot (ts happy_var_1) (tc happy_var_1)) "function"+		 (AST.JSIdentifier (mkJSAnnot happy_var_1) "function" 	)}  happyReduce_121 = happySpecReduce_1  74# happyReduction_121 happyReduction_121 happy_x_1 	 =  case happyOutTok happy_x_1 of { happy_var_1 ->  	happyIn81-		 (AST.JSIdentifier (AST.JSAnnot (ts happy_var_1) (tc happy_var_1)) "get"+		 (AST.JSIdentifier (mkJSAnnot happy_var_1) "get" 	)}  happyReduce_122 = happySpecReduce_1  74# happyReduction_122 happyReduction_122 happy_x_1 	 =  case happyOutTok happy_x_1 of { happy_var_1 ->  	happyIn81-		 (AST.JSIdentifier (AST.JSAnnot (ts happy_var_1) (tc happy_var_1)) "if"+		 (AST.JSIdentifier (mkJSAnnot happy_var_1) "if" 	)}  happyReduce_123 = happySpecReduce_1  74# happyReduction_123 happyReduction_123 happy_x_1 	 =  case happyOutTok happy_x_1 of { happy_var_1 ->  	happyIn81-		 (AST.JSIdentifier (AST.JSAnnot (ts happy_var_1) (tc happy_var_1)) "in"+		 (AST.JSIdentifier (mkJSAnnot happy_var_1) "in" 	)}  happyReduce_124 = happySpecReduce_1  74# happyReduction_124 happyReduction_124 happy_x_1 	 =  case happyOutTok happy_x_1 of { happy_var_1 ->  	happyIn81-		 (AST.JSIdentifier (AST.JSAnnot (ts happy_var_1) (tc happy_var_1)) "instanceof"+		 (AST.JSIdentifier (mkJSAnnot happy_var_1) "instanceof" 	)}  happyReduce_125 = happySpecReduce_1  74# happyReduction_125 happyReduction_125 happy_x_1 	 =  case happyOutTok happy_x_1 of { happy_var_1 ->  	happyIn81-		 (AST.JSIdentifier (AST.JSAnnot (ts happy_var_1) (tc happy_var_1)) "new"+		 (AST.JSIdentifier (mkJSAnnot happy_var_1) "new" 	)}  happyReduce_126 = happySpecReduce_1  74# happyReduction_126 happyReduction_126 happy_x_1 	 =  case happyOutTok happy_x_1 of { happy_var_1 ->  	happyIn81-		 (AST.JSIdentifier (AST.JSAnnot (ts happy_var_1) (tc happy_var_1)) "null"+		 (AST.JSIdentifier (mkJSAnnot happy_var_1) "null" 	)}  happyReduce_127 = happySpecReduce_1  74# happyReduction_127 happyReduction_127 happy_x_1 	 =  case happyOutTok happy_x_1 of { happy_var_1 ->  	happyIn81-		 (AST.JSIdentifier (AST.JSAnnot (ts happy_var_1) (tc happy_var_1)) "return"+		 (AST.JSIdentifier (mkJSAnnot happy_var_1) "return" 	)}  happyReduce_128 = happySpecReduce_1  74# happyReduction_128 happyReduction_128 happy_x_1 	 =  case happyOutTok happy_x_1 of { happy_var_1 ->  	happyIn81-		 (AST.JSIdentifier (AST.JSAnnot (ts happy_var_1) (tc happy_var_1)) "set"+		 (AST.JSIdentifier (mkJSAnnot happy_var_1) "set" 	)}  happyReduce_129 = happySpecReduce_1  74# happyReduction_129 happyReduction_129 happy_x_1 	 =  case happyOutTok happy_x_1 of { happy_var_1 ->  	happyIn81-		 (AST.JSIdentifier (AST.JSAnnot (ts happy_var_1) (tc happy_var_1)) "switch"+		 (AST.JSIdentifier (mkJSAnnot happy_var_1) "switch" 	)}  happyReduce_130 = happySpecReduce_1  74# happyReduction_130 happyReduction_130 happy_x_1 	 =  case happyOutTok happy_x_1 of { happy_var_1 ->  	happyIn81-		 (AST.JSIdentifier (AST.JSAnnot (ts happy_var_1) (tc happy_var_1)) "this"+		 (AST.JSIdentifier (mkJSAnnot happy_var_1) "this" 	)}  happyReduce_131 = happySpecReduce_1  74# happyReduction_131 happyReduction_131 happy_x_1 	 =  case happyOutTok happy_x_1 of { happy_var_1 ->  	happyIn81-		 (AST.JSIdentifier (AST.JSAnnot (ts happy_var_1) (tc happy_var_1)) "throw"+		 (AST.JSIdentifier (mkJSAnnot happy_var_1) "throw" 	)}  happyReduce_132 = happySpecReduce_1  74# happyReduction_132 happyReduction_132 happy_x_1 	 =  case happyOutTok happy_x_1 of { happy_var_1 ->  	happyIn81-		 (AST.JSIdentifier (AST.JSAnnot (ts happy_var_1) (tc happy_var_1)) "true"+		 (AST.JSIdentifier (mkJSAnnot happy_var_1) "true" 	)}  happyReduce_133 = happySpecReduce_1  74# happyReduction_133 happyReduction_133 happy_x_1 	 =  case happyOutTok happy_x_1 of { happy_var_1 ->  	happyIn81-		 (AST.JSIdentifier (AST.JSAnnot (ts happy_var_1) (tc happy_var_1)) "try"+		 (AST.JSIdentifier (mkJSAnnot happy_var_1) "try" 	)}  happyReduce_134 = happySpecReduce_1  74# happyReduction_134 happyReduction_134 happy_x_1 	 =  case happyOutTok happy_x_1 of { happy_var_1 ->  	happyIn81-		 (AST.JSIdentifier (AST.JSAnnot (ts happy_var_1) (tc happy_var_1)) "typeof"+		 (AST.JSIdentifier (mkJSAnnot happy_var_1) "typeof" 	)}  happyReduce_135 = happySpecReduce_1  74# happyReduction_135 happyReduction_135 happy_x_1 	 =  case happyOutTok happy_x_1 of { happy_var_1 ->  	happyIn81-		 (AST.JSIdentifier (AST.JSAnnot (ts happy_var_1) (tc happy_var_1)) "var"+		 (AST.JSIdentifier (mkJSAnnot happy_var_1) "var" 	)}  happyReduce_136 = happySpecReduce_1  74# happyReduction_136 happyReduction_136 happy_x_1 	 =  case happyOutTok happy_x_1 of { happy_var_1 ->  	happyIn81-		 (AST.JSIdentifier (AST.JSAnnot (ts happy_var_1) (tc happy_var_1)) "void"+		 (AST.JSIdentifier (mkJSAnnot happy_var_1) "void" 	)}  happyReduce_137 = happySpecReduce_1  74# happyReduction_137 happyReduction_137 happy_x_1 	 =  case happyOutTok happy_x_1 of { happy_var_1 ->  	happyIn81-		 (AST.JSIdentifier (AST.JSAnnot (ts happy_var_1) (tc happy_var_1)) "while"+		 (AST.JSIdentifier (mkJSAnnot happy_var_1) "while" 	)}  happyReduce_138 = happySpecReduce_1  74# happyReduction_138 happyReduction_138 happy_x_1 	 =  case happyOutTok happy_x_1 of { happy_var_1 ->  	happyIn81-		 (AST.JSIdentifier (AST.JSAnnot (ts happy_var_1) (tc happy_var_1)) "with"+		 (AST.JSIdentifier (mkJSAnnot happy_var_1) "with" 	)}  happyReduce_139 = happySpecReduce_1  74# happyReduction_139 happyReduction_139 happy_x_1 	 =  case happyOutTok happy_x_1 of { happy_var_1 ->  	happyIn81-		 (AST.JSIdentifier (AST.JSAnnot (ts happy_var_1) (tc happy_var_1)) (tokenLiteral happy_var_1)+		 (AST.JSIdentifier (mkJSAnnot happy_var_1) (tokenLiteral happy_var_1) 	)}  happyReduce_140 = happySpecReduce_2  75# happyReduction_140@@ -2466,7 +2466,7 @@ 	case happyOut10 happy_x_4 of { happy_var_4 ->  	case happyOut160 happy_x_5 of { happy_var_5 ->  	happyIn87-		 (AST.JSPropertyAccessor (AST.JSAccessorGet (AST.JSAnnot (ts happy_var_1) (tc happy_var_1))) happy_var_2 happy_var_3 [] happy_var_4 happy_var_5+		 (AST.JSPropertyAccessor (AST.JSAccessorGet (mkJSAnnot happy_var_1)) happy_var_2 happy_var_3 [] happy_var_4 happy_var_5 	) `HappyStk` happyRest}}}}}  happyReduce_156 = happyReduce 6# 80# happyReduction_156@@ -2484,7 +2484,7 @@ 	case happyOut10 happy_x_5 of { happy_var_5 ->  	case happyOut160 happy_x_6 of { happy_var_6 ->  	happyIn87-		 (AST.JSPropertyAccessor (AST.JSAccessorSet (AST.JSAnnot (ts happy_var_1) (tc happy_var_1))) happy_var_2 happy_var_3 [happy_var_4] happy_var_5 happy_var_6+		 (AST.JSPropertyAccessor (AST.JSAccessorSet (mkJSAnnot happy_var_1)) happy_var_2 happy_var_3 [happy_var_4] happy_var_5 happy_var_6 	) `HappyStk` happyRest}}}}}}  happyReduce_157 = happySpecReduce_1  81# happyReduction_157@@ -4247,7 +4247,7 @@ 	 =  case happyOutTok happy_x_1 of { happy_var_1 ->  	case happyOut7 happy_x_2 of { happy_var_2 ->  	happyIn153-		 (AST.JSExpressionStatement (AST.JSLiteral (AST.JSAnnot (ts happy_var_1) (tc happy_var_1)) "debugger") happy_var_2 {- 'DebuggerStatement' -}+		 (AST.JSExpressionStatement (AST.JSLiteral (mkJSAnnot happy_var_1) "debugger") happy_var_2 {- 'DebuggerStatement' -} 	)}}  happyReduce_334 = happySpecReduce_2  147# happyReduction_334@@ -4566,22 +4566,11 @@ mkJSMemberNew :: AST.JSAnnot -> AST.JSExpression -> JSArguments -> AST.JSExpression mkJSMemberNew a e (JSArguments l arglist r) = AST.JSMemberNew a e l arglist r - parseError :: Token -> Alex a parseError = alexError . show --- ----------------------------------ts :: Token -> TokenPosn-ts = tokenSpan---- --------------------------------tc :: Token -> [CommentAnnotation]-tc = tokenComment--mtc :: [Token] -> [CommentAnnotation]-mtc xs = concatMap tokenComment xs+mkJSAnnot :: Token -> AST.JSAnnot+mkJSAnnot a = AST.JSAnnot (tokenSpan a) (tokenComment a)  -- --------------------------------------------------------------------- -- | mkUnary : The parser detects '+' and '-' as the binary version of these@@ -4608,7 +4597,7 @@ {-# LINE 1 "templates/GenericTemplate.hs" #-} {-# LINE 1 "<built-in>" #-} {-# LINE 1 "<command-line>" #-}-{-# LINE 11 "<command-line>" #-}+{-# LINE 13 "<command-line>" #-} # 1 "/usr/include/stdc-predef.h" 1 3 4  # 17 "/usr/include/stdc-predef.h" 3 4@@ -4654,7 +4643,8 @@   -{-# LINE 11 "<command-line>" #-}++{-# LINE 13 "<command-line>" #-} {-# LINE 1 "/usr/lib/ghc/include/ghcversion.h" #-}  @@ -4673,7 +4663,171 @@   -{-# LINE 11 "<command-line>" #-}+{-# LINE 13 "<command-line>" #-}+{-# LINE 1 "/tmp/ghc6015_0/ghc_2.h" #-}+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++{-# LINE 13 "<command-line>" #-} {-# LINE 1 "templates/GenericTemplate.hs" #-} -- Id: GenericTemplate.hs,v 1.26 2005/01/14 14:47:22 simonmar Exp  
dist/build/Language/JavaScript/Parser/Lexer.hs view
@@ -86,10 +86,6 @@   ---- {-# LINE 10 "<command-line>" #-} {-# LINE 1 "/usr/lib/ghc/include/ghcversion.h" #-} @@ -163,24 +159,24 @@                   String)       -- current input string  ignorePendingBytes :: AlexInput -> AlexInput-ignorePendingBytes (p,c,ps,s) = (p,c,[],s)+ignorePendingBytes (p,c,_ps,s) = (p,c,[],s)  alexInputPrevChar :: AlexInput -> Char-alexInputPrevChar (p,c,bs,s) = c+alexInputPrevChar (_p,c,_bs,_s) = c  alexGetByte :: AlexInput -> Maybe (Byte,AlexInput) alexGetByte (p,c,(b:bs),s) = Just (b,(p,c,bs,s))-alexGetByte (p,c,[],[]) = Nothing-alexGetByte (p,_,[],(c:s))  = let p' = alexMove p c +alexGetByte (_,_,[],[]) = Nothing+alexGetByte (p,_,[],(c:s))  = let p' = alexMove p c                                   (b:bs) = utf8Encode c                               in p' `seq`  Just (b, (p', c, bs, s))  -{-# LINE 101 "templates/wrappers.hs" #-}+{-# LINE 102 "templates/wrappers.hs" #-} -{-# LINE 119 "templates/wrappers.hs" #-}+{-# LINE 120 "templates/wrappers.hs" #-} -{-# LINE 137 "templates/wrappers.hs" #-}+{-# LINE 138 "templates/wrappers.hs" #-}  -- ----------------------------------------------------------------------------- -- Token positions@@ -201,7 +197,7 @@  alexMove :: AlexPosn -> Char -> AlexPosn alexMove (AlexPn a l c) '\t' = AlexPn (a+1)  l     (((c+alex_tab_size-1) `div` alex_tab_size)*alex_tab_size+1)-alexMove (AlexPn a l c) '\n' = AlexPn (a+1) (l+1)   1+alexMove (AlexPn a l _) '\n' = AlexPn (a+1) (l+1)   1 alexMove (AlexPn a l c) _    = AlexPn (a+1)  l     (c+1)  @@ -223,9 +219,9 @@ -- Compile with -funbox-strict-fields for best results!  runAlex :: String -> Alex a -> Either String a-runAlex input (Alex f) +runAlex input (Alex f)    = case f (AlexState {alex_pos = alexStartPos,-                        alex_inp = input,       +                        alex_inp = input,                         alex_chr = '\n',                         alex_bytes = [], @@ -250,14 +246,14 @@                                                Right (s'', b) -> Right (s'', f b)  instance Monad Alex where-  m >>= k  = Alex $ \s -> case unAlex m s of +  m >>= k  = Alex $ \s -> case unAlex m s of                                 Left msg -> Left msg                                 Right (s',a) -> unAlex (k a) s'   return = App.pure  alexGetInput :: Alex AlexInput alexGetInput- = Alex $ \s@AlexState{alex_pos=pos,alex_chr=c,alex_bytes=bs,alex_inp=inp} -> + = Alex $ \s@AlexState{alex_pos=pos,alex_chr=c,alex_bytes=bs,alex_inp=inp} ->         Right (s, (pos,c,bs,inp))  alexSetInput :: AlexInput -> Alex ()@@ -266,7 +262,7 @@                   s@(AlexState{}) -> Right (s, ())  alexError :: String -> Alex a-alexError message = Alex $ \s -> Left message+alexError message = Alex $ const $ Left message  alexGetStartCode :: Alex Int alexGetStartCode = Alex $ \s@AlexState{alex_scd=sc} -> Right (s, sc)@@ -288,7 +284,7 @@   case alexScan inp sc of     AlexEOF -> alexEOF     AlexError ((AlexPn _ line column),_,_,_) -> alexError $ "lexical error at line " ++ (show line) ++ ", column " ++ (show column)-    AlexSkip  inp' len -> do+    AlexSkip  inp' _len -> do         alexSetInput inp'         alexMonadScan     AlexToken inp' len action -> do@@ -302,11 +298,11 @@  -- just ignore this token and scan another one -- skip :: AlexAction result-skip input len = alexMonadScan+skip _input _len = alexMonadScan  -- ignore this token, but set the start code to a new value -- begin :: Int -> AlexAction result-begin code input len = do alexSetStartCode code; alexMonadScan+begin code _input _len = do alexSetStartCode code; alexMonadScan  -- perform an action for this token, and set the start code to a new value andBegin :: AlexAction result -> Int -> AlexAction result@@ -320,21 +316,21 @@ -- ----------------------------------------------------------------------------- -- Monad (with ByteString input) -{-# LINE 374 "templates/wrappers.hs" #-}+{-# LINE 375 "templates/wrappers.hs" #-}   -- ----------------------------------------------------------------------------- -- Basic wrapper -{-# LINE 401 "templates/wrappers.hs" #-}+{-# LINE 402 "templates/wrappers.hs" #-}   -- ----------------------------------------------------------------------------- -- Basic wrapper, ByteString version -{-# LINE 421 "templates/wrappers.hs" #-}+{-# LINE 422 "templates/wrappers.hs" #-} -{-# LINE 437 "templates/wrappers.hs" #-}+{-# LINE 438 "templates/wrappers.hs" #-}   -- -----------------------------------------------------------------------------@@ -342,13 +338,13 @@  -- Adds text positions to the basic model. -{-# LINE 454 "templates/wrappers.hs" #-}+{-# LINE 455 "templates/wrappers.hs" #-}   -- ----------------------------------------------------------------------------- -- Posn wrapper, ByteString version -{-# LINE 470 "templates/wrappers.hs" #-}+{-# LINE 471 "templates/wrappers.hs" #-}   -- -----------------------------------------------------------------------------@@ -370,7 +366,10 @@ alex_deflt :: AlexAddr alex_deflt = AlexA# "\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xac\x01\xff\xff\xab\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x3c\x00\xff\xff\x3e\x00\x3e\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x56\x00\x56\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x6d\x00\x6d\x00\xff\xff\xff\xff\x7a\x00\x7a\x00\x7e\x00\x7e\x00\x7f\x00\x80\x00\x80\x00\x7f\x00\xff\xff\x84\x00\x84\x00\xff\xff\x87\x00\x87\x00\xff\xff\x8d\x00\x8d\x00\x56\x00\x56\x00\x56\x00\x96\x00\x97\x00\x97\x00\x96\x00\xff\xff\x9c\x00\x9c\x00\xff\xff\xa1\x00\xa1\x00\xff\xff\xff\xff\xab\x00\xab\x00\xab\x00\xad\x00\xad\x00\x3e\x00\x3d\x00\xff\xff\x3e\x00\x3e\x00\x3d\x00\x3e\x00\x3d\x00\x3c\x00\xff\xff\xff\xff\x3c\x00\x3c\x00\xb9\x00\xff\xff\xff\xff\xb9\x00\xb9\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xab\x00\xa0\x01\xa0\x01\xa0\x01\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xb9\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xac\x01\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xac\x01\xac\x01\xac\x01\xac\x01\xac\x01\xac\x01\xac\x01\xac\x01\xac\x01\xac\x01\xac\x01\xac\x01\xac\x01\xac\x01\xac\x01\xac\x01\xac\x01\xac\x01\xac\x01\xac\x01\xac\x01\xac\x01\xac\x01\xac\x01\xac\x01\xac\x01\xac\x01\xac\x01\xac\x01\xac\x01\xac\x01\xac\x01\xac\x01\xac\x01\xac\x01\xac\x01\xac\x01\xac\x01\xac\x01\xac\x01\xac\x01\xac\x01\xac\x01\xac\x01\xac\x01\xac\x01\xac\x01\xac\x01\xac\x01\xac\x01\xac\x01\xac\x01\xac\x01\xac\x01\xac\x01\xac\x01\xac\x01\xac\x01\xac\x01\xac\x01\xac\x01\xac\x01\xac\x01\xac\x01\xac\x01\xac\x01\xac\x01\xac\x01\xac\x01\xac\x01\xac\x01\xac\x01\xac\x01\xac\x01\xac\x01\xac\x01\xac\x01\xac\x01\xac\x01\xac\x01\xac\x01\xac\x01\xac\x01\xac\x01\xac\x01\xac\x01\xac\x01\xac\x01\xac\x01\xac\x01\xac\x01\xac\x01\xac\x01\xac\x01\xac\x01\xac\x01\xac\x01\xac\x01\xac\x01\xac\x01\xac\x01\xac\x01\xaa\x01\xaa\x01\xaa\x01\xaa\x01\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xaa\x01\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x56\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff"# -alex_accept = listArray (0::Int,486) [AlexAccSkip,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAcc (alex_action_1),AlexAcc (alex_action_2),AlexAcc (alex_action_3),AlexAcc (alex_action_4),AlexAcc (alex_action_5),AlexAcc (alex_action_6),AlexAcc (alex_action_7),AlexAcc (alex_action_8),AlexAcc (alex_action_8),AlexAcc (alex_action_9),AlexAcc (alex_action_9),AlexAcc (alex_action_9),AlexAcc (alex_action_9),AlexAccSkip,AlexAcc (alex_action_11),AlexAcc (alex_action_12),AlexAcc (alex_action_13),AlexAcc (alex_action_14),AlexAcc (alex_action_15),AlexAcc (alex_action_16),AlexAcc (alex_action_17),AlexAcc (alex_action_18),AlexAcc (alex_action_19),AlexAcc (alex_action_20),AlexAcc (alex_action_21),AlexAcc (alex_action_22),AlexAcc (alex_action_23),AlexAcc (alex_action_24),AlexAcc (alex_action_25),AlexAcc (alex_action_26),AlexAcc (alex_action_27),AlexAcc (alex_action_28),AlexAcc (alex_action_29),AlexAcc (alex_action_30),AlexAcc (alex_action_31),AlexAcc (alex_action_32),AlexAcc (alex_action_33),AlexAcc (alex_action_34),AlexAcc (alex_action_35),AlexAcc (alex_action_36),AlexAcc (alex_action_37),AlexAcc (alex_action_38),AlexAcc (alex_action_39),AlexAcc (alex_action_40),AlexAcc (alex_action_41),AlexAcc (alex_action_42),AlexAcc (alex_action_43),AlexAcc (alex_action_44),AlexAcc (alex_action_45),AlexAcc (alex_action_46),AlexAcc (alex_action_47),AlexAcc (alex_action_48),AlexAcc (alex_action_49),AlexAcc (alex_action_50),AlexAcc (alex_action_51),AlexAcc (alex_action_52),AlexAcc (alex_action_53),AlexAcc (alex_action_54),AlexAcc (alex_action_55),AlexAcc (alex_action_56),AlexAcc (alex_action_57),AlexAcc (alex_action_58)]+alex_accept = listArray (0::Int,486) [AlexAccSkip,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAcc 60,AlexAcc 59,AlexAcc 58,AlexAcc 57,AlexAcc 56,AlexAcc 55,AlexAcc 54,AlexAcc 53,AlexAcc 52,AlexAcc 51,AlexAcc 50,AlexAcc 49,AlexAcc 48,AlexAccSkip,AlexAcc 47,AlexAcc 46,AlexAcc 45,AlexAcc 44,AlexAcc 43,AlexAcc 42,AlexAcc 41,AlexAcc 40,AlexAcc 39,AlexAcc 38,AlexAcc 37,AlexAcc 36,AlexAcc 35,AlexAcc 34,AlexAcc 33,AlexAcc 32,AlexAcc 31,AlexAcc 30,AlexAcc 29,AlexAcc 28,AlexAcc 27,AlexAcc 26,AlexAcc 25,AlexAcc 24,AlexAcc 23,AlexAcc 22,AlexAcc 21,AlexAcc 20,AlexAcc 19,AlexAcc 18,AlexAcc 17,AlexAcc 16,AlexAcc 15,AlexAcc 14,AlexAcc 13,AlexAcc 12,AlexAcc 11,AlexAcc 10,AlexAcc 9,AlexAcc 8,AlexAcc 7,AlexAcc 6,AlexAcc 5,AlexAcc 4,AlexAcc 3,AlexAcc 2,AlexAcc 1,AlexAcc 0]++alex_actions = array (0::Int,61) [(60,alex_action_1),(59,alex_action_2),(58,alex_action_3),(57,alex_action_4),(56,alex_action_5),(55,alex_action_6),(54,alex_action_7),(53,alex_action_8),(52,alex_action_8),(51,alex_action_9),(50,alex_action_9),(49,alex_action_9),(48,alex_action_9),(47,alex_action_11),(46,alex_action_12),(45,alex_action_13),(44,alex_action_14),(43,alex_action_15),(42,alex_action_16),(41,alex_action_17),(40,alex_action_18),(39,alex_action_19),(38,alex_action_20),(37,alex_action_21),(36,alex_action_22),(35,alex_action_23),(34,alex_action_24),(33,alex_action_25),(32,alex_action_26),(31,alex_action_27),(30,alex_action_28),(29,alex_action_29),(28,alex_action_30),(27,alex_action_31),(26,alex_action_32),(25,alex_action_33),(24,alex_action_34),(23,alex_action_35),(22,alex_action_36),(21,alex_action_37),(20,alex_action_38),(19,alex_action_39),(18,alex_action_40),(17,alex_action_41),(16,alex_action_42),(15,alex_action_43),(14,alex_action_44),(13,alex_action_45),(12,alex_action_46),(11,alex_action_47),(10,alex_action_48),(9,alex_action_49),(8,alex_action_50),(7,alex_action_51),(6,alex_action_52),(5,alex_action_53),(4,alex_action_54),(3,alex_action_55),(2,alex_action_56),(1,alex_action_57),(0,alex_action_58)]+ {-# LINE 330 "src/Language/JavaScript/Parser/Lexer.x" #-}  @@ -465,7 +464,7 @@      -- If the token is a WsToken and it contains a newline, convert it to an     -- AutoSemiToken and call the continuation, otherwise, just lexLoop.-    maybeAutoSemi ws@(WsToken sp tl cmt) =+    maybeAutoSemi (WsToken sp tl cmt) =         if any (== '\n') tl             then cont $ AutoSemiToken sp tl cmt             else lexLoop@@ -473,7 +472,7 @@   toCommentAnnotation :: [Token] -> [CommentAnnotation]-toCommentAnnotation [] = [NoComment]+toCommentAnnotation [] = [] toCommentAnnotation xs =     reverse $ map go xs   where@@ -733,10 +732,6 @@   ---- {-# LINE 10 "<command-line>" #-} {-# LINE 1 "/usr/lib/ghc/include/ghcversion.h" #-} @@ -808,7 +803,7 @@   {-# INLINE alexIndexInt32OffAddr #-}-alexIndexInt32OffAddr (AlexA# arr) off = +alexIndexInt32OffAddr (AlexA# arr) off = #ifdef WORDS_BIGENDIAN   narrow32Int# i   where@@ -854,30 +849,30 @@  alexScanUser user input (I# (sc))   = case alex_scan_tkn user input 0# input sc AlexNone of-        (AlexNone, input') ->-                case alexGetByte input of-                        Nothing -> +  (AlexNone, input') ->+    case alexGetByte input of+      Nothing ->                                       AlexEOF-                        Just _ ->+      Just _ ->                                       AlexError input' -        (AlexLastSkip input'' len, _) ->+  (AlexLastSkip input'' len, _) ->   -                AlexSkip input'' len+    AlexSkip input'' len -        (AlexLastAcc k input''' len, _) ->+  (AlexLastAcc k input''' len, _) ->   -                AlexToken input''' len k+    AlexToken input''' len (alex_actions ! k)   -- Push the input through the DFA, remembering the most recent accepting@@ -885,13 +880,13 @@  alex_scan_tkn user orig_input len input s last_acc =   input `seq` -- strict in the input-  let -        new_acc = (check_accs (alex_accept `quickIndex` (I# (s))))+  let+  new_acc = (check_accs (alex_accept `quickIndex` (I# (s))))   in   new_acc `seq`   case alexGetByte input of      Nothing -> (new_acc, input)-     Just (c, new_input) -> +     Just (c, new_input) ->   @@ -900,7 +895,7 @@                 base   = alexIndexInt32OffAddr alex_base s                 offset = (base +# ord_c)                 check  = alexIndexInt16OffAddr alex_check offset-                +                 new_s = if GTE(offset,0#) && EQ(check,ord_c)                           then alexIndexInt16OffAddr alex_table offset                           else alexIndexInt16OffAddr alex_deflt s@@ -919,17 +914,12 @@         check_accs (AlexAccSkip) = AlexLastSkip  input (I# (len)) {-# LINE 198 "templates/GenericTemplate.hs" #-} -data AlexLastAcc a+data AlexLastAcc   = AlexNone-  | AlexLastAcc a !AlexInput !Int-  | AlexLastSkip  !AlexInput !Int--instance Functor AlexLastAcc where-    fmap _ AlexNone = AlexNone-    fmap f (AlexLastAcc x y z) = AlexLastAcc (f x) y z-    fmap _ (AlexLastSkip x y) = AlexLastSkip x y+  | AlexLastAcc !Int !AlexInput !Int+  | AlexLastSkip     !AlexInput !Int -data AlexAcc a user+data AlexAcc user   = AlexAccNone-  | AlexAcc a+  | AlexAcc Int   | AlexAccSkip
language-javascript.cabal view
@@ -1,5 +1,5 @@ Name:                language-javascript-Version:             0.6.0.8+Version:             0.6.0.9 Synopsis:            Parser for JavaScript Description:         Parses Javascript into an Abstract Syntax Tree (AST).  Initially intended as frontend to hjsmin.                      .@@ -13,8 +13,8 @@ Copyright:           (c) 2010-2015 Alan Zimmerman, 2015 Erik de Castro Lopo Category:            Language Build-type:          Simple-homepage:            http://github.com/erikd/language-javascript-bug-reports:         http://github.com/erikd/language-javascript/issues+homepage:            https://github.com/erikd/language-javascript+bug-reports:         https://github.com/erikd/language-javascript/issues Extra-source-files:  README.md                      .ghci                      buildall.sh
src/Language/JavaScript/Parser/AST.hs view
@@ -23,6 +23,7 @@     , JSCommaList (..)     , JSCommaTrailingList (..) +    , binOpEq     , showStripped     ) where @@ -35,6 +36,7 @@  data JSAnnot     = JSAnnot !TokenPosn ![CommentAnnotation] -- ^Annotation: position and comment/whitespace information+    | JSAnnotSpace -- ^A single space character     | JSNoAnnot -- ^No annotation     deriving (Data, Eq, Show, Typeable) @@ -425,3 +427,32 @@ commaIf :: String -> String commaIf "" = "" commaIf xs = ',' : xs+++deAnnot :: JSBinOp -> JSBinOp+deAnnot (JSBinOpAnd _) = JSBinOpAnd JSNoAnnot+deAnnot (JSBinOpBitAnd _) = JSBinOpBitAnd JSNoAnnot+deAnnot (JSBinOpBitOr _) = JSBinOpBitOr JSNoAnnot+deAnnot (JSBinOpBitXor _) = JSBinOpBitXor JSNoAnnot+deAnnot (JSBinOpDivide _) = JSBinOpDivide JSNoAnnot+deAnnot (JSBinOpEq _) = JSBinOpEq JSNoAnnot+deAnnot (JSBinOpGe _) = JSBinOpGe JSNoAnnot+deAnnot (JSBinOpGt _) = JSBinOpGt JSNoAnnot+deAnnot (JSBinOpIn _) = JSBinOpIn JSNoAnnot+deAnnot (JSBinOpInstanceOf _) = JSBinOpInstanceOf JSNoAnnot+deAnnot (JSBinOpLe _) = JSBinOpLe JSNoAnnot+deAnnot (JSBinOpLsh _) = JSBinOpLsh JSNoAnnot+deAnnot (JSBinOpLt _) = JSBinOpLt JSNoAnnot+deAnnot (JSBinOpMinus _) = JSBinOpMinus JSNoAnnot+deAnnot (JSBinOpMod _) = JSBinOpMod JSNoAnnot+deAnnot (JSBinOpNeq _) = JSBinOpNeq JSNoAnnot+deAnnot (JSBinOpOr _) = JSBinOpOr JSNoAnnot+deAnnot (JSBinOpPlus _) = JSBinOpPlus JSNoAnnot+deAnnot (JSBinOpRsh _) = JSBinOpRsh JSNoAnnot+deAnnot (JSBinOpStrictEq _) = JSBinOpStrictEq JSNoAnnot+deAnnot (JSBinOpStrictNeq _) = JSBinOpStrictNeq JSNoAnnot+deAnnot (JSBinOpTimes _) = JSBinOpTimes JSNoAnnot+deAnnot (JSBinOpUrsh _) = JSBinOpUrsh JSNoAnnot++binOpEq :: JSBinOp -> JSBinOp -> Bool+binOpEq a b = deAnnot a == deAnnot b
src/Language/JavaScript/Parser/Grammar5.y view
@@ -136,11 +136,11 @@ -- by the Alex lexer or nothing.  MaybeSemi :: { AST.JSSemi }-MaybeSemi : ';' { AST.JSSemi (AST.JSAnnot (ts $1) (tc $1)) }+MaybeSemi : ';' { AST.JSSemi (mkJSAnnot $1) }          |      { AST.JSSemiAuto }  AutoSemi :: { AST.JSSemi }-AutoSemi : ';'         { AST.JSSemi (AST.JSAnnot (ts $1) (tc $1)) }+AutoSemi : ';'         { AST.JSSemi (mkJSAnnot $1) }          | 'autosemi'  { AST.JSSemiAuto }          |             { AST.JSSemiAuto } @@ -149,207 +149,207 @@ -- Helpers  LParen :: { AST.JSAnnot }-LParen : '(' { AST.JSAnnot (ts $1) (tc $1) }+LParen : '(' { mkJSAnnot $1 }  RParen :: { AST.JSAnnot }-RParen : ')' { AST.JSAnnot (ts $1) (tc $1) }+RParen : ')' { mkJSAnnot $1 }  LBrace :: { AST.JSAnnot }-LBrace : '{' { AST.JSAnnot (ts $1) (tc $1) }+LBrace : '{' { mkJSAnnot $1 }  RBrace :: { AST.JSAnnot }-RBrace : '}' { AST.JSAnnot (ts $1) (tc $1) }+RBrace : '}' { mkJSAnnot $1 }  LSquare :: { AST.JSAnnot }-LSquare : '[' { AST.JSAnnot (ts $1) (tc $1) }+LSquare : '[' { mkJSAnnot $1 }  RSquare :: { AST.JSAnnot }-RSquare : ']' { AST.JSAnnot (ts $1) (tc $1) }+RSquare : ']' { mkJSAnnot $1 }  Comma :: { AST.JSAnnot }-Comma : ',' { AST.JSAnnot (ts $1) (tc $1) }+Comma : ',' { mkJSAnnot $1 }  Colon :: { AST.JSAnnot }-Colon : ':' { AST.JSAnnot (ts $1) (tc $1) }+Colon : ':' { mkJSAnnot $1 }  Semi :: { AST.JSAnnot }-Semi : ';' { AST.JSAnnot (ts $1) (tc $1) }+Semi : ';' { mkJSAnnot $1 }  Dot :: { AST.JSAnnot }-Dot : '.' { AST.JSAnnot (ts $1) (tc $1) }+Dot : '.' { mkJSAnnot $1 }  Increment :: { AST.JSUnaryOp }-Increment : '++' { AST.JSUnaryOpIncr (AST.JSAnnot (ts $1) (tc $1)) }+Increment : '++' { AST.JSUnaryOpIncr (mkJSAnnot $1) }  Decrement :: { AST.JSUnaryOp }-Decrement : '--' { AST.JSUnaryOpDecr (AST.JSAnnot (ts $1) (tc $1)) }+Decrement : '--' { AST.JSUnaryOpDecr (mkJSAnnot $1) }  Delete :: { AST.JSUnaryOp }-Delete : 'delete' { AST.JSUnaryOpDelete (AST.JSAnnot (ts $1) (tc $1)) }+Delete : 'delete' { AST.JSUnaryOpDelete (mkJSAnnot $1) }  Void :: { AST.JSUnaryOp }-Void : 'void' { AST.JSUnaryOpVoid (AST.JSAnnot (ts $1) (tc $1)) }+Void : 'void' { AST.JSUnaryOpVoid (mkJSAnnot $1) }  Typeof :: { AST.JSUnaryOp }-Typeof : 'typeof' { AST.JSUnaryOpTypeof (AST.JSAnnot (ts $1) (tc $1)) }+Typeof : 'typeof' { AST.JSUnaryOpTypeof (mkJSAnnot $1) }  Plus :: { AST.JSBinOp }-Plus : '+' { AST.JSBinOpPlus (AST.JSAnnot (ts $1) (tc $1)) }+Plus : '+' { AST.JSBinOpPlus (mkJSAnnot $1) }  Minus :: { AST.JSBinOp }-Minus : '-' { AST.JSBinOpMinus (AST.JSAnnot (ts $1) (tc $1)) }+Minus : '-' { AST.JSBinOpMinus (mkJSAnnot $1) }  Tilde :: { AST.JSUnaryOp }-Tilde : '~' { AST.JSUnaryOpTilde (AST.JSAnnot (ts $1) (tc $1)) }+Tilde : '~' { AST.JSUnaryOpTilde (mkJSAnnot $1) }  Not :: { AST.JSUnaryOp }-Not : '!' { AST.JSUnaryOpNot (AST.JSAnnot (ts $1) (tc $1)) }+Not : '!' { AST.JSUnaryOpNot (mkJSAnnot $1) }  Mul :: { AST.JSBinOp }-Mul : '*' { AST.JSBinOpTimes (AST.JSAnnot (ts $1) (tc $1)) }+Mul : '*' { AST.JSBinOpTimes (mkJSAnnot $1) }  Div :: { AST.JSBinOp }-Div : '/' { AST.JSBinOpDivide (AST.JSAnnot (ts $1) (tc $1)) }+Div : '/' { AST.JSBinOpDivide (mkJSAnnot $1) }  Mod :: { AST.JSBinOp }-Mod : '%' { AST.JSBinOpMod (AST.JSAnnot (ts $1) (tc $1)) }+Mod : '%' { AST.JSBinOpMod (mkJSAnnot $1) }  Lsh :: { AST.JSBinOp }-Lsh : '<<' { AST.JSBinOpLsh (AST.JSAnnot (ts $1) (tc $1)) }+Lsh : '<<' { AST.JSBinOpLsh (mkJSAnnot $1) }  Rsh :: { AST.JSBinOp }-Rsh : '>>' { AST.JSBinOpRsh (AST.JSAnnot (ts $1) (tc $1)) }+Rsh : '>>' { AST.JSBinOpRsh (mkJSAnnot $1) }  Ursh :: { AST.JSBinOp }-Ursh : '>>>' { AST.JSBinOpUrsh (AST.JSAnnot (ts $1) (tc $1)) }+Ursh : '>>>' { AST.JSBinOpUrsh (mkJSAnnot $1) }  Le :: { AST.JSBinOp }-Le : '<=' { AST.JSBinOpLe (AST.JSAnnot (ts $1) (tc $1)) }+Le : '<=' { AST.JSBinOpLe (mkJSAnnot $1) }  Lt :: { AST.JSBinOp }-Lt : '<' { AST.JSBinOpLt (AST.JSAnnot (ts $1) (tc $1)) }+Lt : '<' { AST.JSBinOpLt (mkJSAnnot $1) }  Ge :: { AST.JSBinOp }-Ge : '>=' { AST.JSBinOpGe (AST.JSAnnot (ts $1) (tc $1)) }+Ge : '>=' { AST.JSBinOpGe (mkJSAnnot $1) }  Gt :: { AST.JSBinOp }-Gt : '>' { AST.JSBinOpGt (AST.JSAnnot (ts $1) (tc $1)) }+Gt : '>' { AST.JSBinOpGt (mkJSAnnot $1) }  In :: { AST.JSBinOp }-In : 'in' { AST.JSBinOpIn (AST.JSAnnot (ts $1) (tc $1)) }+In : 'in' { AST.JSBinOpIn (mkJSAnnot $1) }  Instanceof :: { AST.JSBinOp }-Instanceof : 'instanceof' { AST.JSBinOpInstanceOf (AST.JSAnnot (ts $1) (tc $1)) }+Instanceof : 'instanceof' { AST.JSBinOpInstanceOf (mkJSAnnot $1) }  StrictEq :: { AST.JSBinOp }-StrictEq : '===' { AST.JSBinOpStrictEq (AST.JSAnnot (ts $1) (tc $1)) }+StrictEq : '===' { AST.JSBinOpStrictEq (mkJSAnnot $1) }  Equal :: { AST.JSBinOp }-Equal : '==' { AST.JSBinOpEq (AST.JSAnnot (ts $1) (tc $1)) }+Equal : '==' { AST.JSBinOpEq (mkJSAnnot $1) }  StrictNe :: { AST.JSBinOp }-StrictNe : '!==' { AST.JSBinOpStrictNeq (AST.JSAnnot (ts $1) (tc $1)) }+StrictNe : '!==' { AST.JSBinOpStrictNeq (mkJSAnnot $1) }  Ne :: { AST.JSBinOp }-Ne : '!=' { AST.JSBinOpNeq (AST.JSAnnot (ts $1) (tc $1))}+Ne : '!=' { AST.JSBinOpNeq (mkJSAnnot $1)}  Or :: { AST.JSBinOp }-Or : '||' { AST.JSBinOpOr (AST.JSAnnot (ts $1) (tc $1)) }+Or : '||' { AST.JSBinOpOr (mkJSAnnot $1) }  And :: { AST.JSBinOp }-And : '&&' { AST.JSBinOpAnd (AST.JSAnnot (ts $1) (tc $1)) }+And : '&&' { AST.JSBinOpAnd (mkJSAnnot $1) }  BitOr :: { AST.JSBinOp }-BitOr : '|' { AST.JSBinOpBitOr (AST.JSAnnot (ts $1) (tc $1)) }+BitOr : '|' { AST.JSBinOpBitOr (mkJSAnnot $1) }  BitAnd :: { AST.JSBinOp }-BitAnd : '&' { AST.JSBinOpBitAnd (AST.JSAnnot (ts $1) (tc $1)) }+BitAnd : '&' { AST.JSBinOpBitAnd (mkJSAnnot $1) }  BitXor :: { AST.JSBinOp }-BitXor : '^' { AST.JSBinOpBitXor (AST.JSAnnot (ts $1) (tc $1))}+BitXor : '^' { AST.JSBinOpBitXor (mkJSAnnot $1)}  Hook :: { AST.JSAnnot }-Hook : '?' { AST.JSAnnot (ts $1) (tc $1) }+Hook : '?' { mkJSAnnot $1 }  SimpleAssign :: { AST.JSAnnot }-SimpleAssign : '=' { AST.JSAnnot (ts $1) (tc $1) }+SimpleAssign : '=' { mkJSAnnot $1 }  OpAssign :: { AST.JSAssignOp }-OpAssign : '*='     { AST.JSTimesAssign  (AST.JSAnnot (ts $1) (tc $1)) }-         | '/='     { AST.JSDivideAssign (AST.JSAnnot (ts $1) (tc $1)) }-         | '%='     { AST.JSModAssign    (AST.JSAnnot (ts $1) (tc $1)) }-         | '+='     { AST.JSPlusAssign   (AST.JSAnnot (ts $1) (tc $1)) }-         | '-='     { AST.JSMinusAssign  (AST.JSAnnot (ts $1) (tc $1)) }-         | '<<='    { AST.JSLshAssign    (AST.JSAnnot (ts $1) (tc $1)) }-         | '>>='    { AST.JSRshAssign    (AST.JSAnnot (ts $1) (tc $1)) }-         | '>>>='   { AST.JSUrshAssign   (AST.JSAnnot (ts $1) (tc $1)) }-         | '&='     { AST.JSBwAndAssign  (AST.JSAnnot (ts $1) (tc $1)) }-         | '^='     { AST.JSBwXorAssign  (AST.JSAnnot (ts $1) (tc $1)) }-         | '|='     { AST.JSBwOrAssign   (AST.JSAnnot (ts $1) (tc $1)) }+OpAssign : '*='     { AST.JSTimesAssign  (mkJSAnnot $1) }+         | '/='     { AST.JSDivideAssign (mkJSAnnot $1) }+         | '%='     { AST.JSModAssign    (mkJSAnnot $1) }+         | '+='     { AST.JSPlusAssign   (mkJSAnnot $1) }+         | '-='     { AST.JSMinusAssign  (mkJSAnnot $1) }+         | '<<='    { AST.JSLshAssign    (mkJSAnnot $1) }+         | '>>='    { AST.JSRshAssign    (mkJSAnnot $1) }+         | '>>>='   { AST.JSUrshAssign   (mkJSAnnot $1) }+         | '&='     { AST.JSBwAndAssign  (mkJSAnnot $1) }+         | '^='     { AST.JSBwXorAssign  (mkJSAnnot $1) }+         | '|='     { AST.JSBwOrAssign   (mkJSAnnot $1) }  Var :: { AST.JSAnnot }-Var : 'var' { AST.JSAnnot (ts $1) (tc $1) }+Var : 'var' { mkJSAnnot $1 }  Const :: { AST.JSAnnot }-Const : 'const' { AST.JSAnnot (ts $1) (tc $1) }+Const : 'const' { mkJSAnnot $1 }  If :: { AST.JSAnnot }-If : 'if' { AST.JSAnnot (ts $1) (tc $1) }+If : 'if' { mkJSAnnot $1 }  Else :: { AST.JSAnnot }-Else : 'else' { AST.JSAnnot (ts $1) (tc $1) }+Else : 'else' { mkJSAnnot $1 }  Do :: { AST.JSAnnot }-Do : 'do' { AST.JSAnnot (ts $1) (tc $1) }+Do : 'do' { mkJSAnnot $1 }  While :: { AST.JSAnnot }-While : 'while' { AST.JSAnnot (ts $1) (tc $1) }+While : 'while' { mkJSAnnot $1 }  For :: { AST.JSAnnot }-For : 'for' { AST.JSAnnot (ts $1) (tc $1) }+For : 'for' { mkJSAnnot $1 }  Continue :: { AST.JSAnnot }-Continue : 'continue' { AST.JSAnnot (ts $1) (tc $1) }+Continue : 'continue' { mkJSAnnot $1 }  Break :: { AST.JSAnnot }-Break : 'break' { AST.JSAnnot (ts $1) (tc $1) }+Break : 'break' { mkJSAnnot $1 }  Return :: { AST.JSAnnot }-Return : 'return' { AST.JSAnnot (ts $1) (tc $1) }+Return : 'return' { mkJSAnnot $1 }  With :: { AST.JSAnnot }-With : 'with' { AST.JSAnnot (ts $1) (tc $1) }+With : 'with' { mkJSAnnot $1 }  Switch :: { AST.JSAnnot }-Switch : 'switch' { AST.JSAnnot (ts $1) (tc $1) }+Switch : 'switch' { mkJSAnnot $1 }  Case :: { AST.JSAnnot }-Case : 'case' { AST.JSAnnot (ts $1) (tc $1) }+Case : 'case' { mkJSAnnot $1 }  Default :: { AST.JSAnnot }-Default : 'default' { AST.JSAnnot (ts $1) (tc $1) }+Default : 'default' { mkJSAnnot $1 }  Throw :: { AST.JSAnnot }-Throw : 'throw' { AST.JSAnnot (ts $1) (tc $1) {- 'Throw' -} }+Throw : 'throw' { mkJSAnnot $1 {- 'Throw' -} }  Try :: { AST.JSAnnot }-Try : 'try' { AST.JSAnnot (ts $1) (tc $1) }+Try : 'try' { mkJSAnnot $1 }  CatchL :: { AST.JSAnnot }-CatchL : 'catch' { AST.JSAnnot (ts $1) (tc $1) }+CatchL : 'catch' { mkJSAnnot $1 }  FinallyL :: { AST.JSAnnot }-FinallyL : 'finally' { AST.JSAnnot (ts $1) (tc $1) }+FinallyL : 'finally' { mkJSAnnot $1 }  Function :: { AST.JSAnnot }-Function : 'function' { AST.JSAnnot (ts $1) (tc $1) {- 'Function' -} }+Function : 'function' { mkJSAnnot $1 {- 'Function' -} }  New :: { AST.JSAnnot }-New : 'new' { AST.JSAnnot (ts $1) (tc $1) }+New : 'new' { mkJSAnnot $1 }   Eof :: { AST.JSAnnot }-Eof : 'tail' { AST.JSAnnot (ts $1) (tc $1) {- 'Eof' -} }+Eof : 'tail' { mkJSAnnot $1 {- 'Eof' -} }  -- Literal ::                                                                See 7.8 --         NullLiteral@@ -364,26 +364,26 @@         | RegularExpressionLiteral { $1 }  NullLiteral :: { AST.JSExpression }-NullLiteral : 'null' { AST.JSLiteral (AST.JSAnnot (ts $1) (tc $1)) "null" }+NullLiteral : 'null' { AST.JSLiteral (mkJSAnnot $1) "null" }  BooleanLiteral :: { AST.JSExpression }-BooleanLiteral : 'true'  { AST.JSLiteral (AST.JSAnnot (ts $1) (tc $1)) "true" }-               | 'false' { AST.JSLiteral (AST.JSAnnot (ts $1) (tc $1)) "false" }+BooleanLiteral : 'true'  { AST.JSLiteral (mkJSAnnot $1) "true" }+               | 'false' { AST.JSLiteral (mkJSAnnot $1) "false" }  -- <Numeric Literal> ::= DecimalLiteral --                     | HexIntegerLiteral --                     | OctalLiteral NumericLiteral :: { AST.JSExpression }-NumericLiteral : 'decimal'    { AST.JSDecimal (AST.JSAnnot (ts $1) (tc $1)) (tokenLiteral $1) }-               | 'hexinteger' { AST.JSHexInteger (AST.JSAnnot (ts $1) (tc $1)) (tokenLiteral $1) }-               | 'octal'      { AST.JSOctal (AST.JSAnnot (ts $1) (tc $1)) (tokenLiteral $1) }+NumericLiteral : 'decimal'    { AST.JSDecimal (mkJSAnnot $1) (tokenLiteral $1) }+               | 'hexinteger' { AST.JSHexInteger (mkJSAnnot $1) (tokenLiteral $1) }+               | 'octal'      { AST.JSOctal (mkJSAnnot $1) (tokenLiteral $1) }  StringLiteral :: { AST.JSExpression }-StringLiteral : 'string'  { AST.JSStringLiteral (AST.JSAnnot (ts $1) (tc $1)) (tokenLiteral $1) }+StringLiteral : 'string'  { AST.JSStringLiteral (mkJSAnnot $1) (tokenLiteral $1) }  -- <Regular Expression Literal> ::= RegExp RegularExpressionLiteral :: { AST.JSExpression }-RegularExpressionLiteral : 'regex' { AST.JSRegEx (AST.JSAnnot (ts $1) (tc $1)) (tokenLiteral $1) }+RegularExpressionLiteral : 'regex' { AST.JSRegEx (mkJSAnnot $1) (tokenLiteral $1) }  -- PrimaryExpression :                                                   See 11.1 --        this@@ -393,7 +393,7 @@ --        ObjectLiteral --        ( Expression ) PrimaryExpression :: { AST.JSExpression }-PrimaryExpression : 'this'                   { AST.JSLiteral (AST.JSAnnot (ts $1) (tc $1)) "this" }+PrimaryExpression : 'this'                   { AST.JSLiteral (mkJSAnnot $1) "this" }                   | Identifier               { $1 {- 'PrimaryExpression1' -} }                   | Literal                  { $1 {- 'PrimaryExpression2' -} }                   | ArrayLiteral             { $1 {- 'PrimaryExpression3' -} }@@ -406,47 +406,47 @@ --         IdentifierStart --         IdentifierName IdentifierPart Identifier :: { AST.JSExpression }-Identifier : 'ident' { AST.JSIdentifier (AST.JSAnnot (ts $1) (tc $1)) (tokenLiteral $1) }-           | 'get'   { AST.JSIdentifier (AST.JSAnnot (ts $1) (tc $1)) "get" }-           | 'set'   { AST.JSIdentifier (AST.JSAnnot (ts $1) (tc $1)) "set" }+Identifier : 'ident' { AST.JSIdentifier (mkJSAnnot $1) (tokenLiteral $1) }+           | 'get'   { AST.JSIdentifier (mkJSAnnot $1) "get" }+           | 'set'   { AST.JSIdentifier (mkJSAnnot $1) "set" }  -- TODO: make this include any reserved word too, including future ones IdentifierName :: { AST.JSExpression } IdentifierName : Identifier {$1}-             | 'break'      { AST.JSIdentifier (AST.JSAnnot (ts $1) (tc $1)) "break" }-             | 'case'       { AST.JSIdentifier (AST.JSAnnot (ts $1) (tc $1)) "case" }-             | 'catch'      { AST.JSIdentifier (AST.JSAnnot (ts $1) (tc $1)) "catch" }-             | 'const'      { AST.JSIdentifier (AST.JSAnnot (ts $1) (tc $1)) "const" }-             | 'continue'   { AST.JSIdentifier (AST.JSAnnot (ts $1) (tc $1)) "continue" }-             | 'debugger'   { AST.JSIdentifier (AST.JSAnnot (ts $1) (tc $1)) "debugger" }-             | 'default'    { AST.JSIdentifier (AST.JSAnnot (ts $1) (tc $1)) "default" }-             | 'delete'     { AST.JSIdentifier (AST.JSAnnot (ts $1) (tc $1)) "delete" }-             | 'do'         { AST.JSIdentifier (AST.JSAnnot (ts $1) (tc $1)) "do" }-             | 'else'       { AST.JSIdentifier (AST.JSAnnot (ts $1) (tc $1)) "else" }-             | 'enum'       { AST.JSIdentifier (AST.JSAnnot (ts $1) (tc $1)) "enum" }-             | 'false'      { AST.JSIdentifier (AST.JSAnnot (ts $1) (tc $1)) "false" }-             | 'finally'    { AST.JSIdentifier (AST.JSAnnot (ts $1) (tc $1)) "finally" }-             | 'for'        { AST.JSIdentifier (AST.JSAnnot (ts $1) (tc $1)) "for" }-             | 'function'   { AST.JSIdentifier (AST.JSAnnot (ts $1) (tc $1)) "function" }-             | 'get'        { AST.JSIdentifier (AST.JSAnnot (ts $1) (tc $1)) "get" }-             | 'if'         { AST.JSIdentifier (AST.JSAnnot (ts $1) (tc $1)) "if" }-             | 'in'         { AST.JSIdentifier (AST.JSAnnot (ts $1) (tc $1)) "in" }-             | 'instanceof' { AST.JSIdentifier (AST.JSAnnot (ts $1) (tc $1)) "instanceof" }-             | 'new'        { AST.JSIdentifier (AST.JSAnnot (ts $1) (tc $1)) "new" }-             | 'null'       { AST.JSIdentifier (AST.JSAnnot (ts $1) (tc $1)) "null" }-             | 'return'     { AST.JSIdentifier (AST.JSAnnot (ts $1) (tc $1)) "return" }-             | 'set'        { AST.JSIdentifier (AST.JSAnnot (ts $1) (tc $1)) "set" }-             | 'switch'     { AST.JSIdentifier (AST.JSAnnot (ts $1) (tc $1)) "switch" }-             | 'this'       { AST.JSIdentifier (AST.JSAnnot (ts $1) (tc $1)) "this" }-             | 'throw'      { AST.JSIdentifier (AST.JSAnnot (ts $1) (tc $1)) "throw" }-             | 'true'       { AST.JSIdentifier (AST.JSAnnot (ts $1) (tc $1)) "true" }-             | 'try'        { AST.JSIdentifier (AST.JSAnnot (ts $1) (tc $1)) "try" }-             | 'typeof'     { AST.JSIdentifier (AST.JSAnnot (ts $1) (tc $1)) "typeof" }-             | 'var'        { AST.JSIdentifier (AST.JSAnnot (ts $1) (tc $1)) "var" }-             | 'void'       { AST.JSIdentifier (AST.JSAnnot (ts $1) (tc $1)) "void" }-             | 'while'      { AST.JSIdentifier (AST.JSAnnot (ts $1) (tc $1)) "while" }-             | 'with'       { AST.JSIdentifier (AST.JSAnnot (ts $1) (tc $1)) "with" }-             | 'future'     { AST.JSIdentifier (AST.JSAnnot (ts $1) (tc $1)) (tokenLiteral $1) }+             | 'break'      { AST.JSIdentifier (mkJSAnnot $1) "break" }+             | 'case'       { AST.JSIdentifier (mkJSAnnot $1) "case" }+             | 'catch'      { AST.JSIdentifier (mkJSAnnot $1) "catch" }+             | 'const'      { AST.JSIdentifier (mkJSAnnot $1) "const" }+             | 'continue'   { AST.JSIdentifier (mkJSAnnot $1) "continue" }+             | 'debugger'   { AST.JSIdentifier (mkJSAnnot $1) "debugger" }+             | 'default'    { AST.JSIdentifier (mkJSAnnot $1) "default" }+             | 'delete'     { AST.JSIdentifier (mkJSAnnot $1) "delete" }+             | 'do'         { AST.JSIdentifier (mkJSAnnot $1) "do" }+             | 'else'       { AST.JSIdentifier (mkJSAnnot $1) "else" }+             | 'enum'       { AST.JSIdentifier (mkJSAnnot $1) "enum" }+             | 'false'      { AST.JSIdentifier (mkJSAnnot $1) "false" }+             | 'finally'    { AST.JSIdentifier (mkJSAnnot $1) "finally" }+             | 'for'        { AST.JSIdentifier (mkJSAnnot $1) "for" }+             | 'function'   { AST.JSIdentifier (mkJSAnnot $1) "function" }+             | 'get'        { AST.JSIdentifier (mkJSAnnot $1) "get" }+             | 'if'         { AST.JSIdentifier (mkJSAnnot $1) "if" }+             | 'in'         { AST.JSIdentifier (mkJSAnnot $1) "in" }+             | 'instanceof' { AST.JSIdentifier (mkJSAnnot $1) "instanceof" }+             | 'new'        { AST.JSIdentifier (mkJSAnnot $1) "new" }+             | 'null'       { AST.JSIdentifier (mkJSAnnot $1) "null" }+             | 'return'     { AST.JSIdentifier (mkJSAnnot $1) "return" }+             | 'set'        { AST.JSIdentifier (mkJSAnnot $1) "set" }+             | 'switch'     { AST.JSIdentifier (mkJSAnnot $1) "switch" }+             | 'this'       { AST.JSIdentifier (mkJSAnnot $1) "this" }+             | 'throw'      { AST.JSIdentifier (mkJSAnnot $1) "throw" }+             | 'true'       { AST.JSIdentifier (mkJSAnnot $1) "true" }+             | 'try'        { AST.JSIdentifier (mkJSAnnot $1) "try" }+             | 'typeof'     { AST.JSIdentifier (mkJSAnnot $1) "typeof" }+             | 'var'        { AST.JSIdentifier (mkJSAnnot $1) "var" }+             | 'void'       { AST.JSIdentifier (mkJSAnnot $1) "void" }+             | 'while'      { AST.JSIdentifier (mkJSAnnot $1) "while" }+             | 'with'       { AST.JSIdentifier (mkJSAnnot $1) "with" }+             | 'future'     { AST.JSIdentifier (mkJSAnnot $1) (tokenLiteral $1) }   @@ -506,10 +506,10 @@ PropertyAssignment : PropertyName Colon AssignmentExpression { AST.JSPropertyNameandValue $1 $2 [$3] }                    -- Should be "get" in next, but is not a Token                    | 'get' PropertyName LParen RParen FunctionBody-                       { AST.JSPropertyAccessor (AST.JSAccessorGet (AST.JSAnnot (ts $1) (tc $1))) $2 $3 [] $4 $5 }+                       { AST.JSPropertyAccessor (AST.JSAccessorGet (mkJSAnnot $1)) $2 $3 [] $4 $5 }                    -- Should be "set" in next, but is not a Token                    | 'set' PropertyName LParen PropertySetParameterList RParen FunctionBody-                       { AST.JSPropertyAccessor (AST.JSAccessorSet (AST.JSAnnot (ts $1) (tc $1))) $2 $3 [$4] $5 $6 }+                       { AST.JSPropertyAccessor (AST.JSAccessorSet (mkJSAnnot $1)) $2 $3 [$4] $5 $6 }  -- PropertyName :                                                        See 11.1.5 --        IdentifierName@@ -1067,7 +1067,7 @@ -- DebuggerStatement :                                                        See 12.15 --        debugger ; DebuggerStatement :: { AST.JSStatement }-DebuggerStatement : 'debugger' MaybeSemi { AST.JSExpressionStatement (AST.JSLiteral (AST.JSAnnot (ts $1) (tc $1)) "debugger") $2 {- 'DebuggerStatement' -} }+DebuggerStatement : 'debugger' MaybeSemi { AST.JSExpressionStatement (AST.JSLiteral (mkJSAnnot $1) "debugger") $2 {- 'DebuggerStatement' -} }  -- FunctionDeclaration :                                                      See clause 13 --        function Identifier ( FormalParameterListopt ) { FunctionBody }@@ -1152,22 +1152,11 @@ mkJSMemberNew :: AST.JSAnnot -> AST.JSExpression -> JSArguments -> AST.JSExpression mkJSMemberNew a e (JSArguments l arglist r) = AST.JSMemberNew a e l arglist r - parseError :: Token -> Alex a parseError = alexError . show --- ----------------------------------ts :: Token -> TokenPosn-ts = tokenSpan---- --------------------------------tc :: Token -> [CommentAnnotation]-tc = tokenComment--mtc :: [Token] -> [CommentAnnotation]-mtc xs = concatMap tokenComment xs+mkJSAnnot :: Token -> AST.JSAnnot+mkJSAnnot a = AST.JSAnnot (tokenSpan a) (tokenComment a)  -- --------------------------------------------------------------------- -- | mkUnary : The parser detects '+' and '-' as the binary version of these
src/Language/JavaScript/Parser/Lexer.x view
@@ -420,7 +420,7 @@      -- If the token is a WsToken and it contains a newline, convert it to an     -- AutoSemiToken and call the continuation, otherwise, just lexLoop.-    maybeAutoSemi ws@(WsToken sp tl cmt) =+    maybeAutoSemi (WsToken sp tl cmt) =         if any (== '\n') tl             then cont $ AutoSemiToken sp tl cmt             else lexLoop@@ -428,7 +428,7 @@   toCommentAnnotation :: [Token] -> [CommentAnnotation]-toCommentAnnotation [] = [NoComment]+toCommentAnnotation [] = [] toCommentAnnotation xs =     reverse $ map go xs   where
src/Language/JavaScript/Process/Minify.hs view
@@ -145,7 +145,7 @@     fix a (JSCallExpressionDot    ex _ xs)            = JSCallExpressionDot (fix a ex) emptyAnnot (fixEmpty xs)     fix a (JSCallExpressionSquare ex _ xs _)          = JSCallExpressionSquare (fix a ex) emptyAnnot (fixEmpty xs) emptyAnnot     fix a (JSCommaExpression      le _ re)            = JSCommaExpression (fix a le) emptyAnnot (fixEmpty re)-    fix a (JSExpressionBinary     lhs op rhs)         = fixBinOpExpression a op (fixEmpty lhs) (fixEmpty rhs)+    fix a (JSExpressionBinary     lhs op rhs)         = fixBinOpExpression a op lhs rhs     fix _ (JSExpressionParen      _ e _)              = JSExpressionParen emptyAnnot (fixEmpty e) emptyAnnot     fix a (JSExpressionPostfix    e op)               = JSExpressionPostfix (fix a e) (fixEmpty op)     fix a (JSExpressionTernary    cond _ v1 _ v2)     = JSExpressionTernary (fix a cond) emptyAnnot (fixEmpty v1) emptyAnnot (fixEmpty v2)@@ -165,24 +165,43 @@ fixVarList JSLNil = JSLNil  fixBinOpExpression :: JSAnnot -> JSBinOp -> JSExpression -> JSExpression -> JSExpression-fixBinOpExpression _ (JSBinOpPlus _) (JSStringLiteral _ s1) (JSStringLiteral _ s2) = stringLitConcat s1 s2+fixBinOpExpression a (JSBinOpPlus _) lhs rhs = fixBinOpPlus a lhs rhs fixBinOpExpression a (JSBinOpIn _) lhs rhs = JSExpressionBinary (fix a lhs) (JSBinOpIn spaceAnnot) (fix spaceAnnot rhs) fixBinOpExpression a (JSBinOpInstanceOf _) lhs rhs = JSExpressionBinary (fix a lhs) (JSBinOpInstanceOf spaceAnnot) (fix spaceAnnot rhs) fixBinOpExpression a op lhs rhs = JSExpressionBinary (fix a lhs) (fixEmpty op) (fixEmpty rhs) +fixBinOpPlus :: JSAnnot -> JSExpression -> JSExpression -> JSExpression+fixBinOpPlus a lhs rhs =+    case (fix a lhs, fixEmpty rhs) of+        (JSStringLiteral _ s1, JSStringLiteral _ s2) -> stringLitConcat (normalizeToSQ s1) (normalizeToSQ s2)+        (nlhs, nrhs) -> JSExpressionBinary nlhs (JSBinOpPlus emptyAnnot) nrhs+ -- Concatenate two JSStringLiterals. Since the strings will include the string -- terminators (either single or double quotes) we use whatever terminator is--- used bu the first string.+-- used by the first string. stringLitConcat :: String -> String -> JSExpression stringLitConcat xs [] = JSStringLiteral emptyAnnot xs stringLitConcat [] ys = JSStringLiteral emptyAnnot ys-stringLitConcat xall@(q:_) yall@(_:yss) =-    let ys = init yss in-    if q `notElem` ys-        then JSStringLiteral emptyAnnot (init xall ++ ys ++ [q])-        else -- TODO: Correct, but can we do better?-            JSExpressionBinary (JSStringLiteral emptyAnnot xall) (JSBinOpPlus emptyAnnot) (JSStringLiteral emptyAnnot yall)+stringLitConcat xall (_:yss) =+    JSStringLiteral emptyAnnot (init xall ++ init yss ++ "'") +-- Normalize a String. If its single quoted, just return it and its double quoted+-- convert it to single quoted.+normalizeToSQ :: String -> String+normalizeToSQ str =+    case str of+        [] -> []+        ('\'' : _) -> str+        ('"' : xs) -> '\'' : convertSQ xs+        other -> other -- Should not happen.+  where+    convertSQ [] = []+    convertSQ [_] = "'"+    convertSQ ('\'':xs) = '\\' : '\'' : convertSQ xs+    convertSQ ('\\':'\"':xs) = '"' : convertSQ xs+    convertSQ (x:xs) = x : convertSQ xs++ instance MinifyJS JSBinOp where     fix _ (JSBinOpAnd        _) = JSBinOpAnd emptyAnnot     fix _ (JSBinOpBitAnd     _) = JSBinOpBitAnd emptyAnnot@@ -319,7 +338,7 @@ spaceAnnot = JSAnnot tokenPosnEmpty [WhiteSpace tokenPosnEmpty " "]  emptyAnnot :: JSAnnot-emptyAnnot = JSAnnot tokenPosnEmpty []+emptyAnnot = JSNoAnnot  newlineAnnot :: JSAnnot newlineAnnot = JSAnnot tokenPosnEmpty [WhiteSpace tokenPosnEmpty "\n"]