// Implementation file for parser generated by fsyacc
module CPar
#nowarn "64";; // turn off warnings that type variables used in production annotations are instantiated to concrete type
open Microsoft.FSharp.Text.Lexing
open Microsoft.FSharp.Text.Parsing.ParseHelpers
# 1 "CPar.fsy"

(*	File MicroC/CPar.fsy
	Parser specification for micro-C, a small imperative language
	sestoft@itu.dk * 2009-09-29
	No (real) shift/reduce conflicts thanks to Niels Kokholm.
*)

open MicroWac.Absyn

let compose1 f (g, s) = ((fun x -> g(f(x))), s)
let nl = CstI 10

let exportFundec = function
  | Fundec(_, typ, name, pardecs, block) -> Fundec(true, typ, name, pardecs, block)
  | td -> failwith (sprintf "can only export function declarations, not %A" td)

let importFunsig = function
  | Funsig(_, typ, name, pardecs) -> Funsig(true, typ, name, pardecs)
  | td -> failwith (sprintf "can only import function signatures, not %A" td)

# 27 "CPar.fs"
// This type is the type of tokens accepted by the parser
type token = 
  | EOF
  | LPAR
  | RPAR
  | LBRACE
  | RBRACE
  | LBRACK
  | RBRACK
  | SEMI
  | COMMA
  | ASSIGN
  | AMP
  | NOT
  | SEQOR
  | SEQAND
  | EQ
  | NE
  | GT
  | LT
  | GE
  | LE
  | PLUS
  | MINUS
  | TIMES
  | DIV
  | MOD
  | EXPORT
  | IMPORT
  | CHAR
  | ELSE
  | IF
  | INT
  | NULL
  | PRINT
  | PRINTLN
  | RETURN
  | VOID
  | WHILE
  | CSTSTRING of (string)
  | NAME of (string)
  | CSTINT of (int)
  | CSTBOOL of (int)
// This type is used to give symbolic names to token indexes, useful for error messages
type tokenId = 
    | TOKEN_EOF
    | TOKEN_LPAR
    | TOKEN_RPAR
    | TOKEN_LBRACE
    | TOKEN_RBRACE
    | TOKEN_LBRACK
    | TOKEN_RBRACK
    | TOKEN_SEMI
    | TOKEN_COMMA
    | TOKEN_ASSIGN
    | TOKEN_AMP
    | TOKEN_NOT
    | TOKEN_SEQOR
    | TOKEN_SEQAND
    | TOKEN_EQ
    | TOKEN_NE
    | TOKEN_GT
    | TOKEN_LT
    | TOKEN_GE
    | TOKEN_LE
    | TOKEN_PLUS
    | TOKEN_MINUS
    | TOKEN_TIMES
    | TOKEN_DIV
    | TOKEN_MOD
    | TOKEN_EXPORT
    | TOKEN_IMPORT
    | TOKEN_CHAR
    | TOKEN_ELSE
    | TOKEN_IF
    | TOKEN_INT
    | TOKEN_NULL
    | TOKEN_PRINT
    | TOKEN_PRINTLN
    | TOKEN_RETURN
    | TOKEN_VOID
    | TOKEN_WHILE
    | TOKEN_CSTSTRING
    | TOKEN_NAME
    | TOKEN_CSTINT
    | TOKEN_CSTBOOL
    | TOKEN_end_of_input
    | TOKEN_error
// This type is used to give symbolic names to token indexes, useful for error messages
type nonTerminalId = 
    | NONTERM__startMain
    | NONTERM_Main
    | NONTERM_Topdecs
    | NONTERM_Topdec
    | NONTERM_Vardec
    | NONTERM_Vardesc
    | NONTERM_ImportedFunsig
    | NONTERM_ExportedFundec
    | NONTERM_Funsig
    | NONTERM_Fundec
    | NONTERM_Paramdecs
    | NONTERM_Paramdecs1
    | NONTERM_Block
    | NONTERM_StmtOrDecSeq
    | NONTERM_Stmt
    | NONTERM_StmtM
    | NONTERM_StmtU
    | NONTERM_Expr
    | NONTERM_ExprNotAccess
    | NONTERM_AtExprNotAccess
    | NONTERM_Access
    | NONTERM_Exprs
    | NONTERM_Exprs1
    | NONTERM_Const
    | NONTERM_Type

// This function maps tokens to integer indexes
let tagOfToken (t:token) = 
  match t with
  | EOF  -> 0 
  | LPAR  -> 1 
  | RPAR  -> 2 
  | LBRACE  -> 3 
  | RBRACE  -> 4 
  | LBRACK  -> 5 
  | RBRACK  -> 6 
  | SEMI  -> 7 
  | COMMA  -> 8 
  | ASSIGN  -> 9 
  | AMP  -> 10 
  | NOT  -> 11 
  | SEQOR  -> 12 
  | SEQAND  -> 13 
  | EQ  -> 14 
  | NE  -> 15 
  | GT  -> 16 
  | LT  -> 17 
  | GE  -> 18 
  | LE  -> 19 
  | PLUS  -> 20 
  | MINUS  -> 21 
  | TIMES  -> 22 
  | DIV  -> 23 
  | MOD  -> 24 
  | EXPORT  -> 25 
  | IMPORT  -> 26 
  | CHAR  -> 27 
  | ELSE  -> 28 
  | IF  -> 29 
  | INT  -> 30 
  | NULL  -> 31 
  | PRINT  -> 32 
  | PRINTLN  -> 33 
  | RETURN  -> 34 
  | VOID  -> 35 
  | WHILE  -> 36 
  | CSTSTRING _ -> 37 
  | NAME _ -> 38 
  | CSTINT _ -> 39 
  | CSTBOOL _ -> 40 

// This function maps integer indexes to symbolic token ids
let tokenTagToTokenId (tokenIdx:int) = 
  match tokenIdx with
  | 0 -> TOKEN_EOF 
  | 1 -> TOKEN_LPAR 
  | 2 -> TOKEN_RPAR 
  | 3 -> TOKEN_LBRACE 
  | 4 -> TOKEN_RBRACE 
  | 5 -> TOKEN_LBRACK 
  | 6 -> TOKEN_RBRACK 
  | 7 -> TOKEN_SEMI 
  | 8 -> TOKEN_COMMA 
  | 9 -> TOKEN_ASSIGN 
  | 10 -> TOKEN_AMP 
  | 11 -> TOKEN_NOT 
  | 12 -> TOKEN_SEQOR 
  | 13 -> TOKEN_SEQAND 
  | 14 -> TOKEN_EQ 
  | 15 -> TOKEN_NE 
  | 16 -> TOKEN_GT 
  | 17 -> TOKEN_LT 
  | 18 -> TOKEN_GE 
  | 19 -> TOKEN_LE 
  | 20 -> TOKEN_PLUS 
  | 21 -> TOKEN_MINUS 
  | 22 -> TOKEN_TIMES 
  | 23 -> TOKEN_DIV 
  | 24 -> TOKEN_MOD 
  | 25 -> TOKEN_EXPORT 
  | 26 -> TOKEN_IMPORT 
  | 27 -> TOKEN_CHAR 
  | 28 -> TOKEN_ELSE 
  | 29 -> TOKEN_IF 
  | 30 -> TOKEN_INT 
  | 31 -> TOKEN_NULL 
  | 32 -> TOKEN_PRINT 
  | 33 -> TOKEN_PRINTLN 
  | 34 -> TOKEN_RETURN 
  | 35 -> TOKEN_VOID 
  | 36 -> TOKEN_WHILE 
  | 37 -> TOKEN_CSTSTRING 
  | 38 -> TOKEN_NAME 
  | 39 -> TOKEN_CSTINT 
  | 40 -> TOKEN_CSTBOOL 
  | 43 -> TOKEN_end_of_input
  | 41 -> TOKEN_error
  | _ -> failwith "tokenTagToTokenId: bad token"

/// This function maps production indexes returned in syntax errors to strings representing the non terminal that would be produced by that production
let prodIdxToNonTerminal (prodIdx:int) = 
  match prodIdx with
    | 0 -> NONTERM__startMain 
    | 1 -> NONTERM_Main 
    | 2 -> NONTERM_Topdecs 
    | 3 -> NONTERM_Topdecs 
    | 4 -> NONTERM_Topdec 
    | 5 -> NONTERM_Topdec 
    | 6 -> NONTERM_Topdec 
    | 7 -> NONTERM_Topdec 
    | 8 -> NONTERM_Vardec 
    | 9 -> NONTERM_Vardesc 
    | 10 -> NONTERM_Vardesc 
    | 11 -> NONTERM_Vardesc 
    | 12 -> NONTERM_Vardesc 
    | 13 -> NONTERM_Vardesc 
    | 14 -> NONTERM_ImportedFunsig 
    | 15 -> NONTERM_ExportedFundec 
    | 16 -> NONTERM_Funsig 
    | 17 -> NONTERM_Funsig 
    | 18 -> NONTERM_Fundec 
    | 19 -> NONTERM_Fundec 
    | 20 -> NONTERM_Paramdecs 
    | 21 -> NONTERM_Paramdecs 
    | 22 -> NONTERM_Paramdecs1 
    | 23 -> NONTERM_Paramdecs1 
    | 24 -> NONTERM_Block 
    | 25 -> NONTERM_StmtOrDecSeq 
    | 26 -> NONTERM_StmtOrDecSeq 
    | 27 -> NONTERM_StmtOrDecSeq 
    | 28 -> NONTERM_Stmt 
    | 29 -> NONTERM_Stmt 
    | 30 -> NONTERM_StmtM 
    | 31 -> NONTERM_StmtM 
    | 32 -> NONTERM_StmtM 
    | 33 -> NONTERM_StmtM 
    | 34 -> NONTERM_StmtM 
    | 35 -> NONTERM_StmtM 
    | 36 -> NONTERM_StmtU 
    | 37 -> NONTERM_StmtU 
    | 38 -> NONTERM_StmtU 
    | 39 -> NONTERM_Expr 
    | 40 -> NONTERM_Expr 
    | 41 -> NONTERM_ExprNotAccess 
    | 42 -> NONTERM_ExprNotAccess 
    | 43 -> NONTERM_ExprNotAccess 
    | 44 -> NONTERM_ExprNotAccess 
    | 45 -> NONTERM_ExprNotAccess 
    | 46 -> NONTERM_ExprNotAccess 
    | 47 -> NONTERM_ExprNotAccess 
    | 48 -> NONTERM_ExprNotAccess 
    | 49 -> NONTERM_ExprNotAccess 
    | 50 -> NONTERM_ExprNotAccess 
    | 51 -> NONTERM_ExprNotAccess 
    | 52 -> NONTERM_ExprNotAccess 
    | 53 -> NONTERM_ExprNotAccess 
    | 54 -> NONTERM_ExprNotAccess 
    | 55 -> NONTERM_ExprNotAccess 
    | 56 -> NONTERM_ExprNotAccess 
    | 57 -> NONTERM_ExprNotAccess 
    | 58 -> NONTERM_ExprNotAccess 
    | 59 -> NONTERM_ExprNotAccess 
    | 60 -> NONTERM_AtExprNotAccess 
    | 61 -> NONTERM_AtExprNotAccess 
    | 62 -> NONTERM_AtExprNotAccess 
    | 63 -> NONTERM_Access 
    | 64 -> NONTERM_Access 
    | 65 -> NONTERM_Access 
    | 66 -> NONTERM_Access 
    | 67 -> NONTERM_Access 
    | 68 -> NONTERM_Exprs 
    | 69 -> NONTERM_Exprs 
    | 70 -> NONTERM_Exprs1 
    | 71 -> NONTERM_Exprs1 
    | 72 -> NONTERM_Const 
    | 73 -> NONTERM_Const 
    | 74 -> NONTERM_Const 
    | 75 -> NONTERM_Const 
    | 76 -> NONTERM_Type 
    | 77 -> NONTERM_Type 
    | _ -> failwith "prodIdxToNonTerminal: bad production index"

