// File: /workspace/github_c_makefile_star2_O1/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 0x3a6d(%rip), %rdi      # 0x12cc1
callq 0x977f
movq %rax, 0xc100(%rip)      # 0x1b360
leaq 0x3d18(%rip), %rdi      # 0x12f7f
callq 0x977f
movq %rax, 0xc0f5(%rip)      # 0x1b368
leaq 0x3a67(%rip), %rdi      # 0x12ce1
callq 0x977f
movq %rax, 0xc0ea(%rip)      # 0x1b370
leaq 0x3cf9(%rip), %rdi      # 0x12f86
callq 0x977f
movq %rax, 0xc0df(%rip)      # 0x1b378
leaq 0x3a5e(%rip), %rdi      # 0x12cfe
callq 0x977f
movq %rax, 0xc0d4(%rip)      # 0x1b380
leaq 0x3cd8(%rip), %rdi      # 0x12f8b
callq 0x977f
movq %rax, 0xc0c9(%rip)      # 0x1b388
leaq 0x3444(%rip), %rdi      # 0x1270a
callq 0x977f
movq %rax, 0xc0be(%rip)      # 0x1b390
leaq 0x3cba(%rip), %rdi      # 0x12f93
callq 0x977f
movq %rax, 0xc0b3(%rip)      # 0x1b398
leaq 0x3caf(%rip), %rdi      # 0x12f9b
callq 0x977f
movq %rax, 0xc0a8(%rip)      # 0x1b3a0
leaq 0x3ca2(%rip), %rdi      # 0x12fa1
callq 0x977f
movq %rax, 0xc09d(%rip)      # 0x1b3a8
leaq 0x3c95(%rip), %rdi      # 0x12fa7
callq 0x977f
movq %rax, 0xc092(%rip)      # 0x1b3b0
leaq 0x3c87(%rip), %rdi      # 0x12fac
callq 0x977f
movq %rax, 0xc087(%rip)      # 0x1b3b8
leaq 0x3c7a(%rip), %rdi      # 0x12fb2
callq 0x977f
movq %rax, 0xc07c(%rip)      # 0x1b3c0
leaq 0x3c68(%rip), %rdi      # 0x12fb3
callq 0x977f
movq %rax, 0xc071(%rip)      # 0x1b3c8
leaq 0x31f6(%rip), %rdi      # 0x12554
callq 0x977f
movq %rax, %r10
movq %rax, 0xc063(%rip)      # 0x1b3d0
movq 0xbfec(%rip), %rdx      # 0x1b360
movq 0xbfed(%rip), %rcx      # 0x1b368
movq 0xbfee(%rip), %r8       # 0x1b370
movq 0xbfef(%rip), %r9       # 0x1b378
subq $0x8, %rsp
leaq 0x3c24(%rip), %rsi      # 0x12fb8
xorl %edi, %edi
xorl %eax, %eax
pushq %r10
pushq 0xc028(%rip)            # 0x1b3c8
pushq 0xc01a(%rip)            # 0x1b3c0
pushq 0xc00c(%rip)            # 0x1b3b8
pushq 0xbffe(%rip)            # 0x1b3b0
pushq 0xbff0(%rip)            # 0x1b3a8
pushq 0xbfe2(%rip)            # 0x1b3a0
pushq 0xbfd4(%rip)            # 0x1b398
pushq 0xbfc6(%rip)            # 0x1b390
pushq 0xbfb8(%rip)            # 0x1b388
pushq 0xbfaa(%rip)            # 0x1b380
callq 0xe6f4
addq $0x60, %rsp
popq %rax
retq