#pragma once typedef enum ParseState { PARSE_LABEL_OR_OPCODE, PARSE_OPCODE, PARSE_OPERAND } ParseState; typedef enum OperandType { OPERAND_TYPE_IDENT, OPERAND_TYPE_INT_CONST } OperandType; typedef struct Operand { OperandType type; union { char ident[MAX_IDENT_LEN]; int int_const; } data; } Operand; typedef struct Parser { Scanner *s; int debug; intHashTable labels; int LC; ParseState state; struct OpcodeInfo *opcodeInfo; int nof_operands; Operand operand[MAX_OPERANDS]; char *code; int last_opcode; int pass; } Parser; void parser_init( Parser *p, Scanner *s ); void parser_done( Parser *p ); void parser_debug( Parser *p, int enable ); void parser_parse( Parser *p );