#ifndef __AMDP_COMPILER_H__
#define __AMDP_COMPILER_H__
#include <stdarg.h>
#include <EXTERN.h>
#include <perl.h>
#include <XSUB.h>
#include "amd.h"
/* Provided by utils.c */
void amd_dump(const char *prefix, SV *sv);
void amd_peek(const char *prefix, SV *sv);
void amd_require(const char *package);
/* Provided by Compiler.xs */
HV *amd_kwtab;
HV *amd_lvaltab;
/* Provided by lexer.yy */
void amd_yylex_init(const char *str);
void amd_yyunput_map_end();
void amd_yywarnv(const char *fmt, va_list args);
void amd_yywarnf(const char *fmt, ...)
__attribute__((format(printf, 1, 2)));
void amd_yyerror(const char *str);
void amd_yyerrorf(const char *str, ...)
__attribute__((format(printf, 1, 2)));
/* Provided by parser.y */
const char * amd_yytokname(int i);
int amd_yyparser_parse(SV *program, const char *str);
typedef struct __amd_parse_param_t {
SV *program;
HV *symtab;
} amd_parse_param_t;
#define AMDP_PROGRAM(x) (((amd_parse_param_t *)(x))->program)
/* Random others */
int test_lexer(const char *str);
#endif