/*----------------------------------------------------------------------------*/ /* */ /* [cfg_abs.h] Abstract Context Free Grammar */ /* */ /* Copyright (c) 1993 by Doelle, Manns */ /*----------------------------------------------------------------------------*/ /* File generated by 'ctoh'. Don't change manually. */ #ifndef cfg_abs_INCL #define cfg_abs_INCL #include "standard.h" #include "hset.h" #include "prs.h" #ifdef __cplusplus extern "C" { #endif /*

[cfg_abs] provides functions that derives the nonterminal and production classes which constitutes the abstract context free grammar from a given parse table.

For further documentation of the definition of an abstract context free grammar follow the reference to module [prs_gen].

*/ /* ------------------------------- Macros ------------------------------------ */ /* Properties of nonterminals and their classes */ #define ACFG_NTTYP_LIST 1 #define ACFG_NTTYP_CLASS 2 #define ACFG_NTTYP_OPT 4 #define ACFG_NTTYP_NIL 8 #define ACFG_NTTYP_RECTYP 16 #define ACFG_NTTYP_REF0 32 #define ACFG_NTTYP_REF1 64 #define ACFG_NTTYP_START 128 #define ACFG_NTTYP_PRIM 256 #define ACFG_NTTYP_PRIMC 512 #define ACFG_NTTYP_EMPTY 1024 #define ACFG_NTTYP_RECREF 2048 #define ACFG_NTTYP_CONSREF 4096 #define ACFG_HAS_NTTYP(v,t) ( (((int)(v)) & ((int)(t))) > 0 ) /* ------------------------------- API --------------------------------------- */ c_bool acfg_init ( PLR_Tab PTab, int** aPol, HS_Set** aNtm, HS_Set** aPrd, c_bool errmsg ) /* creates & fills 'aPol', 'aNtm', 'aPrd' from parse table 'PTab' 'aPol' :- polymorph 'cons' classes 'aNtm' :- nonterminal partition 'aPrd' :- nonterminal class productions */ ; c_bool acfg_init_doc ( PLR_Tab PTab, int** aPol, HS_Set** aNtm, HS_Set** aPrd ) /* creates & fills 'aPol', 'aNtm', 'aPrd' from parse table 'PTab', as needed for the generation of a refernce document 'aPol' :- nonterminal/class types/properties 'aNtm' :- nonterminal partition 'aPrd' :- nonterminal productions */ ; void acfg_quit(PLR_Tab PTab,int* aPol, HS_Set* aNtm, HS_Set* aPrd) /* deletes 'aPol', 'aNtm' and 'aPrd' ( originally created from parse table 'PTab' ) */ ; #ifdef __cplusplus } #endif #endif