diff options
Diffstat (limited to 'src/GF/JavaScript/ParJS.y')
| -rw-r--r-- | src/GF/JavaScript/ParJS.y | 225 |
1 files changed, 0 insertions, 225 deletions
diff --git a/src/GF/JavaScript/ParJS.y b/src/GF/JavaScript/ParJS.y deleted file mode 100644 index bf0614757..000000000 --- a/src/GF/JavaScript/ParJS.y +++ /dev/null @@ -1,225 +0,0 @@ --- This Happy file was machine-generated by the BNF converter -{ -{-# OPTIONS -fno-warn-incomplete-patterns -fno-warn-overlapping-patterns #-} -module GF.JavaScript.ParJS where -import GF.JavaScript.AbsJS -import GF.JavaScript.LexJS -import GF.Data.ErrM -} - -%name pProgram Program - --- no lexer declaration -%monad { Err } { thenM } { returnM } -%tokentype { Token } - -%token - '(' { PT _ (TS "(") } - ')' { PT _ (TS ")") } - '{' { PT _ (TS "{") } - '}' { PT _ (TS "}") } - ',' { PT _ (TS ",") } - ';' { PT _ (TS ";") } - '=' { PT _ (TS "=") } - '.' { PT _ (TS ".") } - '[' { PT _ (TS "[") } - ']' { PT _ (TS "]") } - ':' { PT _ (TS ":") } - 'false' { PT _ (TS "false") } - 'function' { PT _ (TS "function") } - 'new' { PT _ (TS "new") } - 'null' { PT _ (TS "null") } - 'return' { PT _ (TS "return") } - 'this' { PT _ (TS "this") } - 'true' { PT _ (TS "true") } - 'var' { PT _ (TS "var") } - -L_ident { PT _ (TV $$) } -L_integ { PT _ (TI $$) } -L_doubl { PT _ (TD $$) } -L_quoted { PT _ (TL $$) } -L_err { _ } - - -%% - -Ident :: { Ident } : L_ident { Ident $1 } -Integer :: { Integer } : L_integ { (read $1) :: Integer } -Double :: { Double } : L_doubl { (read $1) :: Double } -String :: { String } : L_quoted { $1 } - -Program :: { Program } -Program : ListElement { Program (reverse $1) } - - -Element :: { Element } -Element : 'function' Ident '(' ListIdent ')' '{' ListStmt '}' { FunDef $2 $4 (reverse $7) } - | Stmt { ElStmt $1 } - - -ListElement :: { [Element] } -ListElement : {- empty -} { [] } - | ListElement Element { flip (:) $1 $2 } - - -ListIdent :: { [Ident] } -ListIdent : {- empty -} { [] } - | Ident { (:[]) $1 } - | Ident ',' ListIdent { (:) $1 $3 } - - -Stmt :: { Stmt } -Stmt : '{' ListStmt '}' { SCompound (reverse $2) } - | 'return' ';' { SReturnVoid } - | 'return' Expr ';' { SReturn $2 } - | DeclOrExpr ';' { SDeclOrExpr $1 } - - -ListStmt :: { [Stmt] } -ListStmt : {- empty -} { [] } - | ListStmt Stmt { flip (:) $1 $2 } - - -DeclOrExpr :: { DeclOrExpr } -DeclOrExpr : 'var' ListDeclVar { Decl $2 } - | Expr1 { DExpr $1 } - - -DeclVar :: { DeclVar } -DeclVar : Ident { DVar $1 } - | Ident '=' Expr { DInit $1 $3 } - - -ListDeclVar :: { [DeclVar] } -ListDeclVar : {- empty -} { [] } - | DeclVar { (:[]) $1 } - | DeclVar ',' ListDeclVar { (:) $1 $3 } - - -Expr13 :: { Expr } -Expr13 : Expr14 '=' Expr13 { EAssign $1 $3 } - | Expr14 { $1 } - - -Expr14 :: { Expr } -Expr14 : 'new' Ident '(' ListExpr ')' { ENew $2 $4 } - | Expr15 { $1 } - - -Expr15 :: { Expr } -Expr15 : Expr15 '.' Ident { EMember $1 $3 } - | Expr15 '[' Expr ']' { EIndex $1 $3 } - | Expr15 '(' ListExpr ')' { ECall $1 $3 } - | Expr16 { $1 } - - -Expr16 :: { Expr } -Expr16 : Ident { EVar $1 } - | Integer { EInt $1 } - | Double { EDbl $1 } - | String { EStr $1 } - | 'true' { ETrue } - | 'false' { EFalse } - | 'null' { ENull } - | 'this' { EThis } - | 'function' '(' ListIdent ')' '{' ListStmt '}' { EFun $3 (reverse $6) } - | '[' ListExpr ']' { EArray $2 } - | '{' ListProperty '}' { EObj $2 } - | '(' Expr ',' ListExpr ')' { eseq1_ $2 $4 } - | '(' Expr ')' { $2 } - - -ListExpr :: { [Expr] } -ListExpr : {- empty -} { [] } - | Expr { (:[]) $1 } - | Expr ',' ListExpr { (:) $1 $3 } - - -Expr :: { Expr } -Expr : Expr1 { $1 } - - -Expr1 :: { Expr } -Expr1 : Expr2 { $1 } - - -Expr2 :: { Expr } -Expr2 : Expr3 { $1 } - - -Expr3 :: { Expr } -Expr3 : Expr4 { $1 } - - -Expr4 :: { Expr } -Expr4 : Expr5 { $1 } - - -Expr5 :: { Expr } -Expr5 : Expr6 { $1 } - - -Expr6 :: { Expr } -Expr6 : Expr7 { $1 } - - -Expr7 :: { Expr } -Expr7 : Expr8 { $1 } - - -Expr8 :: { Expr } -Expr8 : Expr9 { $1 } - - -Expr9 :: { Expr } -Expr9 : Expr10 { $1 } - - -Expr10 :: { Expr } -Expr10 : Expr11 { $1 } - - -Expr11 :: { Expr } -Expr11 : Expr12 { $1 } - - -Expr12 :: { Expr } -Expr12 : Expr13 { $1 } - - -Property :: { Property } -Property : PropertyName ':' Expr { Prop $1 $3 } - - -ListProperty :: { [Property] } -ListProperty : {- empty -} { [] } - | Property { (:[]) $1 } - | Property ',' ListProperty { (:) $1 $3 } - - -PropertyName :: { PropertyName } -PropertyName : Ident { IdentPropName $1 } - | String { StringPropName $1 } - - - -{ - -returnM :: a -> Err a -returnM = return - -thenM :: Err a -> (a -> Err b) -> Err b -thenM = (>>=) - -happyError :: [Token] -> Err a -happyError ts = - Bad $ "syntax error at " ++ tokenPos ts ++ - case ts of - [] -> [] - [Err _] -> " due to lexer error" - _ -> " before " ++ unwords (map prToken (take 4 ts)) - -myLexer = tokens -eseq1_ x_ xs_ = ESeq (x_ : xs_) -} - |
