// File: Eronana[P]strawberry/src/parser.cpp
// Function: Parser::ArrayLiteral()
AST_PTR Parser::ArrayLiteral()
{
    if(!acceptEat(TOKEN_LEFT_SQUARE_BARCKET))PARSER_ERROR("exception a array literal start with '['");
    DEF_AST_RET(ArrayLiteral);
    while(!accept(TOKEN_RIGHT_SQUARE_BARCKET))
    {
        if(accept(TOKEN_COMMA))
        {
            ret->nodes.push_back(NullLiteral());
            eatToken();
        }
        else
        {
            ret->nodes.push_back(AssignmentExpression());
            if(!acceptEat(TOKEN_COMMA)&&!accept(TOKEN_RIGHT_SQUARE_BARCKET))PARSER_ERROR("excepted a ',' after array element");
        }
    }
    eatToken();
    RETURN_PTR;
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x110, %rsp            # imm = 0x110
movq %rdi, -0xb0(%rbp)
movq %rdi, %rax
movq %rax, -0xa8(%rbp)
movq %rdi, -0x8(%rbp)
movq %rsi, -0x10(%rbp)
movq -0x10(%rbp), %rdi
movq %rdi, -0xa0(%rbp)
movl $0x10, -0x14(%rbp)
leaq -0x14(%rbp), %rsi
callq 0x31240
xorb $-0x1, %al
testb $0x1, %al
jne 0x29a3a
jmp 0x29b1e
movb $0x1, -0x4a(%rbp)
movl $0x70, %edi
callq 0x7180
movq -0xa0(%rbp), %rdi
movq %rax, -0xc0(%rbp)
xorl %esi, %esi
callq 0x277f0
movq %rax, -0xb8(%rbp)
jmp 0x29a66
leaq -0x49(%rbp), %rdi
movq %rdi, -0xc8(%rbp)
callq 0x75f0
movq -0xc8(%rbp), %rdx
leaq 0x2edef(%rip), %rsi     # 0x58873
leaq -0x48(%rbp), %rdi
callq 0xf990
jmp 0x29a8f
movq -0xb8(%rbp), %rsi
movq -0xc0(%rbp), %rdi
leaq -0x48(%rbp), %rdx
callq 0xac90
jmp 0x29aa8
movq -0xc0(%rbp), %rdi
movb $0x0, -0x4a(%rbp)
leaq 0x5f146(%rip), %rsi     # 0x88c00
leaq -0x97e1(%rip), %rdx     # 0x202e0
callq 0x75c0
jmp 0x29e32
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x20(%rbp)
movl %eax, -0x24(%rbp)
jmp 0x29b05
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x20(%rbp)
movl %eax, -0x24(%rbp)
jmp 0x29afc
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x20(%rbp)
movl %eax, -0x24(%rbp)
leaq -0x48(%rbp), %rdi
callq 0x71d0
leaq -0x49(%rbp), %rdi
callq 0x7310
testb $0x1, -0x4a(%rbp)
jne 0x29b0d
jmp 0x29b19
movq -0xc0(%rbp), %rdi
callq 0x7230
jmp 0x29e29
movl $0x20, %edi
callq 0x72c0
movq %rax, %rdi
movq %rdi, -0xd0(%rbp)
callq 0x31290
movq -0xd0(%rbp), %rsi
leaq -0x58(%rbp), %rdi
callq 0x312d0
movq -0xa0(%rbp), %rdi
movl $0x11, %esi
xorl %edx, %edx
callq 0x27960
movb %al, -0xd1(%rbp)
jmp 0x29b62
movb -0xd1(%rbp), %al
xorb $-0x1, %al
testb $0x1, %al
jne 0x29b73
jmp 0x29de6
movq -0xa0(%rbp), %rdi
movl $0x2a, %esi
xorl %edx, %edx
callq 0x27960
movb %al, -0xd2(%rbp)
jmp 0x29b8e
movb -0xd2(%rbp), %al
testb $0x1, %al
jne 0x29b9d
jmp 0x29c1f
leaq -0x58(%rbp), %rdi
callq 0x31300
movq -0xa0(%rbp), %rsi
addq $0x8, %rax
movq %rax, -0xe0(%rbp)
leaq -0x60(%rbp), %rdi
callq 0x29390
jmp 0x29bc3
movq -0xe0(%rbp), %rdi
leaq -0x60(%rbp), %rsi
callq 0x31320
jmp 0x29bd5
leaq -0x60(%rbp), %rdi
callq 0x8f10
movq -0xa0(%rbp), %rdi
movl $0x1, %esi
callq 0x279a0
jmp 0x29de1
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x20(%rbp)
movl %eax, -0x24(%rbp)
jmp 0x29e20
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x20(%rbp)
movl %eax, -0x24(%rbp)
leaq -0x60(%rbp), %rdi
callq 0x8f10
jmp 0x29e20
leaq -0x58(%rbp), %rdi
callq 0x31300
movq -0xa0(%rbp), %rsi
addq $0x8, %rax
movq %rax, -0xe8(%rbp)
leaq -0x68(%rbp), %rdi
callq 0x29430
jmp 0x29c45
movq -0xe8(%rbp), %rdi
leaq -0x68(%rbp), %rsi
callq 0x31320
jmp 0x29c57
leaq -0x68(%rbp), %rdi
callq 0x8f10
movq -0xa0(%rbp), %rdi
movl $0x2a, -0x6c(%rbp)
leaq -0x6c(%rbp), %rsi
callq 0x31240
movb %al, -0xe9(%rbp)
jmp 0x29c7f
movb -0xe9(%rbp), %cl
xorl %eax, %eax
testb $0x1, %cl
movb %al, -0xea(%rbp)
jne 0x29cbd
jmp 0x29c94
movq -0xa0(%rbp), %rdi
movl $0x11, %esi
xorl %edx, %edx
callq 0x27960
movb %al, -0xeb(%rbp)
jmp 0x29caf
movb -0xeb(%rbp), %al
xorb $-0x1, %al
movb %al, -0xea(%rbp)
movb -0xea(%rbp), %al
testb $0x1, %al
jne 0x29ccc
jmp 0x29ddf
movb $0x1, -0x92(%rbp)
movl $0x70, %edi
callq 0x7180
movq -0xa0(%rbp), %rdi
movq %rax, -0x100(%rbp)
xorl %esi, %esi
callq 0x277f0
movq %rax, -0xf8(%rbp)
jmp 0x29cfb
leaq -0x91(%rbp), %rdi
movq %rdi, -0x108(%rbp)
callq 0x75f0
movq -0x108(%rbp), %rdx
leaq 0x2eb80(%rip), %rsi     # 0x5889c
leaq -0x90(%rbp), %rdi
callq 0xf990
jmp 0x29d2a
movq -0xf8(%rbp), %rsi
movq -0x100(%rbp), %rdi
leaq -0x90(%rbp), %rdx
callq 0xac90
jmp 0x29d46
movq -0x100(%rbp), %rdi
movb $0x0, -0x92(%rbp)
leaq 0x5eea5(%rip), %rsi     # 0x88c00
leaq -0x9a82(%rip), %rdx     # 0x202e0
callq 0x75c0
jmp 0x29e32
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x20(%rbp)
movl %eax, -0x24(%rbp)
leaq -0x68(%rbp), %rdi
callq 0x8f10
jmp 0x29e20
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x20(%rbp)
movl %eax, -0x24(%rbp)
jmp 0x29dc6
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x20(%rbp)
movl %eax, -0x24(%rbp)
jmp 0x29dba
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x20(%rbp)
movl %eax, -0x24(%rbp)
leaq -0x90(%rbp), %rdi
callq 0x71d0
leaq -0x91(%rbp), %rdi
callq 0x7310
testb $0x1, -0x92(%rbp)
jne 0x29dd1
jmp 0x29ddd
movq -0x100(%rbp), %rdi
callq 0x7230
jmp 0x29e20
jmp 0x29de1
jmp 0x29b47
movq -0xa0(%rbp), %rdi
movl $0x1, %esi
callq 0x279a0
movq -0xb0(%rbp), %rdi
leaq -0x58(%rbp), %rsi
callq 0x31350
leaq -0x58(%rbp), %rdi
callq 0x313a0
movq -0xa8(%rbp), %rax
addq $0x110, %rsp            # imm = 0x110
popq %rbp
retq
leaq -0x58(%rbp), %rdi
callq 0x313a0
movq -0x20(%rbp), %rdi
callq 0x75e0
nopw %cs:(%rax,%rax)