view anagram/agcore/q1glbl.h @ 21:1c9dac05d040

Add lint-style FALLTHROUGH annotations to fallthrough cases. (in the parse engine and thus the output code) Document this, because the old output causes warnings with gcc10.
author David A. Holland
date Mon, 13 Jun 2022 00:04:38 -0400
parents 13d2b8934445
children
line wrap: on
line source

/*
 * AnaGram, A System for Syntax Directed Programming
 * Copyright 1993-1999 Parsifal Software. All Rights Reserved.
 * See the file COPYING for license and usage terms.
 *
 * q1glbl.h
 */

#ifndef Q1GLBL_H
#define Q1GLBL_H

struct tsd;
struct tuple_dict;
struct list_dict;

//#define WIDTH short

struct state_number_map {
  unsigned previous_states_index;
  unsigned completions_index;
  unsigned completed_forms_index;
  unsigned gotos_index;
  unsigned reductions_index;
  unsigned actions_index;
  unsigned chain_completions_index;
  unsigned chain_gotos_index;
  unsigned engine_index;
  unsigned char_token;
  unsigned key_list;
  unsigned key_index;
  unsigned n_reductions;
  unsigned
    n_previous_states,
    n_gotos,
    n_chain_gotos,
    n_actions,
    n_terminals;
  unsigned
    n_completions,
    n_chain_completions,
    n_completed_forms;
  unsigned sticky : 1;
  //unsigned subgrammar: 1;
};

#define a_actions_index actions_index
#define t_actions_index actions_index
#define p_actions_index actions_index

struct item_map {
  int form_number;
  int form_index;
  int chain_item;
};

struct completed_form_map {
  unsigned reduction_states_index;
  unsigned n_reduction_states;
  int external_reduction : 1;
};

extern item_map *map_item;
extern state_number_map *map_state_number;

extern completed_form_map *map_completed_form;
extern tuple_dict *completed_form_dict;

extern tsd *bnf_table;          /*      {tkn#,form#} backus normal form */
extern tsd *ibnf_table;         /*      {form#, token#} inverse bnf */

extern int parse_table_length;

extern int *ibnfs;
extern int *ibnfb;
extern int *ibnfn;

extern int *tut;
//extern tsd *gtt;          /*      {itemset#, token#, itemset#}  goto table */
extern int *token_perm;     /*      token sort permutation base */
extern unsigned perm_index; /*      length of sorted token list */
extern tsd *srt;            /*      summary return table for current is */
extern tsd *sgt;            /*      summary goto table for current is */
extern unsigned *items;     /*      {itemset#, item#, index}  itemset table */
extern int lits;            /*      length of item set */
extern int ncssa;
extern list_dict *isht_dict;
extern unsigned kits;       /*      itemset under investigation */
extern unsigned nits;       /*      number of item sets */
extern unsigned nforms;     /*      number of forms */
extern unsigned nforms_base;
extern unsigned nitems;     /*      number of items */
extern unsigned ntkns;      /*      number of tokens */
extern unsigned frs;        /*      forms to reduce */
extern unsigned kfrs;       /*      count of forms to reduce */
//extern tsd *cft;          /*      complete form table */


#endif /* Q1GLBL_H */