// File: /workspace/github_c_makefile_star2_O0/orangeduck[P]mpc/tests/grammar.c
// Function: test_doge
void test_doge(void) {
  
  mpc_ast_t *t0;  
  mpc_parser_t* Adjective = mpc_new("adjective");
  mpc_parser_t* Noun      = mpc_new("noun");
  mpc_parser_t* Phrase    = mpc_new("phrase");
  mpc_parser_t* Doge      = mpc_new("doge");

  mpca_lang(MPCA_LANG_DEFAULT,
    " adjective : \"wow\" | \"many\" | \"so\" | \"such\";                 "
    " noun      : \"lisp\" | \"language\" | \"c\" | \"book\" | \"build\"; "
    " phrase    : <adjective> <noun>;                                     "
    " doge      : /^/ <phrase>* /$/;                                      ",
    Adjective, Noun, Phrase, Doge, NULL);
  
  t0 = 
      mpc_ast_build(4, ">", 
          mpc_ast_new("regex", ""),
          mpc_ast_build(2, "phrase|>", 
            mpc_ast_new("adjective|string", "so"),
            mpc_ast_new("noun|string", "c")),
          mpc_ast_build(2, "phrase|>", 
            mpc_ast_new("adjective|string", "so"),
            mpc_ast_new("noun|string", "c")),
          mpc_ast_new("regex", "")
        );
            
  PT_ASSERT(mpc_test_pass(Doge, "so c so c", t0, (int(*)(const void*,const void*))mpc_ast_eq, (mpc_dtor_t)mpc_ast_delete, (void(*)(const void*))mpc_ast_print));
 
  PT_ASSERT(mpc_test_fail(Doge, "so a so c", 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(4, Adjective, Noun, Phrase, Doge);
  
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x60, %rsp
leaq 0x10b67(%rip), %rdi     # 0x15086
callq 0x9350
movq %rax, -0x10(%rbp)
leaq 0x10b61(%rip), %rdi     # 0x15090
callq 0x9350
movq %rax, -0x18(%rbp)
leaq 0x10b56(%rip), %rdi     # 0x15095
callq 0x9350
movq %rax, -0x20(%rbp)
leaq 0x10b4d(%rip), %rdi     # 0x1509c
callq 0x9350
movq %rax, -0x28(%rbp)
movq -0x10(%rbp), %rdx
movq -0x18(%rbp), %rcx
movq -0x20(%rbp), %r8
movq -0x28(%rbp), %r9
xorl %edi, %edi
leaq 0x10b30(%rip), %rsi     # 0x150a1
xorl %eax, %eax
movq $0x0, (%rsp)
movb $0x0, %al
callq 0xff70
leaq 0x112ef(%rip), %rdi     # 0x15878
leaq 0x1305a(%rip), %rsi     # 0x175ea
callq 0xd8f0
movq %rax, -0x40(%rbp)
leaq 0x10c0d(%rip), %rdi     # 0x151ad
leaq 0x10c17(%rip), %rsi     # 0x151be
callq 0xd8f0
movq %rax, -0x50(%rbp)
leaq 0x10c0a(%rip), %rdi     # 0x151c1
leaq 0x10cb4(%rip), %rsi     # 0x15272
callq 0xd8f0
movq -0x50(%rbp), %rdx
movq %rax, %rcx
movl $0x2, %edi
leaq 0x10bce(%rip), %rsi     # 0x151a4
movb $0x0, %al
callq 0xda00
movq %rax, -0x38(%rbp)
leaq 0x10bc5(%rip), %rdi     # 0x151ad
leaq 0x10bcf(%rip), %rsi     # 0x151be
callq 0xd8f0
movq %rax, -0x48(%rbp)
leaq 0x10bc2(%rip), %rdi     # 0x151c1
leaq 0x10c6c(%rip), %rsi     # 0x15272
callq 0xd8f0
movq -0x48(%rbp), %rdx
movq %rax, %rcx
movl $0x2, %edi
leaq 0x10b86(%rip), %rsi     # 0x151a4
movb $0x0, %al
callq 0xda00
movq %rax, -0x30(%rbp)
leaq 0x11248(%rip), %rdi     # 0x15878
leaq 0x12fb3(%rip), %rsi     # 0x175ea
callq 0xd8f0
movq -0x40(%rbp), %rdx
movq -0x38(%rbp), %rcx
movq -0x30(%rbp), %r8
movq %rax, %r9
movl $0x4, %edi
leaq 0x12fd3(%rip), %rsi     # 0x1762a
movb $0x0, %al
callq 0xda00
movq %rax, -0x8(%rbp)
movq -0x28(%rbp), %rdi
movq -0x8(%rbp), %rdx
leaq 0x10b5c(%rip), %rsi     # 0x151cd
leaq 0x95b8(%rip), %rcx      # 0xdc30
leaq 0x91f1(%rip), %r8       # 0xd870
leaq 0x996a(%rip), %r9       # 0xdff0
callq 0xd780
movl %eax, %edi
leaq 0x10b43(%rip), %rsi     # 0x151d7
leaq 0x1069f(%rip), %rdx     # 0x14d3a
movl $0x79, %ecx
callq 0x5780
movq -0x28(%rbp), %rdi
movq -0x8(%rbp), %rdx
leaq 0x10bb6(%rip), %rsi     # 0x1526a
leaq 0x9575(%rip), %rcx      # 0xdc30
leaq 0x91ae(%rip), %r8       # 0xd870
leaq 0x9927(%rip), %r9       # 0xdff0
callq 0xd6f0
movl %eax, %edi
leaq 0x10b9d(%rip), %rsi     # 0x15274
leaq 0x1065c(%rip), %rdx     # 0x14d3a
movl $0x7b, %ecx
callq 0x5780
movq -0x8(%rbp), %rdi
callq 0xd870
movq -0x10(%rbp), %rsi
movq -0x18(%rbp), %rdx
movq -0x20(%rbp), %rcx
movq -0x28(%rbp), %r8
movl $0x4, %edi
movb $0x0, %al
callq 0x9a50
addq $0x60, %rsp
popq %rbp
retq
nopw %cs:(%rax,%rax)