let _fsyacc_endOfInputTag = 43 
let _fsyacc_tagOfErrorTerminal = 41

// This function gets the name of a token as a string
let token_to_string (t:token) = 
  match t with 
  | EOF  -> "EOF" 
  | LPAR  -> "LPAR" 
  | RPAR  -> "RPAR" 
  | LBRACE  -> "LBRACE" 
  | RBRACE  -> "RBRACE" 
  | LBRACK  -> "LBRACK" 
  | RBRACK  -> "RBRACK" 
  | SEMI  -> "SEMI" 
  | COMMA  -> "COMMA" 
  | ASSIGN  -> "ASSIGN" 
  | AMP  -> "AMP" 
  | NOT  -> "NOT" 
  | SEQOR  -> "SEQOR" 
  | SEQAND  -> "SEQAND" 
  | EQ  -> "EQ" 
  | NE  -> "NE" 
  | GT  -> "GT" 
  | LT  -> "LT" 
  | GE  -> "GE" 
  | LE  -> "LE" 
  | PLUS  -> "PLUS" 
  | MINUS  -> "MINUS" 
  | TIMES  -> "TIMES" 
  | DIV  -> "DIV" 
  | MOD  -> "MOD" 
  | EXPORT  -> "EXPORT" 
  | IMPORT  -> "IMPORT" 
  | CHAR  -> "CHAR" 
  | ELSE  -> "ELSE" 
  | IF  -> "IF" 
  | INT  -> "INT" 
  | NULL  -> "NULL" 
  | PRINT  -> "PRINT" 
  | PRINTLN  -> "PRINTLN" 
  | RETURN  -> "RETURN" 
  | VOID  -> "VOID" 
  | WHILE  -> "WHILE" 
  | CSTSTRING _ -> "CSTSTRING" 
  | NAME _ -> "NAME" 
  | CSTINT _ -> "CSTINT" 
  | CSTBOOL _ -> "CSTBOOL" 

// This function gets the data carried by a token as an object
let _fsyacc_dataOfToken (t:token) = 
  match t with 
  | EOF  -> (null : System.Object) 
  | LPAR  -> (null : System.Object) 
  | RPAR  -> (null : System.Object) 
  | LBRACE  -> (null : System.Object) 
  | RBRACE  -> (null : System.Object) 
  | LBRACK  -> (null : System.Object) 
  | RBRACK  -> (null : System.Object) 
  | SEMI  -> (null : System.Object) 
  | COMMA  -> (null : System.Object) 
  | ASSIGN  -> (null : System.Object) 
  | AMP  -> (null : System.Object) 
  | NOT  -> (null : System.Object) 
  | SEQOR  -> (null : System.Object) 
  | SEQAND  -> (null : System.Object) 
  | EQ  -> (null : System.Object) 
  | NE  -> (null : System.Object) 
  | GT  -> (null : System.Object) 
  | LT  -> (null : System.Object) 
  | GE  -> (null : System.Object) 
  | LE  -> (null : System.Object) 
  | PLUS  -> (null : System.Object) 
  | MINUS  -> (null : System.Object) 
  | TIMES  -> (null : System.Object) 
  | DIV  -> (null : System.Object) 
  | MOD  -> (null : System.Object) 
  | EXPORT  -> (null : System.Object) 
  | IMPORT  -> (null : System.Object) 
  | CHAR  -> (null : System.Object) 
  | ELSE  -> (null : System.Object) 
  | IF  -> (null : System.Object) 
  | INT  -> (null : System.Object) 
  | NULL  -> (null : System.Object) 
  | PRINT  -> (null : System.Object) 
  | PRINTLN  -> (null : System.Object) 
  | RETURN  -> (null : System.Object) 
  | VOID  -> (null : System.Object) 
  | WHILE  -> (null : System.Object) 
  | CSTSTRING _fsyacc_x -> Microsoft.FSharp.Core.Operators.box _fsyacc_x 
  | NAME _fsyacc_x -> Microsoft.FSharp.Core.Operators.box _fsyacc_x 
  | CSTINT _fsyacc_x -> Microsoft.FSharp.Core.Operators.box _fsyacc_x 
  | CSTBOOL _fsyacc_x -> Microsoft.FSharp.Core.Operators.box _fsyacc_x 
