/*
 * This file is part of Beastie <https://purl.org/nxg/dist/beastie>
 * SPDX-FileCopyrightText: 2023 Norman Gray <https://nxg.me.uk>
 * SPDX-License-Identifier: BSD-2-Clause
 */

#ifndef PARSE_AUX_H
#define PARSE_AUX_H 1

#include <stdio.h>              // for FILE*
#include "beastie.h"            // for YYSTYPE and s7_pointer
#include "yycommon.h"           // for YYLTYPE

struct aux_extra_s {
    void* yyscanbuf;            // cast from YY_BUFFER_STATE
};
typedef struct aux_extra_s* aux_extra_t;

// defined in parse-aux.lex
yyscan_t parse_aux_setup_file(aux_extra_t, FILE*);
yyscan_t parse_aux_setup_string(aux_extra_t, const char*);
void parse_aux_finish(aux_extra_t, yyscan_t);
int auxlex(YYSTYPE* lvalp, YYLTYPE* llocp, yyscan_t scanner);
int auxget_lineno(yyscan_t);

// defined in parse-aux.y
int auxparse(aux_extra_t, s7_pointer* parse_result, yyscan_t scanner);

#endif /* PARSE_AUX_H */
