// File: /workspace/github_c_makefile_star2_O2/voithos[P]awl/src/parser.c
// Function: setup_parser
void setup_parser(void) {
    Integer = mpc_new("integer");
    FPoint = mpc_new("fpoint");
    Number = mpc_new("number");
    Bool = mpc_new("bool");
    String = mpc_new("string");
    Comment = mpc_new("comment");
    Symbol = mpc_new("symbol");
    QSymbol = mpc_new("qsymbol");
    Sexpr = mpc_new("sexpr");
    Qexpr = mpc_new("qexpr");
    Dict = mpc_new("dict");
    EExpr = mpc_new("eexpr");
    CExpr = mpc_new("cexpr");
    Expr = mpc_new("expr");
    Awl = mpc_new("awl");

    mpca_lang(MPCA_LANG_DEFAULT,
        "                                                                   \
        integer : /[+-]?[0-9]+/ ;                                           \
        fpoint  : /[+-]?[0-9]+\\.[0-9]*/ | /[+-]?[0-9]*\\.[0-9]+/ ;         \
        number  : <fpoint> | <integer> ;                                    \
        bool    : \"true\" | \"false\" ;                                    \
        string  : /\"(\\\\.|[^\"])*\"/ | /'(\\\\.|[^'])*'/ ;                \
        comment : /;[^\\r\\n]*/ ;                                           \
        symbol  : /[a-zA-Z0-9_+\\-*\\/=<>!\\?&%^$]+/ ;                      \
        qsymbol : ':' <string> | ':' <symbol> ;                             \
        sexpr   : '(' <expr>* ')' ;                                         \
        qexpr   : '{' <expr>* '}' ;                                         \
        dict    : '[' (<qsymbol> <expr>)* ']' ;                             \
        eexpr   : '\\\\' <expr> ;                                           \
        cexpr   : '@' <expr> ;                                              \
        expr    : <number> | <bool> | <string> | <symbol> | <qsymbol> |     \
                  <comment> | <sexpr> | <qexpr> | <dict> |                  \
                  <eexpr> | <cexpr> ;                                       \
        awl     : /^/ <expr>* /$/ ;                                         \
        ",
        Integer, FPoint, Number, Bool, String, Comment, Symbol, QSymbol, Sexpr, Qexpr, Dict, EExpr, CExpr, Expr, Awl);
}

// Assembly:
pushq %rax
leaq 0x420d(%rip), %rdi      # 0x10d11
callq 0x86eb
movq %rax, 0xc850(%rip)      # 0x19360
leaq 0x44b8(%rip), %rdi      # 0x10fcf
callq 0x86eb
movq %rax, 0xc845(%rip)      # 0x19368
leaq 0x4207(%rip), %rdi      # 0x10d31
callq 0x86eb
movq %rax, 0xc83a(%rip)      # 0x19370
leaq 0x4499(%rip), %rdi      # 0x10fd6
callq 0x86eb
movq %rax, 0xc82f(%rip)      # 0x19378
leaq 0x41fe(%rip), %rdi      # 0x10d4e
callq 0x86eb
movq %rax, 0xc824(%rip)      # 0x19380
leaq 0x4478(%rip), %rdi      # 0x10fdb
callq 0x86eb
movq %rax, 0xc819(%rip)      # 0x19388
leaq 0x3bb0(%rip), %rdi      # 0x10726
callq 0x86eb
movq %rax, 0xc80e(%rip)      # 0x19390
leaq 0x445a(%rip), %rdi      # 0x10fe3
callq 0x86eb
movq %rax, 0xc803(%rip)      # 0x19398
leaq 0x444f(%rip), %rdi      # 0x10feb
callq 0x86eb
movq %rax, 0xc7f8(%rip)      # 0x193a0
leaq 0x4442(%rip), %rdi      # 0x10ff1
callq 0x86eb
movq %rax, 0xc7ed(%rip)      # 0x193a8
leaq 0x4435(%rip), %rdi      # 0x10ff7
callq 0x86eb
movq %rax, 0xc7e2(%rip)      # 0x193b0
leaq 0x4427(%rip), %rdi      # 0x10ffc
callq 0x86eb
movq %rax, 0xc7d7(%rip)      # 0x193b8
leaq 0x441a(%rip), %rdi      # 0x11002
callq 0x86eb
movq %rax, 0xc7cc(%rip)      # 0x193c0
leaq 0x4408(%rip), %rdi      # 0x11003
callq 0x86eb
movq %rax, 0xc7c1(%rip)      # 0x193c8
leaq 0x3946(%rip), %rdi      # 0x10554
callq 0x86eb
movq %rax, %r10
movq %rax, 0xc7b3(%rip)      # 0x193d0
movq 0xc73c(%rip), %rdx      # 0x19360
movq 0xc73d(%rip), %rcx      # 0x19368
movq 0xc73e(%rip), %r8       # 0x19370
movq 0xc73f(%rip), %r9       # 0x19378
subq $0x8, %rsp
leaq 0x43c4(%rip), %rsi      # 0x11008
xorl %edi, %edi
xorl %eax, %eax
pushq %r10
pushq 0xc778(%rip)            # 0x193c8
pushq 0xc76a(%rip)            # 0x193c0
pushq 0xc75c(%rip)            # 0x193b8
pushq 0xc74e(%rip)            # 0x193b0
pushq 0xc740(%rip)            # 0x193a8
pushq 0xc732(%rip)            # 0x193a0
pushq 0xc724(%rip)            # 0x19398
pushq 0xc716(%rip)            # 0x19390
pushq 0xc708(%rip)            # 0x19388
pushq 0xc6fa(%rip)            # 0x19380
callq 0xc006
addq $0x60, %rsp
popq %rax
retq