Mercurial > ~dholland > hg > ag > index.cgi
view anagram/agcore/q1glbl.h @ 7:57b2cc9b87f7
Use memcpy instead of strncpy when we know the length anyway.
Modern gcc seems to think it knows how to detect misuse of strncpy,
but it's wrong (in fact: very, very wrong) and the path of least
resistance is to not try to fight with it.
author | David A. Holland |
---|---|
date | Mon, 30 May 2022 23:47:52 -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 */