[gls_abs] provides a generic interface for the token and nonterminal lists
of the abstract derivation trees ( optimized representation ABS, see [ptm] )
in the generated grammar-specific interface modules ( <Language>_ant.c ).
Beside that this module provides generic access to an optional token or
nonterminal (styx version >= 1).
Note: This module [gls_abs] can't be linked with the standard module for
generic language support [gls].
| GLS_Tok | Abstract token type |
| GLS_Lst(A) | Abstract term list type |
| GLS_Opt(A) | Abstract term option type |
void GLS_init(void) | module initialisation |
symbol GLS_Tok_symbol(GLS_Tok x) | the symbol of token 'x' |
PT_Abs_Term GLS_Tok_cfg(GLS_Tok x) | the embedded language of token 'x' |
c_string GLS_Tok_string(GLS_Tok x) | the string value of token 'x' |
c_bool GLS_Term_Tok(PT_Abs_Term x, GLS_Tok *t) | Term to token selector |
c_bool GLS_Term_Lst(PT_Abs_Term x, GLS_Lst(PT_Abs_Term) *lst) | Term to GLS_Lst selector |
c_bool GLS_Lst_nil(GLS_Lst(PT_Abs_Term) x) #define GLS_EMPTY(term) ( GLS_Lst_nil((PT_Abs_Term)(term)) ) | nil - selector |
c_bool GLS_Lst_cons ( GLS_Lst(PT_Abs_Term) x, PT_Abs_Term* fst, GLS_Lst(PT_Abs_Term)* rst ) | cons - selector |
PT_Abs_Term GLS_Lst_first(GLS_Lst(PT_Abs_Term) x) #define GLS_FIRST(type,term) ( (type)GLS_Lst_first((GLS_Lst(PT_Abs_Term))(term)) ) | first element in list 'x' |
PT_Abs_Term GLS_Lst_rest(GLS_Lst(PT_Abs_Term) x)
#define GLS_REST(type,term) \
( (GLS_Lst(type))GLS_Lst_rest((GLS_Lst(PT_Abs_Term))(term)) )
| remaining elements in list 'x' |
int GLS_Lst_length(GLS_Lst(PT_Abs_Term) x) #define GLS_LENGTH(term) ( GLS_Lst_length((GLS_Lst(PT_Abs_Term))(term)) ) | length of list 'x' |
PT_Abs_Term GLS_Lst_nth(GLS_Lst(PT_Abs_Term) x, int nth) #define GLS_NTH(type,term,nth) ((type)GLS_Lst_nth((GLS_Lst(PT_Abs_Term))(term),nth)) | nth element in list 'x' ( nth >= 1 ) |
c_bool GLS_Term_Opt(PT_Abs_Term x, GLS_Opt(PT_Abs_Term) *opt) | Term to GLS_Lst selector |
c_bool GLS_Opt_none(GLS_Lst(PT_Abs_Term) x) #define GLS_OPT_NONE(term) ( GLS_Opt_none((PT_Abs_Term)(term)) ) | none - selector |
c_bool GLS_Opt_some(GLS_Lst(PT_Abs_Term) x) #define GLS_OPT_SOME(term) ( GLS_Opt_some((PT_Abs_Term)(term)) ) | some - selector |
PT_Abs_Term GLS_Opt_term(GLS_Opt(PT_Abs_Term) x) #define GLS_OPT_TERM(type,term) ( (type)GLS_Opt_term((GLS_Opt(PT_Abs_Term))(term)) ) | element in option 'x' |
#define GLS_FORALL(it,li) for( (it) = ((PT_Abs_Term)(li)); \
! GLS_EMPTY(it); \
it = GLS_REST(PT_Abs_Term,it) )
#define GLS_FORALLI(it,li,c) for( c=0, (it) = ((PT_Abs_Term)(li)); \
! GLS_EMPTY(it); \
++c, it = GLS_REST(PT_Abs_Term,it) )