// File: /workspace/github_c_makefile_star2_O3/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 0x3f79(%rip), %rdi      # 0x12d19
callq 0x9524
movq %rax, 0xc5b4(%rip)      # 0x1b360
leaq 0x4224(%rip), %rdi      # 0x12fd7
callq 0x9524
movq %rax, 0xc5a9(%rip)      # 0x1b368
leaq 0x3f73(%rip), %rdi      # 0x12d39
callq 0x9524
movq %rax, 0xc59e(%rip)      # 0x1b370
leaq 0x4205(%rip), %rdi      # 0x12fde
callq 0x9524
movq %rax, 0xc593(%rip)      # 0x1b378
leaq 0x3f6a(%rip), %rdi      # 0x12d56
callq 0x9524
movq %rax, 0xc588(%rip)      # 0x1b380
leaq 0x41e4(%rip), %rdi      # 0x12fe3
callq 0x9524
movq %rax, 0xc57d(%rip)      # 0x1b388
leaq 0x38e4(%rip), %rdi      # 0x126f6
callq 0x9524
movq %rax, 0xc572(%rip)      # 0x1b390
leaq 0x41c6(%rip), %rdi      # 0x12feb
callq 0x9524
movq %rax, 0xc567(%rip)      # 0x1b398
leaq 0x41bb(%rip), %rdi      # 0x12ff3
callq 0x9524
movq %rax, 0xc55c(%rip)      # 0x1b3a0
leaq 0x41ae(%rip), %rdi      # 0x12ff9
callq 0x9524
movq %rax, 0xc551(%rip)      # 0x1b3a8
leaq 0x41a1(%rip), %rdi      # 0x12fff
callq 0x9524
movq %rax, 0xc546(%rip)      # 0x1b3b0
leaq 0x4193(%rip), %rdi      # 0x13004
callq 0x9524
movq %rax, 0xc53b(%rip)      # 0x1b3b8
leaq 0x4186(%rip), %rdi      # 0x1300a
callq 0x9524
movq %rax, 0xc530(%rip)      # 0x1b3c0
leaq 0x4174(%rip), %rdi      # 0x1300b
callq 0x9524
movq %rax, 0xc525(%rip)      # 0x1b3c8
leaq 0x36aa(%rip), %rdi      # 0x12554
callq 0x9524
movq %rax, %r10
movq %rax, 0xc517(%rip)      # 0x1b3d0
movq 0xc4a0(%rip), %rdx      # 0x1b360
movq 0xc4a1(%rip), %rcx      # 0x1b368
movq 0xc4a2(%rip), %r8       # 0x1b370
movq 0xc4a3(%rip), %r9       # 0x1b378
subq $0x8, %rsp
leaq 0x4130(%rip), %rsi      # 0x13010
xorl %edi, %edi
xorl %eax, %eax
pushq %r10
pushq 0xc4dc(%rip)            # 0x1b3c8
pushq 0xc4ce(%rip)            # 0x1b3c0
pushq 0xc4c0(%rip)            # 0x1b3b8
pushq 0xc4b2(%rip)            # 0x1b3b0
pushq 0xc4a4(%rip)            # 0x1b3a8
pushq 0xc496(%rip)            # 0x1b3a0
pushq 0xc488(%rip)            # 0x1b398
pushq 0xc47a(%rip)            # 0x1b390
pushq 0xc46c(%rip)            # 0x1b388
pushq 0xc45e(%rip)            # 0x1b380
callq 0xe277
addq $0x60, %rsp
popq %rax
retq