live-bootstrap/sysa/bison-3.4.1/files/parse-gram.h

161 lines
3.7 KiB
C

// SPDX-License-Identifier: GPL-3.0-or-later
/*
* This file is based on parse-gram.y from GNU Bison 3.4.1. It is the
* header for an implementation of a subset of the grammar described
* by parse-gram.y, just enough to provide a bootstrapping path for
* Bison.
*
* Copyright (c) 2020, Giovanni Mascellani <gio@debian.org>
*
* The copyright notice of the original file follows. This file is
* distributed under the same license and with the same conditions.
*/
/* Bison Grammar Parser -*- C -*-
Copyright (C) 2002-2015, 2018-2019 Free Software Foundation, Inc.
This file is part of Bison, the GNU Compiler Compiler.
This program is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program. If not, see <http://www.gnu.org/licenses/>. */
#ifndef PARSE_GRAM_H
#define PARSE_GRAM_H
/* %code requires */
#include "symlist.h"
#include "symtab.h"
typedef enum
{
param_none = 0,
param_lex = 1 << 0,
param_parse = 1 << 1,
param_both = param_lex | param_parse
} param_type;
#include "muscle-tab.h"
typedef struct
{
char const *chars;
muscle_kind kind;
} value_type;
enum gram_tokentype {
GRAM_EOF = 0,
ID = 300,
STRING,
BRACED_CODE,
INT,
PERCENT_DEFINE,
PERCENT_DEFINES,
PERCENT_VERBOSE,
SEMICOLON,
PERCENT_TOKEN,
PERCENT_TYPE,
PERCENT_EMPTY,
COLON,
PERCENT_EXPECT,
PERCENT_PERCENT,
PERCENT_INITIAL_ACTION,
BRACKETED_ID,
PIPE,
EPILOGUE,
TAG,
PERCENT_CODE,
ID_COLON,
PERCENT_NONASSOC,
PERCENT_FLAG,
PERCENT_DEFAULT_PREC,
PERCENT_DESTRUCTOR,
PERCENT_DPREC,
PERCENT_EXPECT_RR,
EQUAL,
TAG_ANY,
CHAR,
BRACED_PREDICATE,
PERCENT_START,
PERCENT_UNION,
PERCENT_ERROR_VERBOSE,
PERCENT_NAME_PREFIX,
PERCENT_PURE_PARSER,
PERCENT_RIGHT,
PERCENT_PREC,
PERCENT_FILE_PREFIX,
PERCENT_YACC,
PERCENT_GLR_PARSER,
PERCENT_LANGUAGE,
PERCENT_LEFT,
PERCENT_PARAM,
PERCENT_MERGE,
PERCENT_NO_DEFAULT_PREC,
PERCENT_NO_LINES,
PERCENT_NONDETERMINISTIC_PARSER,
PERCENT_NTERM,
PERCENT_OUTPUT,
PERCENT_PRECEDENCE,
PRECENT_PRINTER,
PERCENT_REQUIRE,
PERCENT_SKELETON,
PERCENT_TOKEN_TABLE,
TAG_NONE,
PROLOGUE,
PERCENT_PRINTER,
};
union GRAM_STYPE {
value_type value;
uniqstr ID;
char *STRING;
symbol *symbol;
named_ref *named_ref_opt;
uniqstr tag_opt;
char *BRACED_CODE;
char *EPILOGUE;
symbol *id_colon;
uniqstr ID_COLON;
int int_opt;
int INT;
symbol *string_as_id;
symbol *string_as_id_opt;
symbol *token_decl;
symbol_list *token_decl_1;
symbol_list *token_decls;
symbol_list *symbol_decls;
symbol_list *symbol_decl_1;
uniqstr BRACKETED_ID;
symbol *id;
uniqstr TAG;
uniqstr PERCENT_FLAG;
uniqstr PERCENT_FILE_PREFIX;
uniqstr PERCENT_NAME_PREFIX;
uniqstr PERCENT_YACC;
param_type PERCENT_PARAM;
uniqstr PERCENT_PURE_PARSER;
uniqstr PERCENT_ERROR_VERBOSE;
unsigned char CHAR;
char *BRACED_PREDICATE;
char *PROLOGUE;
};
typedef union GRAM_STYPE GRAM_STYPE;
int gram_parse (void);
#endif