// File: /workspace/github_c_makefile_star2_O0/orangeduck[P]mpc/tests/grammar.c
// Function: test_partial
void test_partial(void) {
  
  mpc_ast_t *t0;
  mpc_err_t *err;

  mpc_parser_t *Line = mpc_new("line");
  mpc_parser_t *Number = mpc_new("number");
  mpc_parser_t *QuotedString = mpc_new("quoted_string");
  mpc_parser_t *LinePragma = mpc_new("linepragma");
  mpc_parser_t *Parser = mpc_new("parser");
  
  mpc_define(Line, mpca_tag(mpc_apply(mpc_sym("#line"), mpcf_str_ast), "string"));
  
  err = mpca_lang(MPCA_LANG_PREDICTIVE,
    "number        : /[0-9]+/ ;\n"
    "quoted_string : /\"(\\.|[^\"])*\"/ ;\n"
    "linepragma    : <line> <number> <quoted_string>;\n"
    "parser        : /^/ (<linepragma>)* /$/ ;\n",
    Line, Number, QuotedString, LinePragma, Parser, NULL);
  
  PT_ASSERT(err == NULL);
  
  t0 = mpc_ast_build(3, ">", 
          mpc_ast_new("regex", ""),
          mpc_ast_build(3, "linepragma|>", 
            mpc_ast_new("line|string", "#line"),
            mpc_ast_new("number|regex", "10"),
            mpc_ast_new("quoted_string|regex", "\"test\"")),
          mpc_ast_new("regex", ""));
  
  PT_ASSERT(mpc_test_pass(Parser, "#line 10 \"test\"", t0, 
    (int(*)(const void*,const void*))mpc_ast_eq, 
    (mpc_dtor_t)mpc_ast_delete, 
    (void(*)(const void*))mpc_ast_print));
    
  mpc_ast_delete(t0);

  mpc_cleanup(5, Line, Number, QuotedString, LinePragma, Parser);

}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x70, %rsp
leaq 0x10c00(%rip), %rdi     # 0x1532f
callq 0x9350
movq %rax, -0x18(%rbp)
leaq 0x10bc8(%rip), %rdi     # 0x15307
callq 0x9350
movq %rax, -0x20(%rbp)
leaq 0x10bbf(%rip), %rdi     # 0x1530e
callq 0x9350
movq %rax, -0x28(%rbp)
leaq 0x10bbd(%rip), %rdi     # 0x1531c
callq 0x9350
movq %rax, -0x30(%rbp)
leaq 0x10bb8(%rip), %rdi     # 0x15327
callq 0x9350
movq %rax, -0x38(%rbp)
movq -0x18(%rbp), %rax
movq %rax, -0x60(%rbp)
leaq 0x10ba7(%rip), %rdi     # 0x1532e
callq 0xb990
movq %rax, %rdi
leaq 0xa14a(%rip), %rsi      # 0xe8e0
callq 0xa170
movq %rax, %rdi
leaq 0x10b70(%rip), %rsi     # 0x15315
callq 0xe9d0
movq -0x60(%rbp), %rdi
movq %rax, %rsi
callq 0x9890
movq -0x18(%rbp), %rdx
movq -0x20(%rbp), %rcx
movq -0x28(%rbp), %r8
movq -0x30(%rbp), %r9
movq -0x38(%rbp), %rax
movl $0x1, %edi
leaq 0x10b5e(%rip), %rsi     # 0x15334
xorl %r10d, %r10d
movq %rax, (%rsp)
movq $0x0, 0x8(%rsp)
movb $0x0, %al
callq 0xff70
movq %rax, -0x10(%rbp)
cmpq $0x0, -0x10(%rbp)
sete %al
andb $0x1, %al
movzbl %al, %edi
leaq 0x10bc7(%rip), %rsi     # 0x153cc
leaq 0x1052e(%rip), %rdx     # 0x14d3a
movl $0x97, %ecx
callq 0x5780
leaq 0x1105b(%rip), %rdi     # 0x15878
leaq 0x12dc6(%rip), %rsi     # 0x175ea
callq 0xd8f0
movq %rax, -0x48(%rbp)
leaq 0x10bb1(%rip), %rdi     # 0x153e5
leaq 0x10af3(%rip), %rsi     # 0x1532e
callq 0xd8f0
movq %rax, -0x58(%rbp)
leaq 0x10ba6(%rip), %rdi     # 0x153f1
leaq 0x10bac(%rip), %rsi     # 0x153fe
callq 0xd8f0
movq %rax, -0x50(%rbp)
leaq 0x10b9f(%rip), %rdi     # 0x15401
leaq 0x10bb5(%rip), %rsi     # 0x1541e
callq 0xd8f0
movq -0x58(%rbp), %rdx
movq -0x50(%rbp), %rcx
movq %rax, %r8
movl $0x3, %edi
leaq 0x10b53(%rip), %rsi     # 0x153d8
movb $0x0, %al
callq 0xda00
movq %rax, -0x40(%rbp)
leaq 0x10fe1(%rip), %rdi     # 0x15878
leaq 0x12d4c(%rip), %rsi     # 0x175ea
callq 0xd8f0
movq -0x48(%rbp), %rdx
movq -0x40(%rbp), %rcx
movq %rax, %r8
movl $0x3, %edi
leaq 0x12d70(%rip), %rsi     # 0x1762a
movb $0x0, %al
callq 0xda00
movq %rax, -0x8(%rbp)
movq -0x38(%rbp), %rdi
movq -0x8(%rbp), %rdx
leaq 0x10b41(%rip), %rsi     # 0x15415
leaq 0x9355(%rip), %rcx      # 0xdc30
leaq 0x8f8e(%rip), %r8       # 0xd870
leaq 0x9707(%rip), %r9       # 0xdff0
callq 0xd780
movl %eax, %edi
leaq 0x10b2e(%rip), %rsi     # 0x15425
leaq 0x1043c(%rip), %rdx     # 0x14d3a
movl $0xa4, %ecx
callq 0x5780
movq -0x8(%rbp), %rdi
callq 0xd870
movq -0x18(%rbp), %rsi
movq -0x20(%rbp), %rdx
movq -0x28(%rbp), %rcx
movq -0x30(%rbp), %r8
movq -0x38(%rbp), %r9
movl $0x5, %edi
movb $0x0, %al
callq 0x9a50
addq $0x70, %rsp
popq %rbp
retq
nopw (%rax,%rax)