diff options
| author | aarne <aarne@cs.chalmers.se> | 2008-06-25 16:43:48 +0000 |
|---|---|---|
| committer | aarne <aarne@cs.chalmers.se> | 2008-06-25 16:43:48 +0000 |
| commit | b96b36f43de3e2f8b58d5f539daa6f6d47f25870 (patch) | |
| tree | 0992334be13cec6538a1dea22fbbf26ad6bdf224 /src/GF/Canon/ParGFC.y | |
| parent | fe367412e0aeb4ad5c02de68e6eca382e0f96984 (diff) | |
removed src for 2.9
Diffstat (limited to 'src/GF/Canon/ParGFC.y')
| -rw-r--r-- | src/GF/Canon/ParGFC.y | 385 |
1 files changed, 0 insertions, 385 deletions
diff --git a/src/GF/Canon/ParGFC.y b/src/GF/Canon/ParGFC.y deleted file mode 100644 index 6432a8696..000000000 --- a/src/GF/Canon/ParGFC.y +++ /dev/null @@ -1,385 +0,0 @@ --- This Happy file was machine-generated by the BNF converter -{ -module GF.Canon.ParGFC where -import GF.Canon.AbsGFC -import GF.Canon.LexGFC -import GF.Data.ErrM -- H -import GF.Infra.Ident -- H -} - -%name pCanon Canon -%name pLine Line - --- 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 ".") } - '(' { PT _ (TS "(") } - ')' { PT _ (TS ")") } - '_' { PT _ (TS "_") } - '<' { PT _ (TS "<") } - '>' { PT _ (TS ">") } - '$' { PT _ (TS "$") } - '?' { PT _ (TS "?") } - '=>' { PT _ (TS "=>") } - '!' { PT _ (TS "!") } - '++' { PT _ (TS "++") } - '/' { PT _ (TS "/") } - '@' { PT _ (TS "@") } - '+' { PT _ (TS "+") } - '|' { PT _ (TS "|") } - ',' { PT _ (TS ",") } - 'Ints' { PT _ (TS "Ints") } - 'Str' { PT _ (TS "Str") } - 'Type' { PT _ (TS "Type") } - 'abstract' { PT _ (TS "abstract") } - 'cat' { PT _ (TS "cat") } - 'concrete' { PT _ (TS "concrete") } - 'data' { PT _ (TS "data") } - 'flags' { PT _ (TS "flags") } - 'fun' { PT _ (TS "fun") } - 'grammar' { PT _ (TS "grammar") } - 'in' { PT _ (TS "in") } - 'lin' { PT _ (TS "lin") } - 'lincat' { PT _ (TS "lincat") } - 'of' { PT _ (TS "of") } - 'open' { PT _ (TS "open") } - 'oper' { PT _ (TS "oper") } - 'param' { PT _ (TS "param") } - 'pre' { PT _ (TS "pre") } - 'resource' { PT _ (TS "resource") } - 'table' { PT _ (TS "table") } - 'transfer' { PT _ (TS "transfer") } - 'variants' { PT _ (TS "variants") } - -L_ident { PT _ (TV $$) } -L_quoted { PT _ (TL $$) } -L_integ { PT _ (TI $$) } -L_err { _ } - - -%% - -Ident :: { Ident } : L_ident { identC $1 } -- H -String :: { String } : L_quoted { $1 } -Integer :: { Integer } : L_integ { (read $1) :: Integer } - -Canon :: { Canon } -Canon : 'grammar' ListIdent 'of' Ident ';' ListModule { MGr $2 $4 (reverse $6) } - | ListModule { Gr (reverse $1) } - - -Line :: { Line } -Line : 'grammar' ListIdent 'of' Ident ';' { LMulti $2 $4 } - | ModType '=' Extend Open '{' { LHeader $1 $3 $4 } - | Flag ';' { LFlag $1 } - | Def ';' { LDef $1 } - | '}' { LEnd } - - -Module :: { Module } -Module : ModType '=' Extend Open '{' ListFlag ListDef '}' { Mod $1 $3 $4 (reverse $6) (reverse $7) } - - -ModType :: { ModType } -ModType : 'abstract' Ident { MTAbs $2 } - | 'concrete' Ident 'of' Ident { MTCnc $2 $4 } - | 'resource' Ident { MTRes $2 } - | 'transfer' Ident ':' Ident '->' Ident { MTTrans $2 $4 $6 } - - -ListModule :: { [Module] } -ListModule : {- empty -} { [] } - | ListModule Module { flip (:) $1 $2 } - - -Extend :: { Extend } -Extend : ListIdent '**' { Ext $1 } - | {- empty -} { NoExt } - - -Open :: { Open } -Open : 'open' ListIdent 'in' { Opens $2 } - | {- empty -} { NoOpens } - - -Flag :: { Flag } -Flag : 'flags' Ident '=' Ident { Flg $2 $4 } - - -Def :: { Def } -Def : 'cat' Ident '[' ListDecl ']' '=' ListCIdent { AbsDCat $2 $4 (reverse $7) } - | 'fun' Ident ':' Exp '=' Exp { AbsDFun $2 $4 $6 } - | 'transfer' Ident '=' Exp { AbsDTrans $2 $4 } - | 'param' Ident '=' ListParDef { ResDPar $2 $4 } - | 'oper' Ident ':' CType '=' Term { ResDOper $2 $4 $6 } - | 'lincat' Ident '=' CType '=' Term ';' Term { CncDCat $2 $4 $6 $8 } - | 'lin' Ident ':' CIdent '=' '\\' ListArgVar '->' Term ';' Term { CncDFun $2 $4 $7 $9 $11 } - | Ident Status 'in' Ident { AnyDInd $1 $2 $4 } - - -ParDef :: { ParDef } -ParDef : Ident ListCType { ParD $1 (reverse $2) } - - -Status :: { Status } -Status : 'data' { Canon } - | {- empty -} { NonCan } - - -CIdent :: { CIdent } -CIdent : Ident '.' Ident { CIQ $1 $3 } - - -Exp1 :: { Exp } -Exp1 : Exp1 Exp2 { EApp $1 $2 } - | Exp2 { $1 } - - -Exp :: { Exp } -Exp : '(' Ident ':' Exp ')' '->' Exp { EProd $2 $4 $7 } - | '\\' Ident '->' Exp { EAbs $2 $4 } - | '{' ListEquation '}' { EEq (reverse $2) } - | Exp1 { $1 } - - -Exp2 :: { Exp } -Exp2 : Atom { EAtom $1 } - | 'data' { EData } - | '(' Exp ')' { $2 } - - -Sort :: { Sort } -Sort : 'Type' { SType } - - -Equation :: { Equation } -Equation : ListAPatt '->' Exp { Equ (reverse $1) $3 } - - -APatt :: { APatt } -APatt : '(' CIdent ListAPatt ')' { APC $2 (reverse $3) } - | Ident { APV $1 } - | String { APS $1 } - | Integer { API $1 } - | '_' { APW } - - -ListDecl :: { [Decl] } -ListDecl : {- empty -} { [] } - | Decl { (:[]) $1 } - | Decl ';' ListDecl { (:) $1 $3 } - - -ListAPatt :: { [APatt] } -ListAPatt : {- empty -} { [] } - | ListAPatt APatt { flip (:) $1 $2 } - - -ListEquation :: { [Equation] } -ListEquation : {- empty -} { [] } - | ListEquation Equation ';' { flip (:) $1 $2 } - - -Atom :: { Atom } -Atom : CIdent { AC $1 } - | '<' CIdent '>' { AD $2 } - | '$' Ident { AV $2 } - | '?' Integer { AM $2 } - | String { AS $1 } - | Integer { AI $1 } - | Sort { AT $1 } - - -Decl :: { Decl } -Decl : Ident ':' Exp { Decl $1 $3 } - - -CType :: { CType } -CType : '{' ListLabelling '}' { RecType $2 } - | '(' CType '=>' CType ')' { Table $2 $4 } - | CIdent { Cn $1 } - | 'Str' { TStr } - | 'Ints' Integer { TInts $2 } - - -Labelling :: { Labelling } -Labelling : Label ':' CType { Lbg $1 $3 } - - -Term2 :: { Term } -Term2 : ArgVar { Arg $1 } - | CIdent { I $1 } - | '<' CIdent ListTerm2 '>' { Par $2 (reverse $3) } - | '$' Ident { LI $2 } - | '{' ListAssign '}' { R $2 } - | Integer { EInt $1 } - | Tokn { K $1 } - | '[' ']' { E } - | '(' Term ')' { $2 } - - -Term1 :: { Term } -Term1 : Term2 '.' Label { P $1 $3 } - | 'table' CType '{' ListCase '}' { T $2 $4 } - | 'table' CType '[' ListTerm2 ']' { V $2 (reverse $4) } - | Term1 '!' Term2 { S $1 $3 } - | 'variants' '{' ListTerm2 '}' { FV (reverse $3) } - | Term2 { $1 } - - -Term :: { Term } -Term : Term '++' Term1 { C $1 $3 } - | Term1 { $1 } - - -Tokn :: { Tokn } -Tokn : String { KS $1 } - | '[' 'pre' ListString '{' ListVariant '}' ']' { KP (reverse $3) $5 } - - -Assign :: { Assign } -Assign : Label '=' Term { Ass $1 $3 } - - -Case :: { Case } -Case : ListPatt '=>' Term { Cas (reverse $1) $3 } - - -Variant :: { Variant } -Variant : ListString '/' ListString { Var (reverse $1) (reverse $3) } - - -Label :: { Label } -Label : Ident { L $1 } - | '$' Integer { LV $2 } - - -ArgVar :: { ArgVar } -ArgVar : Ident '@' Integer { A $1 $3 } - | Ident '+' Integer '@' Integer { AB $1 $3 $5 } - - -Patt :: { Patt } -Patt : '(' CIdent ListPatt ')' { PC $2 (reverse $3) } - | Ident { PV $1 } - | '_' { PW } - | '{' ListPattAssign '}' { PR $2 } - | Integer { PI $1 } - - -PattAssign :: { PattAssign } -PattAssign : Label '=' Patt { PAss $1 $3 } - - -ListFlag :: { [Flag] } -ListFlag : {- empty -} { [] } - | ListFlag Flag ';' { flip (:) $1 $2 } - - -ListDef :: { [Def] } -ListDef : {- empty -} { [] } - | ListDef Def ';' { flip (:) $1 $2 } - - -ListParDef :: { [ParDef] } -ListParDef : {- empty -} { [] } - | ParDef { (:[]) $1 } - | ParDef '|' ListParDef { (:) $1 $3 } - - -ListCType :: { [CType] } -ListCType : {- empty -} { [] } - | ListCType CType { flip (:) $1 $2 } - - -ListCIdent :: { [CIdent] } -ListCIdent : {- empty -} { [] } - | ListCIdent CIdent { flip (:) $1 $2 } - - -ListAssign :: { [Assign] } -ListAssign : {- empty -} { [] } - | Assign { (:[]) $1 } - | Assign ';' ListAssign { (:) $1 $3 } - - -ListArgVar :: { [ArgVar] } -ListArgVar : {- empty -} { [] } - | ArgVar { (:[]) $1 } - | ArgVar ',' ListArgVar { (:) $1 $3 } - - -ListLabelling :: { [Labelling] } -ListLabelling : {- empty -} { [] } - | Labelling { (:[]) $1 } - | Labelling ';' ListLabelling { (:) $1 $3 } - - -ListCase :: { [Case] } -ListCase : {- empty -} { [] } - | Case { (:[]) $1 } - | Case ';' ListCase { (:) $1 $3 } - - -ListTerm2 :: { [Term] } -ListTerm2 : {- empty -} { [] } - | ListTerm2 Term2 { flip (:) $1 $2 } - - -ListString :: { [String] } -ListString : {- empty -} { [] } - | ListString String { flip (:) $1 $2 } - - -ListVariant :: { [Variant] } -ListVariant : {- empty -} { [] } - | Variant { (:[]) $1 } - | Variant ';' ListVariant { (:) $1 $3 } - - -ListPattAssign :: { [PattAssign] } -ListPattAssign : {- empty -} { [] } - | PattAssign { (:[]) $1 } - | PattAssign ';' ListPattAssign { (:) $1 $3 } - - -ListPatt :: { [Patt] } -ListPatt : {- empty -} { [] } - | ListPatt Patt { flip (:) $1 $2 } - - -ListIdent :: { [Ident] } -ListIdent : {- empty -} { [] } - | Ident { (:[]) $1 } - | Ident ',' ListIdent { (:) $1 $3 } - - - -{ - -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 ++ if null ts then [] else (" before " ++ unwords (map prToken (take 4 ts))) - -myLexer = tokens -} - |