let _fsyacc_gotos = [| 0us; 65535us; 1us; 65535us; 0us; 1us; 2us; 65535us; 0us; 2us; 4us; 5us; 2us; 65535us; 0us; 4us; 4us; 4us; 10us; 65535us; 0us; 6us; 4us; 6us; 31us; 54us; 37us; 54us; 43us; 54us; 49us; 54us; 55us; 54us; 57us; 62us; 60us; 62us; 63us; 62us; 4us; 65535us; 11us; 13us; 12us; 13us; 16us; 17us; 18us; 19us; 2us; 65535us; 0us; 8us; 4us; 8us; 2us; 65535us; 0us; 9us; 4us; 9us; 1us; 65535us; 25us; 26us; 3us; 65535us; 0us; 10us; 4us; 10us; 27us; 28us; 4us; 65535us; 31us; 32us; 37us; 38us; 43us; 44us; 49us; 50us; 5us; 65535us; 31us; 53us; 37us; 53us; 43us; 53us; 49us; 53us; 55us; 56us; 8us; 65535us; 45us; 46us; 51us; 52us; 57us; 74us; 60us; 74us; 63us; 74us; 78us; 74us; 79us; 74us; 84us; 74us; 3us; 65535us; 57us; 58us; 60us; 61us; 63us; 64us; 4us; 65535us; 57us; 60us; 60us; 60us; 63us; 60us; 78us; 87us; 6us; 65535us; 57us; 65us; 60us; 65us; 63us; 65us; 78us; 66us; 79us; 80us; 84us; 85us; 6us; 65535us; 57us; 67us; 60us; 67us; 63us; 67us; 78us; 67us; 79us; 86us; 84us; 88us; 29us; 65535us; 57us; 68us; 60us; 68us; 63us; 68us; 70us; 72us; 76us; 77us; 78us; 68us; 79us; 68us; 82us; 83us; 84us; 68us; 94us; 95us; 97us; 120us; 100us; 101us; 102us; 103us; 121us; 105us; 122us; 106us; 123us; 107us; 124us; 108us; 125us; 109us; 126us; 110us; 127us; 111us; 128us; 112us; 129us; 113us; 130us; 114us; 131us; 115us; 132us; 116us; 133us; 118us; 135us; 117us; 146us; 119us; 149us; 120us; 29us; 65535us; 57us; 91us; 60us; 91us; 63us; 91us; 70us; 91us; 76us; 91us; 78us; 91us; 79us; 91us; 82us; 91us; 84us; 91us; 94us; 91us; 97us; 91us; 100us; 91us; 102us; 91us; 121us; 91us; 122us; 91us; 123us; 91us; 124us; 91us; 125us; 91us; 126us; 91us; 127us; 91us; 128us; 91us; 129us; 91us; 130us; 91us; 131us; 91us; 132us; 91us; 133us; 91us; 135us; 92us; 146us; 91us; 149us; 91us; 30us; 65535us; 57us; 93us; 60us; 93us; 63us; 93us; 70us; 93us; 76us; 93us; 78us; 93us; 79us; 93us; 82us; 93us; 84us; 93us; 94us; 93us; 97us; 93us; 100us; 93us; 102us; 93us; 121us; 93us; 122us; 93us; 123us; 93us; 124us; 93us; 125us; 93us; 126us; 93us; 127us; 93us; 128us; 93us; 129us; 93us; 130us; 93us; 131us; 93us; 132us; 93us; 133us; 93us; 135us; 93us; 143us; 145us; 146us; 93us; 149us; 93us; 32us; 65535us; 57us; 90us; 60us; 90us; 63us; 90us; 70us; 90us; 76us; 90us; 78us; 90us; 79us; 90us; 82us; 90us; 84us; 90us; 94us; 90us; 97us; 90us; 100us; 90us; 102us; 90us; 121us; 90us; 122us; 90us; 123us; 90us; 124us; 90us; 125us; 90us; 126us; 90us; 127us; 90us; 128us; 90us; 129us; 90us; 130us; 90us; 131us; 90us; 132us; 90us; 133us; 90us; 135us; 89us; 137us; 138us; 140us; 141us; 143us; 144us; 146us; 90us; 149us; 90us; 1us; 65535us; 97us; 98us; 2us; 65535us; 97us; 148us; 149us; 150us; 30us; 65535us; 57us; 134us; 60us; 134us; 63us; 134us; 70us; 134us; 76us; 134us; 78us; 134us; 79us; 134us; 82us; 134us; 84us; 134us; 94us; 134us; 97us; 134us; 100us; 134us; 102us; 134us; 121us; 134us; 122us; 134us; 123us; 134us; 124us; 134us; 125us; 134us; 126us; 134us; 127us; 134us; 128us; 134us; 129us; 134us; 130us; 134us; 131us; 134us; 132us; 134us; 133us; 134us; 135us; 134us; 143us; 134us; 146us; 134us; 149us; 134us; 12us; 65535us; 0us; 12us; 4us; 12us; 25us; 35us; 27us; 47us; 31us; 11us; 37us; 11us; 43us; 11us; 49us; 11us; 55us; 11us; 57us; 11us; 60us; 11us; 63us; 11us; |]
let _fsyacc_sparseGotoTableRowOffsets = [|0us; 1us; 3us; 6us; 9us; 20us; 25us; 28us; 31us; 33us; 37us; 42us; 48us; 57us; 61us; 66us; 73us; 80us; 110us; 140us; 171us; 204us; 206us; 209us; 240us; |]
let _fsyacc_stateToProdIdxsTableElements = [| 1us; 0us; 1us; 0us; 1us; 1us; 1us; 1us; 1us; 3us; 1us; 3us; 1us; 4us; 1us; 4us; 1us; 5us; 1us; 6us; 1us; 7us; 1us; 8us; 2us; 8us; 19us; 3us; 8us; 12us; 13us; 1us; 9us; 2us; 9us; 19us; 1us; 10us; 3us; 10us; 12us; 13us; 1us; 11us; 3us; 11us; 12us; 13us; 1us; 11us; 2us; 12us; 13us; 1us; 12us; 1us; 13us; 1us; 13us; 1us; 14us; 1us; 14us; 1us; 15us; 1us; 15us; 1us; 16us; 1us; 16us; 1us; 16us; 1us; 16us; 1us; 16us; 1us; 16us; 1us; 17us; 1us; 17us; 1us; 17us; 1us; 17us; 1us; 17us; 1us; 17us; 1us; 18us; 1us; 18us; 1us; 18us; 1us; 18us; 1us; 18us; 1us; 18us; 1us; 19us; 1us; 19us; 1us; 19us; 1us; 19us; 1us; 19us; 1us; 19us; 1us; 21us; 2us; 22us; 23us; 1us; 23us; 1us; 23us; 1us; 24us; 1us; 24us; 1us; 24us; 1us; 26us; 1us; 26us; 1us; 27us; 1us; 27us; 1us; 27us; 1us; 28us; 3us; 28us; 34us; 36us; 1us; 29us; 14us; 30us; 47us; 48us; 49us; 50us; 51us; 52us; 53us; 54us; 55us; 56us; 57us; 58us; 59us; 1us; 30us; 2us; 31us; 32us; 1us; 31us; 14us; 32us; 47us; 48us; 49us; 50us; 51us; 52us; 53us; 54us; 55us; 56us; 57us; 58us; 59us; 1us; 32us; 1us; 33us; 3us; 34us; 36us; 37us; 3us; 34us; 36us; 37us; 16us; 34us; 36us; 37us; 47us; 48us; 49us; 50us; 51us; 52us; 53us; 54us; 55us; 56us; 57us; 58us; 59us; 3us; 34us; 36us; 37us; 2us; 34us; 36us; 1us; 34us; 2us; 35us; 38us; 2us; 35us; 38us; 15us; 35us; 38us; 47us; 48us; 49us; 50us; 51us; 52us; 53us; 54us; 55us; 56us; 57us; 58us; 59us; 2us; 35us; 38us; 1us; 35us; 1us; 36us; 1us; 37us; 1us; 38us; 4us; 39us; 42us; 64us; 67us; 3us; 39us; 42us; 67us; 1us; 40us; 2us; 40us; 61us; 1us; 41us; 1us; 42us; 14us; 42us; 47us; 48us; 49us; 50us; 51us; 52us; 53us; 54us; 55us; 56us; 57us; 58us; 59us; 2us; 43us; 63us; 1us; 43us; 1us; 43us; 1us; 43us; 1us; 44us; 14us; 44us; 47us; 48us; 49us; 50us; 51us; 52us; 53us; 54us; 55us; 56us; 57us; 58us; 59us; 1us; 45us; 14us; 45us; 47us; 48us; 49us; 50us; 51us; 52us; 53us; 54us; 55us; 56us; 57us; 58us; 59us; 1us; 46us; 14us; 47us; 47us; 48us; 49us; 50us; 51us; 52us; 53us; 54us; 55us; 56us; 57us; 58us; 59us; 14us; 47us; 48us; 48us; 49us; 50us; 51us; 52us; 53us; 54us; 55us; 56us; 57us; 58us; 59us; 14us; 47us; 48us; 49us; 49us; 50us; 51us; 52us; 53us; 54us; 55us; 56us; 57us; 58us; 59us; 14us; 47us; 48us; 49us; 50us; 50us; 51us; 52us; 53us; 54us; 55us; 56us; 57us; 58us; 59us; 14us; 47us; 48us; 49us; 50us; 51us; 51us; 52us; 53us; 54us; 55us; 56us; 57us; 58us; 59us; 14us; 47us; 48us; 49us; 50us; 51us; 52us; 52us; 53us; 54us; 55us; 56us; 57us; 58us; 59us; 14us; 47us; 48us; 49us; 50us; 51us; 52us; 53us; 53us; 54us; 55us; 56us; 57us; 58us; 59us; 14us; 47us; 48us; 49us; 50us; 51us; 52us; 53us; 54us; 54us; 55us; 56us; 57us; 58us; 59us; 14us; 47us; 48us; 49us; 50us; 51us; 52us; 53us; 54us; 55us; 55us; 56us; 57us; 58us; 59us; 14us; 47us; 48us; 49us; 50us; 51us; 52us; 53us; 54us; 55us; 56us; 56us; 57us; 58us; 59us; 14us; 47us; 48us; 49us; 50us; 51us; 52us; 53us; 54us; 55us; 56us; 57us; 57us; 58us; 59us; 14us; 47us; 48us; 49us; 50us; 51us; 52us; 53us; 54us; 55us; 56us; 57us; 58us; 58us; 59us; 13us; 47us; 48us; 49us; 50us; 51us; 52us; 53us; 54us; 55us; 56us; 57us; 58us; 59us; 14us; 47us; 48us; 49us; 50us; 51us; 52us; 53us; 54us; 55us; 56us; 57us; 58us; 59us; 59us; 14us; 47us; 48us; 49us; 50us; 51us; 52us; 53us; 54us; 55us; 56us; 57us; 58us; 59us; 67us; 15us; 47us; 48us; 49us; 50us; 51us; 52us; 53us; 54us; 55us; 56us; 57us; 58us; 59us; 70us; 71us; 1us; 47us; 1us; 48us; 1us; 49us; 1us; 50us; 1us; 51us; 1us; 52us; 1us; 53us; 1us; 54us; 1us; 55us; 1us; 56us; 1us; 57us; 1us; 58us; 1us; 59us; 1us; 60us; 2us; 61us; 64us; 1us; 61us; 1us; 62us; 2us; 62us; 67us; 1us; 63us; 1us; 64us; 2us; 64us; 67us; 1us; 64us; 2us; 65us; 66us; 2us; 65us; 67us; 1us; 66us; 1us; 67us; 1us; 67us; 1us; 69us; 1us; 71us; 1us; 71us; 1us; 72us; 1us; 73us; 1us; 74us; 1us; 74us; 1us; 75us; 1us; 76us; 1us; 77us; |]
let _fsyacc_stateToProdIdxsTableRowOffsets = [|0us; 2us; 4us; 6us; 8us; 10us; 12us; 14us; 16us; 18us; 20us; 22us; 24us; 27us; 31us; 33us; 36us; 38us; 42us; 44us; 48us; 50us; 53us; 55us; 57us; 59us; 61us; 63us; 65us; 67us; 69us; 71us; 73us; 75us; 77us; 79us; 81us; 83us; 85us; 87us; 89us; 91us; 93us; 95us; 97us; 99us; 101us; 103us; 105us; 107us; 109us; 111us; 113us; 115us; 117us; 120us; 122us; 124us; 126us; 128us; 130us; 132us; 134us; 136us; 138us; 140us; 142us; 146us; 148us; 163us; 165us; 168us; 170us; 185us; 187us; 189us; 193us; 197us; 214us; 218us; 221us; 223us; 226us; 229us; 245us; 248us; 250us; 252us; 254us; 256us; 261us; 265us; 267us; 270us; 272us; 274us; 289us; 292us; 294us; 296us; 298us; 300us; 315us; 317us; 332us; 334us; 349us; 364us; 379us; 394us; 409us; 424us; 439us; 454us; 469us; 484us; 499us; 514us; 528us; 543us; 558us; 574us; 576us; 578us; 580us; 582us; 584us; 586us; 588us; 590us; 592us; 594us; 596us; 598us; 600us; 602us; 605us; 607us; 609us; 612us; 614us; 616us; 619us; 621us; 624us; 627us; 629us; 631us; 633us; 635us; 637us; 639us; 641us; 643us; 645us; 647us; 649us; 651us; |]
let _fsyacc_action_rows = 158
let _fsyacc_actionTableElements = [|5us; 16386us; 25us; 27us; 26us; 25us; 27us; 157us; 30us; 156us; 35us; 41us; 0us; 49152us; 1us; 32768us; 0us; 3us; 0us; 16385us; 5us; 16386us; 25us; 27us; 26us; 25us; 27us; 157us; 30us; 156us; 35us; 41us; 0us; 16387us; 1us; 32768us; 7us; 7us; 0us; 16388us; 0us; 16389us; 0us; 16390us; 0us; 16391us; 3us; 32768us; 1us; 18us; 22us; 16us; 38us; 14us; 3us; 32768us; 1us; 18us; 22us; 16us; 38us; 15us; 1us; 16392us; 5us; 21us; 0us; 16393us; 1us; 16393us; 1us; 49us; 3us; 32768us; 1us; 18us; 22us; 16us; 38us; 14us; 1us; 16394us; 5us; 21us; 3us; 32768us; 1us; 18us; 22us; 16us; 38us; 14us; 2us; 32768us; 2us; 20us; 5us; 21us; 0us; 16395us; 2us; 32768us; 6us; 22us; 39us; 23us; 0us; 16396us; 1us; 32768us; 6us; 24us; 0us; 16397us; 3us; 32768us; 27us; 157us; 30us; 156us; 35us; 29us; 0us; 16398us; 3us; 32768us; 27us; 157us; 30us; 156us; 35us; 41us; 0us; 16399us; 1us; 32768us; 38us; 30us; 1us; 32768us; 1us; 31us; 2us; 16404us; 27us; 157us; 30us; 156us; 1us; 32768us; 2us; 33us; 1us; 32768us; 7us; 34us; 0us; 16400us; 1us; 32768us; 38us; 36us; 1us; 32768us; 1us; 37us; 2us; 16404us; 27us; 157us; 30us; 156us; 1us; 32768us; 2us; 39us; 1us; 32768us; 7us; 40us; 0us; 16401us; 1us; 32768us; 38us; 42us; 1us; 32768us; 1us; 43us; 2us; 16404us; 27us; 157us; 30us; 156us; 1us; 32768us; 2us; 45us; 1us; 32768us; 3us; 57us; 0us; 16402us; 1us; 32768us; 38us; 48us; 1us; 32768us; 1us; 49us; 2us; 16404us; 27us; 157us; 30us; 156us; 1us; 32768us; 2us; 51us; 1us; 32768us; 3us; 57us; 0us; 16403us; 0us; 16405us; 1us; 16406us; 8us; 55us; 2us; 32768us; 27us; 157us; 30us; 156us; 0us; 16407us; 17us; 16409us; 1us; 135us; 3us; 57us; 10us; 137us; 11us; 100us; 21us; 153us; 22us; 143us; 27us; 157us; 29us; 75us; 30us; 156us; 31us; 155us; 32us; 102us; 33us; 104us; 34us; 70us; 36us; 81us; 38us; 96us; 39us; 151us; 40us; 152us; 1us; 32768us; 4us; 59us; 0us; 16408us; 17us; 16409us; 1us; 135us; 3us; 57us; 10us; 137us; 11us; 100us; 21us; 153us; 22us; 143us; 27us; 157us; 29us; 75us; 30us; 156us; 31us; 155us; 32us; 102us; 33us; 104us; 34us; 70us; 36us; 81us; 38us; 96us; 39us; 151us; 40us; 152us; 0us; 16410us; 1us; 32768us; 7us; 63us; 17us; 16409us; 1us; 135us; 3us; 57us; 10us; 137us; 11us; 100us; 21us; 153us; 22us; 143us; 27us; 157us; 29us; 75us; 30us; 156us; 31us; 155us; 32us; 102us; 33us; 104us; 34us; 70us; 36us; 81us; 38us; 96us; 39us; 151us; 40us; 152us; 0us; 16411us; 0us; 16412us; 1us; 16412us; 28us; 79us; 0us; 16413us; 14us; 32768us; 7us; 69us; 12us; 133us; 13us; 132us; 14us; 126us; 15us; 127us; 16us; 128us; 17us; 129us; 18us; 130us; 19us; 131us; 20us; 121us; 21us; 122us; 22us; 123us; 23us; 124us; 24us; 125us; 0us; 16414us; 12us; 32768us; 1us; 135us; 7us; 71us; 10us; 137us; 11us; 100us; 21us; 153us; 22us; 143us; 31us; 155us; 32us; 102us; 33us; 104us; 38us; 96us; 39us; 151us; 40us; 152us; 0us; 16415us; 14us; 32768us; 7us; 73us; 12us; 133us; 13us; 132us; 14us; 126us; 15us; 127us; 16us; 128us; 17us; 129us; 18us; 130us; 19us; 131us; 20us; 121us; 21us; 122us; 22us; 123us; 23us; 124us; 24us; 125us; 0us; 16416us; 0us; 16417us; 1us; 32768us; 1us; 76us; 11us; 32768us; 1us; 135us; 10us; 137us; 11us; 100us; 21us; 153us; 22us; 143us; 31us; 155us; 32us; 102us; 33us; 104us; 38us; 96us; 39us; 151us; 40us; 152us; 14us; 32768us; 2us; 78us; 12us; 133us; 13us; 132us; 14us; 126us; 15us; 127us; 16us; 128us; 17us; 129us; 18us; 130us; 19us; 131us; 20us; 121us; 21us; 122us; 22us; 123us; 23us; 124us; 24us; 125us; 15us; 32768us; 1us; 135us; 3us; 57us; 10us; 137us; 11us; 100us; 21us; 153us; 22us; 143us; 29us; 75us; 31us; 155us; 32us; 102us; 33us; 104us; 34us; 70us; 36us; 81us; 38us; 96us; 39us; 151us; 40us; 152us; 15us; 32768us; 1us; 135us; 3us; 57us; 10us; 137us; 11us; 100us; 21us; 153us; 22us; 143us; 29us; 75us; 31us; 155us; 32us; 102us; 33us; 104us; 34us; 70us; 36us; 81us; 38us; 96us; 39us; 151us; 40us; 152us; 0us; 16418us; 1us; 32768us; 1us; 82us; 11us; 32768us; 1us; 135us; 10us; 137us; 11us; 100us; 21us; 153us; 22us; 143us; 31us; 155us; 32us; 102us; 33us; 104us; 38us; 96us; 39us; 151us; 40us; 152us; 14us; 32768us; 2us; 84us; 12us; 133us; 13us; 132us; 14us; 126us; 15us; 127us; 16us; 128us; 17us; 129us; 18us; 130us; 19us; 131us; 20us; 121us; 21us; 122us; 22us; 123us; 23us; 124us; 24us; 125us; 15us; 32768us; 1us; 135us; 3us; 57us; 10us; 137us; 11us; 100us; 21us; 153us; 22us; 143us; 29us; 75us; 31us; 155us; 32us; 102us; 33us; 104us; 34us; 70us; 36us; 81us; 38us; 96us; 39us; 151us; 40us; 152us; 0us; 16419us; 0us; 16420us; 0us; 16421us; 0us; 16422us; 3us; 16423us; 2us; 142us; 5us; 146us; 9us; 94us; 2us; 16423us; 5us; 146us; 9us; 94us; 0us; 16424us; 1us; 16424us; 2us; 136us; 0us; 16425us; 11us; 32768us; 1us; 135us; 10us; 137us; 11us; 100us; 21us; 153us; 22us; 143us; 31us; 155us; 32us; 102us; 33us; 104us; 38us; 96us; 39us; 151us; 40us; 152us; 13us; 16426us; 12us; 133us; 13us; 132us; 14us; 126us; 15us; 127us; 16us; 128us; 17us; 129us; 18us; 130us; 19us; 131us; 20us; 121us; 21us; 122us; 22us; 123us; 23us; 124us; 24us; 125us; 1us; 16447us; 1us; 97us; 11us; 16452us; 1us; 135us; 10us; 137us; 11us; 100us; 21us; 153us; 22us; 143us; 31us; 155us; 32us; 102us; 33us; 104us; 38us; 96us; 39us; 151us; 40us; 152us; 1us; 32768us; 2us; 99us; 0us; 16427us; 11us; 32768us; 1us; 135us; 10us; 137us; 11us; 100us; 21us; 153us; 22us; 143us; 31us; 155us; 32us; 102us; 33us; 104us; 38us; 96us; 39us; 151us; 40us; 152us; 0us; 16428us; 11us; 32768us; 1us; 135us; 10us; 137us; 11us; 100us; 21us; 153us; 22us; 143us; 31us; 155us; 32us; 102us; 33us; 104us; 38us; 96us; 39us; 151us; 40us; 152us; 13us; 16429us; 12us; 133us; 13us; 132us; 14us; 126us; 15us; 127us; 16us; 128us; 17us; 129us; 18us; 130us; 19us; 131us; 20us; 121us; 21us; 122us; 22us; 123us; 23us; 124us; 24us; 125us; 0us; 16430us; 3us; 16431us; 22us; 123us; 23us; 124us; 24us; 125us; 3us; 16432us; 22us; 123us; 23us; 124us; 24us; 125us; 0us; 16433us; 0us; 16434us; 0us; 16435us; 9us; 16436us; 16us; 128us; 17us; 129us; 18us; 130us; 19us; 131us; 20us; 121us; 21us; 122us; 22us; 123us; 23us; 124us; 24us; 125us; 9us; 16437us; 16us; 128us; 17us; 129us; 18us; 130us; 19us; 131us; 20us; 121us; 21us; 122us; 22us; 123us; 23us; 124us; 24us; 125us; 9us; 16438us; 16us; 128us; 17us; 129us; 18us; 130us; 19us; 131us; 20us; 121us; 21us; 122us; 22us; 123us; 23us; 124us; 24us; 125us; 9us; 16439us; 16us; 128us; 17us; 129us; 18us; 130us; 19us; 131us; 20us; 121us; 21us; 122us; 22us; 123us; 23us; 124us; 24us; 125us; 9us; 16440us; 16us; 128us; 17us; 129us; 18us; 130us; 19us; 131us; 20us; 121us; 21us; 122us; 22us; 123us; 23us; 124us; 24us; 125us; 9us; 16441us; 16us; 128us; 17us; 129us; 18us; 130us; 19us; 131us; 20us; 121us; 21us; 122us; 22us; 123us; 23us; 124us; 24us; 125us; 11us; 16442us; 14us; 126us; 15us; 127us; 16us; 128us; 17us; 129us; 18us; 130us; 19us; 131us; 20us; 121us; 21us; 122us; 22us; 123us; 23us; 124us; 24us; 125us; 13us; 32768us; 12us; 133us; 13us; 132us; 14us; 126us; 15us; 127us; 16us; 128us; 17us; 129us; 18us; 130us; 19us; 131us; 20us; 121us; 21us; 122us; 22us; 123us; 23us; 124us; 24us; 125us; 12us; 16443us; 13us; 132us; 14us; 126us; 15us; 127us; 16us; 128us; 17us; 129us; 18us; 130us; 19us; 131us; 20us; 121us; 21us; 122us; 22us; 123us; 23us; 124us; 24us; 125us; 14us; 32768us; 6us; 147us; 12us; 133us; 13us; 132us; 14us; 126us; 15us; 127us; 16us; 128us; 17us; 129us; 18us; 130us; 19us; 131us; 20us; 121us; 21us; 122us; 22us; 123us; 23us; 124us; 24us; 125us; 14us; 16454us; 8us; 149us; 12us; 133us; 13us; 132us; 14us; 126us; 15us; 127us; 16us; 128us; 17us; 129us; 18us; 130us; 19us; 131us; 20us; 121us; 21us; 122us; 22us; 123us; 23us; 124us; 24us; 125us; 11us; 32768us; 1us; 135us; 10us; 137us; 11us; 100us; 21us; 153us; 22us; 143us; 31us; 155us; 32us; 102us; 33us; 104us; 38us; 96us; 39us; 151us; 40us; 152us; 11us; 32768us; 1us; 135us; 10us; 137us; 11us; 100us; 21us; 153us; 22us; 143us; 31us; 155us; 32us; 102us; 33us; 104us; 38us; 96us; 39us; 151us; 40us; 152us; 11us; 32768us; 1us; 135us; 10us; 137us; 11us; 100us; 21us; 153us; 22us; 143us; 31us; 155us; 32us; 102us; 33us; 104us; 38us; 96us; 39us; 151us; 40us; 152us; 11us; 32768us; 1us; 135us; 10us; 137us; 11us; 100us; 21us; 153us; 22us; 143us; 31us; 155us; 32us; 102us; 33us; 104us; 38us; 96us; 39us; 151us; 40us; 152us; 11us; 32768us; 1us; 135us; 10us; 137us; 11us; 100us; 21us; 153us; 22us; 143us; 31us; 155us; 32us; 102us; 33us; 104us; 38us; 96us; 39us; 151us; 40us; 152us; 11us; 32768us; 1us; 135us; 10us; 137us; 11us; 100us; 21us; 153us; 22us; 143us; 31us; 155us; 32us; 102us; 33us; 104us; 38us; 96us; 39us; 151us; 40us; 152us; 11us; 32768us; 1us; 135us; 10us; 137us; 11us; 100us; 21us; 153us; 22us; 143us; 31us; 155us; 32us; 102us; 33us; 104us; 38us; 96us; 39us; 151us; 40us; 152us; 11us; 32768us; 1us; 135us; 10us; 137us; 11us; 100us; 21us; 153us; 22us; 143us; 31us; 155us; 32us; 102us; 33us; 104us; 38us; 96us; 39us; 151us; 40us; 152us; 11us; 32768us; 1us; 135us; 10us; 137us; 11us; 100us; 21us; 153us; 22us; 143us; 31us; 155us; 32us; 102us; 33us; 104us; 38us; 96us; 39us; 151us; 40us; 152us; 11us; 32768us; 1us; 135us; 10us; 137us; 11us; 100us; 21us; 153us; 22us; 143us; 31us; 155us; 32us; 102us; 33us; 104us; 38us; 96us; 39us; 151us; 40us; 152us; 11us; 32768us; 1us; 135us; 10us; 137us; 11us; 100us; 21us; 153us; 22us; 143us; 31us; 155us; 32us; 102us; 33us; 104us; 38us; 96us; 39us; 151us; 40us; 152us; 11us; 32768us; 1us; 135us; 10us; 137us; 11us; 100us; 21us; 153us; 22us; 143us; 31us; 155us; 32us; 102us; 33us; 104us; 38us; 96us; 39us; 151us; 40us; 152us; 11us; 32768us; 1us; 135us; 10us; 137us; 11us; 100us; 21us; 153us; 22us; 143us; 31us; 155us; 32us; 102us; 33us; 104us; 38us; 96us; 39us; 151us; 40us; 152us; 0us; 16444us; 11us; 32768us; 1us; 135us; 10us; 137us; 11us; 100us; 21us; 153us; 22us; 143us; 31us; 155us; 32us; 102us; 33us; 104us; 38us; 96us; 39us; 151us; 40us; 152us; 0us; 16445us; 3us; 32768us; 1us; 140us; 22us; 143us; 38us; 139us; 1us; 16446us; 5us; 146us; 0us; 16447us; 3us; 32768us; 1us; 140us; 22us; 143us; 38us; 139us; 2us; 32768us; 2us; 142us; 5us; 146us; 0us; 16448us; 8us; 32768us; 1us; 135us; 10us; 137us; 21us; 153us; 22us; 143us; 31us; 155us; 38us; 139us; 39us; 151us; 40us; 152us; 1us; 16449us; 5us; 146us; 0us; 16450us; 11us; 32768us; 1us; 135us; 10us; 137us; 11us; 100us; 21us; 153us; 22us; 143us; 31us; 155us; 32us; 102us; 33us; 104us; 38us; 96us; 39us; 151us; 40us; 152us; 0us; 16451us; 0us; 16453us; 11us; 32768us; 1us; 135us; 10us; 137us; 11us; 100us; 21us; 153us; 22us; 143us; 31us; 155us; 32us; 102us; 33us; 104us; 38us; 96us; 39us; 151us; 40us; 152us; 0us; 16455us; 0us; 16456us; 0us; 16457us; 1us; 32768us; 39us; 154us; 0us; 16458us; 0us; 16459us; 0us; 16460us; 0us; 16461us; |]
let _fsyacc_actionTableRowOffsets = [|0us; 6us; 7us; 9us; 10us; 16us; 17us; 19us; 20us; 21us; 22us; 23us; 27us; 31us; 33us; 34us; 36us; 40us; 42us; 46us; 49us; 50us; 53us; 54us; 56us; 57us; 61us; 62us; 66us; 67us; 69us; 71us; 74us; 76us; 78us; 79us; 81us; 83us; 86us; 88us; 90us; 91us; 93us; 95us; 98us; 100us; 102us; 103us; 105us; 107us; 110us; 112us; 114us; 115us; 116us; 118us; 121us; 122us; 140us; 142us; 143us; 161us; 162us; 164us; 182us; 183us; 184us; 186us; 187us; 202us; 203us; 216us; 217us; 232us; 233us; 234us; 236us; 248us; 263us; 279us; 295us; 296us; 298us; 310us; 325us; 341us; 342us; 343us; 344us; 345us; 349us; 352us; 353us; 355us; 356us; 368us; 382us; 384us; 396us; 398us; 399us; 411us; 412us; 424us; 438us; 439us; 443us; 447us; 448us; 449us; 450us; 460us; 470us; 480us; 490us; 500us; 510us; 522us; 536us; 549us; 564us; 579us; 591us; 603us; 615us; 627us; 639us; 651us; 663us; 675us; 687us; 699us; 711us; 723us; 735us; 736us; 748us; 749us; 753us; 755us; 756us; 760us; 763us; 764us; 773us; 775us; 776us; 788us; 789us; 790us; 802us; 803us; 804us; 805us; 807us; 808us; 809us; 810us; |]
let _fsyacc_reductionSymbolCounts = [|1us; 2us; 0us; 2us; 2us; 1us; 1us; 1us; 2us; 1us; 2us; 3us; 3us; 4us; 2us; 2us; 6us; 6us; 6us; 6us; 0us; 1us; 1us; 3us; 3us; 0us; 2us; 3us; 1us; 1us; 2us; 2us; 3us; 1us; 7us; 5us; 7us; 5us; 5us; 1us; 1us; 1us; 3us; 4us; 2us; 2us; 1us; 3us; 3us; 3us; 3us; 3us; 3us; 3us; 3us; 3us; 3us; 3us; 3us; 3us; 1us; 3us; 2us; 1us; 3us; 2us; 2us; 4us; 0us; 1us; 1us; 3us; 1us; 1us; 2us; 1us; 1us; 1us; |]
let _fsyacc_productionToNonTerminalTable = [|0us; 1us; 2us; 2us; 3us; 3us; 3us; 3us; 4us; 5us; 5us; 5us; 5us; 5us; 6us; 7us; 8us; 8us; 9us; 9us; 10us; 10us; 11us; 11us; 12us; 13us; 13us; 13us; 14us; 14us; 15us; 15us; 15us; 15us; 15us; 15us; 16us; 16us; 16us; 17us; 17us; 18us; 18us; 18us; 18us; 18us; 18us; 18us; 18us; 18us; 18us; 18us; 18us; 18us; 18us; 18us; 18us; 18us; 18us; 18us; 19us; 19us; 19us; 20us; 20us; 20us; 20us; 20us; 21us; 21us; 22us; 22us; 23us; 23us; 23us; 23us; 24us; 24us; |]
let _fsyacc_immediateActions = [|65535us; 49152us; 65535us; 16385us; 65535us; 16387us; 65535us; 16388us; 16389us; 16390us; 16391us; 65535us; 65535us; 65535us; 16393us; 65535us; 65535us; 65535us; 65535us; 65535us; 16395us; 65535us; 16396us; 65535us; 16397us; 65535us; 16398us; 65535us; 16399us; 65535us; 65535us; 65535us; 65535us; 65535us; 16400us; 65535us; 65535us; 65535us; 65535us; 65535us; 16401us; 65535us; 65535us; 65535us; 65535us; 65535us; 16402us; 65535us; 65535us; 65535us; 65535us; 65535us; 16403us; 16405us; 65535us; 65535us; 16407us; 65535us; 65535us; 16408us; 65535us; 16410us; 65535us; 65535us; 16411us; 16412us; 65535us; 16413us; 65535us; 16414us; 65535us; 16415us; 65535us; 16416us; 16417us; 65535us; 65535us; 65535us; 65535us; 65535us; 16418us; 65535us; 65535us; 65535us; 65535us; 16419us; 16420us; 16421us; 16422us; 65535us; 65535us; 16424us; 65535us; 16425us; 65535us; 65535us; 65535us; 65535us; 65535us; 16427us; 65535us; 65535us; 65535us; 65535us; 16430us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 16444us; 65535us; 16445us; 65535us; 65535us; 16447us; 65535us; 65535us; 16448us; 65535us; 65535us; 16450us; 65535us; 16451us; 16453us; 65535us; 16455us; 16456us; 16457us; 65535us; 16458us; 16459us; 16460us; 16461us; |]
let _fsyacc_reductions ()  =    [| 
# 423 "CPar.fs"
        (fun (parseState : Microsoft.FSharp.Text.Parsing.IParseState) ->
            let _1 = (let data = parseState.GetInput(1) in (Microsoft.FSharp.Core.Operators.unbox data : MicroWac.Absyn.Program)) in
            Microsoft.FSharp.Core.Operators.box
                (
                   (
                      raise (Microsoft.FSharp.Text.Parsing.Accept(Microsoft.FSharp.Core.Operators.box _1))
                   )
                 : '_startMain));
# 432 "CPar.fs"
        (fun (parseState : Microsoft.FSharp.Text.Parsing.IParseState) ->
            let _1 = (let data = parseState.GetInput(1) in (Microsoft.FSharp.Core.Operators.unbox data : 'Topdecs)) in
            Microsoft.FSharp.Core.Operators.box
                (
                   (
# 50 "CPar.fsy"
                                                               Prog _1 
                   )
# 50 "CPar.fsy"
                 : MicroWac.Absyn.Program));
# 443 "CPar.fs"
        (fun (parseState : Microsoft.FSharp.Text.Parsing.IParseState) ->
            Microsoft.FSharp.Core.Operators.box
                (
                   (
# 54 "CPar.fsy"
                                                               [] 
                   )
# 54 "CPar.fsy"
                 : 'Topdecs));
# 453 "CPar.fs"
        (fun (parseState : Microsoft.FSharp.Text.Parsing.IParseState) ->
            let _1 = (let data = parseState.GetInput(1) in (Microsoft.FSharp.Core.Operators.unbox data : 'Topdec)) in
            let _2 = (let data = parseState.GetInput(2) in (Microsoft.FSharp.Core.Operators.unbox data : 'Topdecs)) in
            Microsoft.FSharp.Core.Operators.box
                (
                   (
# 55 "CPar.fsy"
                                                               _1 :: _2 
                   )
# 55 "CPar.fsy"
                 : 'Topdecs));
# 465 "CPar.fs"
        (fun (parseState : Microsoft.FSharp.Text.Parsing.IParseState) ->
            let _1 = (let data = parseState.GetInput(1) in (Microsoft.FSharp.Core.Operators.unbox data : 'Vardec)) in
            Microsoft.FSharp.Core.Operators.box
                (
                   (
# 59 "CPar.fsy"
                                                               Vardec (fst _1, snd _1) 
                   )
# 59 "CPar.fsy"
                 : 'Topdec));
# 476 "CPar.fs"
        (fun (parseState : Microsoft.FSharp.Text.Parsing.IParseState) ->
            let _1 = (let data = parseState.GetInput(1) in (Microsoft.FSharp.Core.Operators.unbox data : 'ImportedFunsig)) in
            Microsoft.FSharp.Core.Operators.box
                (
                   (
# 60 "CPar.fsy"
                                                               _1 
                   )
# 60 "CPar.fsy"
                 : 'Topdec));
# 487 "CPar.fs"
        (fun (parseState : Microsoft.FSharp.Text.Parsing.IParseState) ->
            let _1 = (let data = parseState.GetInput(1) in (Microsoft.FSharp.Core.Operators.unbox data : 'ExportedFundec)) in
            Microsoft.FSharp.Core.Operators.box
                (
                   (
# 61 "CPar.fsy"
                                                               _1 
                   )
# 61 "CPar.fsy"
                 : 'Topdec));
# 498 "CPar.fs"
        (fun (parseState : Microsoft.FSharp.Text.Parsing.IParseState) ->
            let _1 = (let data = parseState.GetInput(1) in (Microsoft.FSharp.Core.Operators.unbox data : 'Fundec)) in
            Microsoft.FSharp.Core.Operators.box
                (
                   (
# 62 "CPar.fsy"
                                                               _1 
                   )
# 62 "CPar.fsy"
                 : 'Topdec));
# 509 "CPar.fs"
        (fun (parseState : Microsoft.FSharp.Text.Parsing.IParseState) ->
            let _1 = (let data = parseState.GetInput(1) in (Microsoft.FSharp.Core.Operators.unbox data : 'Type)) in
            let _2 = (let data = parseState.GetInput(2) in (Microsoft.FSharp.Core.Operators.unbox data : 'Vardesc)) in
            Microsoft.FSharp.Core.Operators.box
                (
                   (
# 66 "CPar.fsy"
                                                               ((fst _2) _1, snd _2) 
                   )
# 66 "CPar.fsy"
                 : 'Vardec));
# 521 "CPar.fs"
        (fun (parseState : Microsoft.FSharp.Text.Parsing.IParseState) ->
            let _1 = (let data = parseState.GetInput(1) in (Microsoft.FSharp.Core.Operators.unbox data : string)) in
            Microsoft.FSharp.Core.Operators.box
                (
                   (
# 70 "CPar.fsy"
                                                               ((fun t -> t), _1)                      
                   )
# 70 "CPar.fsy"
                 : 'Vardesc));
# 532 "CPar.fs"
        (fun (parseState : Microsoft.FSharp.Text.Parsing.IParseState) ->
            let _2 = (let data = parseState.GetInput(2) in (Microsoft.FSharp.Core.Operators.unbox data : 'Vardesc)) in
            Microsoft.FSharp.Core.Operators.box
                (
                   (
# 71 "CPar.fsy"
                                                               compose1 TypP _2                        
                   )
# 71 "CPar.fsy"
                 : 'Vardesc));
# 543 "CPar.fs"
        (fun (parseState : Microsoft.FSharp.Text.Parsing.IParseState) ->
            let _2 = (let data = parseState.GetInput(2) in (Microsoft.FSharp.Core.Operators.unbox data : 'Vardesc)) in
            Microsoft.FSharp.Core.Operators.box
                (
                   (
# 72 "CPar.fsy"
                                                               _2                                      
                   )
# 72 "CPar.fsy"
                 : 'Vardesc));
# 554 "CPar.fs"
        (fun (parseState : Microsoft.FSharp.Text.Parsing.IParseState) ->
            let _1 = (let data = parseState.GetInput(1) in (Microsoft.FSharp.Core.Operators.unbox data : 'Vardesc)) in
            Microsoft.FSharp.Core.Operators.box
                (
                   (
# 73 "CPar.fsy"
                                                               compose1 (fun t -> TypA(t, None)) _1    
                   )
# 73 "CPar.fsy"
                 : 'Vardesc));
# 565 "CPar.fs"
        (fun (parseState : Microsoft.FSharp.Text.Parsing.IParseState) ->
            let _1 = (let data = parseState.GetInput(1) in (Microsoft.FSharp.Core.Operators.unbox data : 'Vardesc)) in
            let _3 = (let data = parseState.GetInput(3) in (Microsoft.FSharp.Core.Operators.unbox data : int)) in
            Microsoft.FSharp.Core.Operators.box
                (
                   (
# 74 "CPar.fsy"
                                                               compose1 (fun t -> TypA(t, Some _3)) _1 
                   )
# 74 "CPar.fsy"
                 : 'Vardesc));
# 577 "CPar.fs"
        (fun (parseState : Microsoft.FSharp.Text.Parsing.IParseState) ->
            let _2 = (let data = parseState.GetInput(2) in (Microsoft.FSharp.Core.Operators.unbox data : 'Funsig)) in
            Microsoft.FSharp.Core.Operators.box
                (
                   (
# 78 "CPar.fsy"
                                                               importFunsig _2 
                   )
# 78 "CPar.fsy"
                 : 'ImportedFunsig));
# 588 "CPar.fs"
        (fun (parseState : Microsoft.FSharp.Text.Parsing.IParseState) ->
            let _2 = (let data = parseState.GetInput(2) in (Microsoft.FSharp.Core.Operators.unbox data : 'Fundec)) in
            Microsoft.FSharp.Core.Operators.box
                (
                   (
# 82 "CPar.fsy"
                                                               exportFundec _2 
                   )
# 82 "CPar.fsy"
                 : 'ExportedFundec));
# 599 "CPar.fs"
        (fun (parseState : Microsoft.FSharp.Text.Parsing.IParseState) ->
            let _2 = (let data = parseState.GetInput(2) in (Microsoft.FSharp.Core.Operators.unbox data : string)) in
            let _4 = (let data = parseState.GetInput(4) in (Microsoft.FSharp.Core.Operators.unbox data : 'Paramdecs)) in
            Microsoft.FSharp.Core.Operators.box
                (
                   (
# 86 "CPar.fsy"
                                                               Funsig(false, None,    _2, _4) 
                   )
# 86 "CPar.fsy"
                 : 'Funsig));
# 611 "CPar.fs"
        (fun (parseState : Microsoft.FSharp.Text.Parsing.IParseState) ->
            let _1 = (let data = parseState.GetInput(1) in (Microsoft.FSharp.Core.Operators.unbox data : 'Type)) in
            let _2 = (let data = parseState.GetInput(2) in (Microsoft.FSharp.Core.Operators.unbox data : string)) in
            let _4 = (let data = parseState.GetInput(4) in (Microsoft.FSharp.Core.Operators.unbox data : 'Paramdecs)) in
            Microsoft.FSharp.Core.Operators.box
                (
                   (
# 87 "CPar.fsy"
                                                               Funsig(false, Some _1, _2, _4) 
                   )
# 87 "CPar.fsy"
                 : 'Funsig));
# 624 "CPar.fs"
        (fun (parseState : Microsoft.FSharp.Text.Parsing.IParseState) ->
            let _2 = (let data = parseState.GetInput(2) in (Microsoft.FSharp.Core.Operators.unbox data : string)) in
            let _4 = (let data = parseState.GetInput(4) in (Microsoft.FSharp.Core.Operators.unbox data : 'Paramdecs)) in
            let _6 = (let data = parseState.GetInput(6) in (Microsoft.FSharp.Core.Operators.unbox data : 'Block)) in
            Microsoft.FSharp.Core.Operators.box
                (
                   (
# 91 "CPar.fsy"
                                                               Fundec(false, None,    _2, _4, _6) 
                   )
# 91 "CPar.fsy"
                 : 'Fundec));
# 637 "CPar.fs"
        (fun (parseState : Microsoft.FSharp.Text.Parsing.IParseState) ->
            let _1 = (let data = parseState.GetInput(1) in (Microsoft.FSharp.Core.Operators.unbox data : 'Type)) in
            let _2 = (let data = parseState.GetInput(2) in (Microsoft.FSharp.Core.Operators.unbox data : string)) in
            let _4 = (let data = parseState.GetInput(4) in (Microsoft.FSharp.Core.Operators.unbox data : 'Paramdecs)) in
            let _6 = (let data = parseState.GetInput(6) in (Microsoft.FSharp.Core.Operators.unbox data : 'Block)) in
            Microsoft.FSharp.Core.Operators.box
                (
                   (
# 92 "CPar.fsy"
                                                               Fundec(false, Some _1, _2, _4, _6) 
                   )
# 92 "CPar.fsy"
                 : 'Fundec));
# 651 "CPar.fs"
        (fun (parseState : Microsoft.FSharp.Text.Parsing.IParseState) ->
            Microsoft.FSharp.Core.Operators.box
                (
                   (
# 97 "CPar.fsy"
                                                               [] 
                   )
# 97 "CPar.fsy"
                 : 'Paramdecs));
# 661 "CPar.fs"
        (fun (parseState : Microsoft.FSharp.Text.Parsing.IParseState) ->
            let _1 = (let data = parseState.GetInput(1) in (Microsoft.FSharp.Core.Operators.unbox data : 'Paramdecs1)) in
            Microsoft.FSharp.Core.Operators.box
                (
                   (
# 98 "CPar.fsy"
                                                               _1 
                   )
# 98 "CPar.fsy"
                 : 'Paramdecs));
# 672 "CPar.fs"
        (fun (parseState : Microsoft.FSharp.Text.Parsing.IParseState) ->
            let _1 = (let data = parseState.GetInput(1) in (Microsoft.FSharp.Core.Operators.unbox data : 'Vardec)) in
            Microsoft.FSharp.Core.Operators.box
                (
                   (
# 102 "CPar.fsy"
                                                               [_1]     
                   )
# 102 "CPar.fsy"
                 : 'Paramdecs1));
# 683 "CPar.fs"
        (fun (parseState : Microsoft.FSharp.Text.Parsing.IParseState) ->
            let _1 = (let data = parseState.GetInput(1) in (Microsoft.FSharp.Core.Operators.unbox data : 'Vardec)) in
            let _3 = (let data = parseState.GetInput(3) in (Microsoft.FSharp.Core.Operators.unbox data : 'Paramdecs1)) in
            Microsoft.FSharp.Core.Operators.box
                (
                   (
# 103 "CPar.fsy"
                                                               _1 :: _3 
                   )
# 103 "CPar.fsy"
                 : 'Paramdecs1));
# 695 "CPar.fs"
        (fun (parseState : Microsoft.FSharp.Text.Parsing.IParseState) ->
            let _2 = (let data = parseState.GetInput(2) in (Microsoft.FSharp.Core.Operators.unbox data : 'StmtOrDecSeq)) in
            Microsoft.FSharp.Core.Operators.box
                (
                   (
# 107 "CPar.fsy"
                                                               Block _2 
                   )
# 107 "CPar.fsy"
                 : 'Block));
# 706 "CPar.fs"
        (fun (parseState : Microsoft.FSharp.Text.Parsing.IParseState) ->
            Microsoft.FSharp.Core.Operators.box
                (
                   (
# 111 "CPar.fsy"
                                                               [] 
                   )
# 111 "CPar.fsy"
                 : 'StmtOrDecSeq));
# 716 "CPar.fs"
        (fun (parseState : Microsoft.FSharp.Text.Parsing.IParseState) ->
            let _1 = (let data = parseState.GetInput(1) in (Microsoft.FSharp.Core.Operators.unbox data : 'Stmt)) in
            let _2 = (let data = parseState.GetInput(2) in (Microsoft.FSharp.Core.Operators.unbox data : 'StmtOrDecSeq)) in
            Microsoft.FSharp.Core.Operators.box
                (
                   (
# 112 "CPar.fsy"
                                                               Stmt _1 :: _2 
                   )
# 112 "CPar.fsy"
                 : 'StmtOrDecSeq));
# 728 "CPar.fs"
        (fun (parseState : Microsoft.FSharp.Text.Parsing.IParseState) ->
            let _1 = (let data = parseState.GetInput(1) in (Microsoft.FSharp.Core.Operators.unbox data : 'Vardec)) in
            let _3 = (let data = parseState.GetInput(3) in (Microsoft.FSharp.Core.Operators.unbox data : 'StmtOrDecSeq)) in
            Microsoft.FSharp.Core.Operators.box
                (
                   (
# 113 "CPar.fsy"
                                                               Dec (fst _1, snd _1) :: _3 
                   )
# 113 "CPar.fsy"
                 : 'StmtOrDecSeq));
# 740 "CPar.fs"
        (fun (parseState : Microsoft.FSharp.Text.Parsing.IParseState) ->
            let _1 = (let data = parseState.GetInput(1) in (Microsoft.FSharp.Core.Operators.unbox data : 'StmtM)) in
            Microsoft.FSharp.Core.Operators.box
                (
                   (
# 117 "CPar.fsy"
                                                               _1 
                   )
# 117 "CPar.fsy"
                 : 'Stmt));
# 751 "CPar.fs"
        (fun (parseState : Microsoft.FSharp.Text.Parsing.IParseState) ->
            let _1 = (let data = parseState.GetInput(1) in (Microsoft.FSharp.Core.Operators.unbox data : 'StmtU)) in
            Microsoft.FSharp.Core.Operators.box
                (
                   (
# 118 "CPar.fsy"
                                                               _1 
                   )
# 118 "CPar.fsy"
                 : 'Stmt));
# 762 "CPar.fs"
        (fun (parseState : Microsoft.FSharp.Text.Parsing.IParseState) ->
            let _1 = (let data = parseState.GetInput(1) in (Microsoft.FSharp.Core.Operators.unbox data : 'Expr)) in
            Microsoft.FSharp.Core.Operators.box
                (
                   (
# 122 "CPar.fsy"
                                                               Expr(_1)             
                   )
# 122 "CPar.fsy"
                 : 'StmtM));
# 773 "CPar.fs"
        (fun (parseState : Microsoft.FSharp.Text.Parsing.IParseState) ->
            Microsoft.FSharp.Core.Operators.box
                (
                   (
# 123 "CPar.fsy"
                                                               Return None          
                   )
# 123 "CPar.fsy"
                 : 'StmtM));
# 783 "CPar.fs"
        (fun (parseState : Microsoft.FSharp.Text.Parsing.IParseState) ->
            let _2 = (let data = parseState.GetInput(2) in (Microsoft.FSharp.Core.Operators.unbox data : 'Expr)) in
            Microsoft.FSharp.Core.Operators.box
                (
                   (
# 124 "CPar.fsy"
                                                               Return(Some(_2))     
                   )
# 124 "CPar.fsy"
                 : 'StmtM));
# 794 "CPar.fs"
        (fun (parseState : Microsoft.FSharp.Text.Parsing.IParseState) ->
            let _1 = (let data = parseState.GetInput(1) in (Microsoft.FSharp.Core.Operators.unbox data : 'Block)) in
            Microsoft.FSharp.Core.Operators.box
                (
                   (
# 125 "CPar.fsy"
                                                               _1                   
                   )
# 125 "CPar.fsy"
                 : 'StmtM));
# 805 "CPar.fs"
        (fun (parseState : Microsoft.FSharp.Text.Parsing.IParseState) ->
            let _3 = (let data = parseState.GetInput(3) in (Microsoft.FSharp.Core.Operators.unbox data : 'Expr)) in
            let _5 = (let data = parseState.GetInput(5) in (Microsoft.FSharp.Core.Operators.unbox data : 'StmtM)) in
            let _7 = (let data = parseState.GetInput(7) in (Microsoft.FSharp.Core.Operators.unbox data : 'StmtM)) in
            Microsoft.FSharp.Core.Operators.box
                (
                   (
# 126 "CPar.fsy"
                                                               If(_3, _5, _7)       
                   )
# 126 "CPar.fsy"
                 : 'StmtM));
# 818 "CPar.fs"
        (fun (parseState : Microsoft.FSharp.Text.Parsing.IParseState) ->
            let _3 = (let data = parseState.GetInput(3) in (Microsoft.FSharp.Core.Operators.unbox data : 'Expr)) in
            let _5 = (let data = parseState.GetInput(5) in (Microsoft.FSharp.Core.Operators.unbox data : 'StmtM)) in
            Microsoft.FSharp.Core.Operators.box
                (
                   (
# 127 "CPar.fsy"
                                                               While(_3, _5)        
                   )
# 127 "CPar.fsy"
                 : 'StmtM));
# 830 "CPar.fs"
        (fun (parseState : Microsoft.FSharp.Text.Parsing.IParseState) ->
            let _3 = (let data = parseState.GetInput(3) in (Microsoft.FSharp.Core.Operators.unbox data : 'Expr)) in
            let _5 = (let data = parseState.GetInput(5) in (Microsoft.FSharp.Core.Operators.unbox data : 'StmtM)) in
            let _7 = (let data = parseState.GetInput(7) in (Microsoft.FSharp.Core.Operators.unbox data : 'StmtU)) in
            Microsoft.FSharp.Core.Operators.box
                (
                   (
# 131 "CPar.fsy"
                                                               If(_3, _5, _7)       
                   )
# 131 "CPar.fsy"
                 : 'StmtU));
# 843 "CPar.fs"
        (fun (parseState : Microsoft.FSharp.Text.Parsing.IParseState) ->
            let _3 = (let data = parseState.GetInput(3) in (Microsoft.FSharp.Core.Operators.unbox data : 'Expr)) in
            let _5 = (let data = parseState.GetInput(5) in (Microsoft.FSharp.Core.Operators.unbox data : 'Stmt)) in
            Microsoft.FSharp.Core.Operators.box
                (
                   (
# 132 "CPar.fsy"
                                                               If(_3, _5, Block []) 
                   )
# 132 "CPar.fsy"
                 : 'StmtU));
# 855 "CPar.fs"
        (fun (parseState : Microsoft.FSharp.Text.Parsing.IParseState) ->
            let _3 = (let data = parseState.GetInput(3) in (Microsoft.FSharp.Core.Operators.unbox data : 'Expr)) in
            let _5 = (let data = parseState.GetInput(5) in (Microsoft.FSharp.Core.Operators.unbox data : 'StmtU)) in
            Microsoft.FSharp.Core.Operators.box
                (
                   (
# 133 "CPar.fsy"
                                                               While(_3, _5)        
                   )
# 133 "CPar.fsy"
                 : 'StmtU));
# 867 "CPar.fs"
        (fun (parseState : Microsoft.FSharp.Text.Parsing.IParseState) ->
            let _1 = (let data = parseState.GetInput(1) in (Microsoft.FSharp.Core.Operators.unbox data : 'Access)) in
            Microsoft.FSharp.Core.Operators.box
                (
                   (
# 137 "CPar.fsy"
                                                               Access _1           
                   )
# 137 "CPar.fsy"
                 : 'Expr));
# 878 "CPar.fs"
        (fun (parseState : Microsoft.FSharp.Text.Parsing.IParseState) ->
            let _1 = (let data = parseState.GetInput(1) in (Microsoft.FSharp.Core.Operators.unbox data : 'ExprNotAccess)) in
            Microsoft.FSharp.Core.Operators.box
                (
                   (
# 138 "CPar.fsy"
                                                               _1                  
                   )
# 138 "CPar.fsy"
                 : 'Expr));
# 889 "CPar.fs"
        (fun (parseState : Microsoft.FSharp.Text.Parsing.IParseState) ->
            let _1 = (let data = parseState.GetInput(1) in (Microsoft.FSharp.Core.Operators.unbox data : 'AtExprNotAccess)) in
            Microsoft.FSharp.Core.Operators.box
                (
                   (
# 142 "CPar.fsy"
                                                               _1                  
                   )
# 142 "CPar.fsy"
                 : 'ExprNotAccess));
# 900 "CPar.fs"
        (fun (parseState : Microsoft.FSharp.Text.Parsing.IParseState) ->
            let _1 = (let data = parseState.GetInput(1) in (Microsoft.FSharp.Core.Operators.unbox data : 'Access)) in
            let _3 = (let data = parseState.GetInput(3) in (Microsoft.FSharp.Core.Operators.unbox data : 'Expr)) in
            Microsoft.FSharp.Core.Operators.box
                (
                   (
# 143 "CPar.fsy"
                                                               Assign(_1, _3)      
                   )
# 143 "CPar.fsy"
                 : 'ExprNotAccess));
# 912 "CPar.fs"
        (fun (parseState : Microsoft.FSharp.Text.Parsing.IParseState) ->
            let _1 = (let data = parseState.GetInput(1) in (Microsoft.FSharp.Core.Operators.unbox data : string)) in
            let _3 = (let data = parseState.GetInput(3) in (Microsoft.FSharp.Core.Operators.unbox data : 'Exprs)) in
            Microsoft.FSharp.Core.Operators.box
                (
                   (
# 144 "CPar.fsy"
                                                               Call(_1, _3)        
                   )
# 144 "CPar.fsy"
                 : 'ExprNotAccess));
# 924 "CPar.fs"
        (fun (parseState : Microsoft.FSharp.Text.Parsing.IParseState) ->
            let _2 = (let data = parseState.GetInput(2) in (Microsoft.FSharp.Core.Operators.unbox data : 'Expr)) in
            Microsoft.FSharp.Core.Operators.box
                (
                   (
# 145 "CPar.fsy"
                                                               Prim1("!", _2)      
                   )
# 145 "CPar.fsy"
                 : 'ExprNotAccess));
# 935 "CPar.fs"
        (fun (parseState : Microsoft.FSharp.Text.Parsing.IParseState) ->
            let _2 = (let data = parseState.GetInput(2) in (Microsoft.FSharp.Core.Operators.unbox data : 'Expr)) in
            Microsoft.FSharp.Core.Operators.box
                (
                   (
# 146 "CPar.fsy"
                                                               Prim1("printi", _2) 
                   )
# 146 "CPar.fsy"
                 : 'ExprNotAccess));
# 946 "CPar.fs"
        (fun (parseState : Microsoft.FSharp.Text.Parsing.IParseState) ->
            Microsoft.FSharp.Core.Operators.box
                (
                   (
# 147 "CPar.fsy"
                                                               Prim1("printc", nl) 
                   )
# 147 "CPar.fsy"
                 : 'ExprNotAccess));
# 956 "CPar.fs"
        (fun (parseState : Microsoft.FSharp.Text.Parsing.IParseState) ->
            let _1 = (let data = parseState.GetInput(1) in (Microsoft.FSharp.Core.Operators.unbox data : 'Expr)) in
            let _3 = (let data = parseState.GetInput(3) in (Microsoft.FSharp.Core.Operators.unbox data : 'Expr)) in
            Microsoft.FSharp.Core.Operators.box
                (
                   (
# 148 "CPar.fsy"
                                                               Prim2("+",  _1, _3) 
                   )
# 148 "CPar.fsy"
                 : 'ExprNotAccess));
# 968 "CPar.fs"
        (fun (parseState : Microsoft.FSharp.Text.Parsing.IParseState) ->
            let _1 = (let data = parseState.GetInput(1) in (Microsoft.FSharp.Core.Operators.unbox data : 'Expr)) in
            let _3 = (let data = parseState.GetInput(3) in (Microsoft.FSharp.Core.Operators.unbox data : 'Expr)) in
            Microsoft.FSharp.Core.Operators.box
                (
                   (
# 149 "CPar.fsy"
                                                               Prim2("-",  _1, _3) 
                   )
# 149 "CPar.fsy"
                 : 'ExprNotAccess));
# 980 "CPar.fs"
        (fun (parseState : Microsoft.FSharp.Text.Parsing.IParseState) ->
            let _1 = (let data = parseState.GetInput(1) in (Microsoft.FSharp.Core.Operators.unbox data : 'Expr)) in
            let _3 = (let data = parseState.GetInput(3) in (Microsoft.FSharp.Core.Operators.unbox data : 'Expr)) in
            Microsoft.FSharp.Core.Operators.box
                (
                   (
# 150 "CPar.fsy"
                                                               Prim2("*",  _1, _3) 
                   )
# 150 "CPar.fsy"
                 : 'ExprNotAccess));
# 992 "CPar.fs"
        (fun (parseState : Microsoft.FSharp.Text.Parsing.IParseState) ->
            let _1 = (let data = parseState.GetInput(1) in (Microsoft.FSharp.Core.Operators.unbox data : 'Expr)) in
            let _3 = (let data = parseState.GetInput(3) in (Microsoft.FSharp.Core.Operators.unbox data : 'Expr)) in
            Microsoft.FSharp.Core.Operators.box
                (
                   (
# 151 "CPar.fsy"
                                                               Prim2("/",  _1, _3) 
                   )
# 151 "CPar.fsy"
                 : 'ExprNotAccess));
# 1004 "CPar.fs"
        (fun (parseState : Microsoft.FSharp.Text.Parsing.IParseState) ->
            let _1 = (let data = parseState.GetInput(1) in (Microsoft.FSharp.Core.Operators.unbox data : 'Expr)) in
            let _3 = (let data = parseState.GetInput(3) in (Microsoft.FSharp.Core.Operators.unbox data : 'Expr)) in
            Microsoft.FSharp.Core.Operators.box
                (
                   (
# 152 "CPar.fsy"
                                                               Prim2("%",  _1, _3) 
                   )
# 152 "CPar.fsy"
                 : 'ExprNotAccess));
# 1016 "CPar.fs"
        (fun (parseState : Microsoft.FSharp.Text.Parsing.IParseState) ->
            let _1 = (let data = parseState.GetInput(1) in (Microsoft.FSharp.Core.Operators.unbox data : 'Expr)) in
            let _3 = (let data = parseState.GetInput(3) in (Microsoft.FSharp.Core.Operators.unbox data : 'Expr)) in
            Microsoft.FSharp.Core.Operators.box
                (
                   (
# 153 "CPar.fsy"
                                                               Prim2("==", _1, _3) 
                   )
# 153 "CPar.fsy"
                 : 'ExprNotAccess));
# 1028 "CPar.fs"
        (fun (parseState : Microsoft.FSharp.Text.Parsing.IParseState) ->
            let _1 = (let data = parseState.GetInput(1) in (Microsoft.FSharp.Core.Operators.unbox data : 'Expr)) in
            let _3 = (let data = parseState.GetInput(3) in (Microsoft.FSharp.Core.Operators.unbox data : 'Expr)) in
            Microsoft.FSharp.Core.Operators.box
                (
                   (
# 154 "CPar.fsy"
                                                               Prim2("!=", _1, _3) 
                   )
# 154 "CPar.fsy"
                 : 'ExprNotAccess));
# 1040 "CPar.fs"
        (fun (parseState : Microsoft.FSharp.Text.Parsing.IParseState) ->
            let _1 = (let data = parseState.GetInput(1) in (Microsoft.FSharp.Core.Operators.unbox data : 'Expr)) in
            let _3 = (let data = parseState.GetInput(3) in (Microsoft.FSharp.Core.Operators.unbox data : 'Expr)) in
            Microsoft.FSharp.Core.Operators.box
                (
                   (
# 155 "CPar.fsy"
                                                               Prim2(">",  _1, _3) 
                   )
# 155 "CPar.fsy"
                 : 'ExprNotAccess));
# 1052 "CPar.fs"
        (fun (parseState : Microsoft.FSharp.Text.Parsing.IParseState) ->
            let _1 = (let data = parseState.GetInput(1) in (Microsoft.FSharp.Core.Operators.unbox data : 'Expr)) in
            let _3 = (let data = parseState.GetInput(3) in (Microsoft.FSharp.Core.Operators.unbox data : 'Expr)) in
            Microsoft.FSharp.Core.Operators.box
                (
                   (
# 156 "CPar.fsy"
                                                               Prim2("<",  _1, _3) 
                   )
# 156 "CPar.fsy"
                 : 'ExprNotAccess));
# 1064 "CPar.fs"
        (fun (parseState : Microsoft.FSharp.Text.Parsing.IParseState) ->
            let _1 = (let data = parseState.GetInput(1) in (Microsoft.FSharp.Core.Operators.unbox data : 'Expr)) in
            let _3 = (let data = parseState.GetInput(3) in (Microsoft.FSharp.Core.Operators.unbox data : 'Expr)) in
            Microsoft.FSharp.Core.Operators.box
                (
                   (
# 157 "CPar.fsy"
                                                               Prim2(">=", _1, _3) 
                   )
# 157 "CPar.fsy"
                 : 'ExprNotAccess));
# 1076 "CPar.fs"
        (fun (parseState : Microsoft.FSharp.Text.Parsing.IParseState) ->
            let _1 = (let data = parseState.GetInput(1) in (Microsoft.FSharp.Core.Operators.unbox data : 'Expr)) in
            let _3 = (let data = parseState.GetInput(3) in (Microsoft.FSharp.Core.Operators.unbox data : 'Expr)) in
            Microsoft.FSharp.Core.Operators.box
                (
                   (
# 158 "CPar.fsy"
                                                               Prim2("<=", _1, _3) 
                   )
# 158 "CPar.fsy"
                 : 'ExprNotAccess));
# 1088 "CPar.fs"
        (fun (parseState : Microsoft.FSharp.Text.Parsing.IParseState) ->
            let _1 = (let data = parseState.GetInput(1) in (Microsoft.FSharp.Core.Operators.unbox data : 'Expr)) in
            let _3 = (let data = parseState.GetInput(3) in (Microsoft.FSharp.Core.Operators.unbox data : 'Expr)) in
            Microsoft.FSharp.Core.Operators.box
                (
                   (
# 159 "CPar.fsy"
                                                               Andalso(_1, _3)     
                   )
# 159 "CPar.fsy"
                 : 'ExprNotAccess));
# 1100 "CPar.fs"
        (fun (parseState : Microsoft.FSharp.Text.Parsing.IParseState) ->
            let _1 = (let data = parseState.GetInput(1) in (Microsoft.FSharp.Core.Operators.unbox data : 'Expr)) in
            let _3 = (let data = parseState.GetInput(3) in (Microsoft.FSharp.Core.Operators.unbox data : 'Expr)) in
            Microsoft.FSharp.Core.Operators.box
                (
                   (
# 160 "CPar.fsy"
                                                               Orelse(_1, _3)      
                   )
# 160 "CPar.fsy"
                 : 'ExprNotAccess));
# 1112 "CPar.fs"
        (fun (parseState : Microsoft.FSharp.Text.Parsing.IParseState) ->
            let _1 = (let data = parseState.GetInput(1) in (Microsoft.FSharp.Core.Operators.unbox data : 'Const)) in
            Microsoft.FSharp.Core.Operators.box
                (
                   (
# 164 "CPar.fsy"
                                                               CstI _1             
                   )
# 164 "CPar.fsy"
                 : 'AtExprNotAccess));
# 1123 "CPar.fs"
        (fun (parseState : Microsoft.FSharp.Text.Parsing.IParseState) ->
            let _2 = (let data = parseState.GetInput(2) in (Microsoft.FSharp.Core.Operators.unbox data : 'ExprNotAccess)) in
            Microsoft.FSharp.Core.Operators.box
                (
                   (
# 165 "CPar.fsy"
                                                               _2                  
                   )
# 165 "CPar.fsy"
                 : 'AtExprNotAccess));
# 1134 "CPar.fs"
        (fun (parseState : Microsoft.FSharp.Text.Parsing.IParseState) ->
            let _2 = (let data = parseState.GetInput(2) in (Microsoft.FSharp.Core.Operators.unbox data : 'Access)) in
            Microsoft.FSharp.Core.Operators.box
                (
                   (
# 166 "CPar.fsy"
                                                               Addr _2             
                   )
# 166 "CPar.fsy"
                 : 'AtExprNotAccess));
# 1145 "CPar.fs"
        (fun (parseState : Microsoft.FSharp.Text.Parsing.IParseState) ->
            let _1 = (let data = parseState.GetInput(1) in (Microsoft.FSharp.Core.Operators.unbox data : string)) in
            Microsoft.FSharp.Core.Operators.box
                (
                   (
# 170 "CPar.fsy"
                                                               AccVar _1           
                   )
# 170 "CPar.fsy"
                 : 'Access));
# 1156 "CPar.fs"
        (fun (parseState : Microsoft.FSharp.Text.Parsing.IParseState) ->
            let _2 = (let data = parseState.GetInput(2) in (Microsoft.FSharp.Core.Operators.unbox data : 'Access)) in
            Microsoft.FSharp.Core.Operators.box
                (
                   (
# 171 "CPar.fsy"
                                                               _2                  
                   )
# 171 "CPar.fsy"
                 : 'Access));
# 1167 "CPar.fs"
        (fun (parseState : Microsoft.FSharp.Text.Parsing.IParseState) ->
            let _2 = (let data = parseState.GetInput(2) in (Microsoft.FSharp.Core.Operators.unbox data : 'Access)) in
            Microsoft.FSharp.Core.Operators.box
                (
                   (
# 172 "CPar.fsy"
                                                               AccDeref (Access _2)
                   )
# 172 "CPar.fsy"
                 : 'Access));
# 1178 "CPar.fs"
        (fun (parseState : Microsoft.FSharp.Text.Parsing.IParseState) ->
            let _2 = (let data = parseState.GetInput(2) in (Microsoft.FSharp.Core.Operators.unbox data : 'AtExprNotAccess)) in
            Microsoft.FSharp.Core.Operators.box
                (
                   (
# 173 "CPar.fsy"
                                                               AccDeref _2         
                   )
# 173 "CPar.fsy"
                 : 'Access));
# 1189 "CPar.fs"
        (fun (parseState : Microsoft.FSharp.Text.Parsing.IParseState) ->
            let _1 = (let data = parseState.GetInput(1) in (Microsoft.FSharp.Core.Operators.unbox data : 'Access)) in
            let _3 = (let data = parseState.GetInput(3) in (Microsoft.FSharp.Core.Operators.unbox data : 'Expr)) in
            Microsoft.FSharp.Core.Operators.box
                (
                   (
# 174 "CPar.fsy"
                                                               AccIndex(_1, _3)    
                   )
# 174 "CPar.fsy"
                 : 'Access));
# 1201 "CPar.fs"
        (fun (parseState : Microsoft.FSharp.Text.Parsing.IParseState) ->
            Microsoft.FSharp.Core.Operators.box
                (
                   (
# 178 "CPar.fsy"
                                                               []       
                   )
# 178 "CPar.fsy"
                 : 'Exprs));
# 1211 "CPar.fs"
        (fun (parseState : Microsoft.FSharp.Text.Parsing.IParseState) ->
            let _1 = (let data = parseState.GetInput(1) in (Microsoft.FSharp.Core.Operators.unbox data : 'Exprs1)) in
            Microsoft.FSharp.Core.Operators.box
                (
                   (
# 179 "CPar.fsy"
                                                               _1       
                   )
# 179 "CPar.fsy"
                 : 'Exprs));
# 1222 "CPar.fs"
        (fun (parseState : Microsoft.FSharp.Text.Parsing.IParseState) ->
            let _1 = (let data = parseState.GetInput(1) in (Microsoft.FSharp.Core.Operators.unbox data : 'Expr)) in
            Microsoft.FSharp.Core.Operators.box
                (
                   (
# 183 "CPar.fsy"
                                                               [_1]     
                   )
# 183 "CPar.fsy"
                 : 'Exprs1));
# 1233 "CPar.fs"
        (fun (parseState : Microsoft.FSharp.Text.Parsing.IParseState) ->
            let _1 = (let data = parseState.GetInput(1) in (Microsoft.FSharp.Core.Operators.unbox data : 'Expr)) in
            let _3 = (let data = parseState.GetInput(3) in (Microsoft.FSharp.Core.Operators.unbox data : 'Exprs1)) in
            Microsoft.FSharp.Core.Operators.box
                (
                   (
# 184 "CPar.fsy"
                                                               _1 :: _3 
                   )
# 184 "CPar.fsy"
                 : 'Exprs1));
# 1245 "CPar.fs"
        (fun (parseState : Microsoft.FSharp.Text.Parsing.IParseState) ->
            let _1 = (let data = parseState.GetInput(1) in (Microsoft.FSharp.Core.Operators.unbox data : int)) in
            Microsoft.FSharp.Core.Operators.box
                (
                   (
# 188 "CPar.fsy"
                                                               _1       
                   )
# 188 "CPar.fsy"
                 : 'Const));
# 1256 "CPar.fs"
        (fun (parseState : Microsoft.FSharp.Text.Parsing.IParseState) ->
            let _1 = (let data = parseState.GetInput(1) in (Microsoft.FSharp.Core.Operators.unbox data : int)) in
            Microsoft.FSharp.Core.Operators.box
                (
                   (
# 189 "CPar.fsy"
                                                               _1       
                   )
# 189 "CPar.fsy"
                 : 'Const));
# 1267 "CPar.fs"
        (fun (parseState : Microsoft.FSharp.Text.Parsing.IParseState) ->
            let _2 = (let data = parseState.GetInput(2) in (Microsoft.FSharp.Core.Operators.unbox data : int)) in
            Microsoft.FSharp.Core.Operators.box
                (
                   (
# 190 "CPar.fsy"
                                                               - _2     
                   )
# 190 "CPar.fsy"
                 : 'Const));
# 1278 "CPar.fs"
        (fun (parseState : Microsoft.FSharp.Text.Parsing.IParseState) ->
            Microsoft.FSharp.Core.Operators.box
                (
                   (
# 191 "CPar.fsy"
                                                               -1       
                   )
# 191 "CPar.fsy"
                 : 'Const));
# 1288 "CPar.fs"
        (fun (parseState : Microsoft.FSharp.Text.Parsing.IParseState) ->
            Microsoft.FSharp.Core.Operators.box
                (
                   (
# 195 "CPar.fsy"
                                                               TypI     
                   )
# 195 "CPar.fsy"
                 : 'Type));
# 1298 "CPar.fs"
        (fun (parseState : Microsoft.FSharp.Text.Parsing.IParseState) ->
            Microsoft.FSharp.Core.Operators.box
                (
                   (
# 196 "CPar.fsy"
                                                               TypC     
                   )
# 196 "CPar.fsy"
                 : 'Type));
|]
# 1309 "CPar.fs"
let tables () : Microsoft.FSharp.Text.Parsing.Tables<_> = 
  { reductions= _fsyacc_reductions ();
    endOfInputTag = _fsyacc_endOfInputTag;
    tagOfToken = tagOfToken;
    dataOfToken = _fsyacc_dataOfToken; 
    actionTableElements = _fsyacc_actionTableElements;
    actionTableRowOffsets = _fsyacc_actionTableRowOffsets;
    stateToProdIdxsTableElements = _fsyacc_stateToProdIdxsTableElements;
    stateToProdIdxsTableRowOffsets = _fsyacc_stateToProdIdxsTableRowOffsets;
    reductionSymbolCounts = _fsyacc_reductionSymbolCounts;
    immediateActions = _fsyacc_immediateActions;
    gotos = _fsyacc_gotos;
    sparseGotoTableRowOffsets = _fsyacc_sparseGotoTableRowOffsets;
    tagOfErrorTerminal = _fsyacc_tagOfErrorTerminal;
    parseError = (fun (ctxt:Microsoft.FSharp.Text.Parsing.ParseErrorContext<_>) -> 
                              match parse_error_rich with 
                              | Some f -> f ctxt
                              | None -> parse_error ctxt.Message);
    numTerminals = 44;
    productionToNonTerminalTable = _fsyacc_productionToNonTerminalTable  }
let engine lexer lexbuf startState = (tables ()).Interpret(lexer, lexbuf, startState)
let Main lexer lexbuf : MicroWac.Absyn.Program =
    Microsoft.FSharp.Core.Operators.unbox ((tables ()).Interpret(lexer, lexbuf, 0))
