next up previous
Next: Provide Readable Type Names Up: Type Analysis Previous: Expression contexts

Support code

Type.h[54]:

#ifndef SEMANTIC_H
#define SEMANTIC_H

#include "eliproto.h"
#include "deftbl.h"
#include "oiladt2.h"
#include "Strings.h"

Abbreviations for sets of bits[46]

#define KWD(w,i,s) w
typedef enum {
Specifier keywords[45]
} TypeSpecifier;
#undef KWD

Specification data[36]

#define InSpecifierSet(kw,chain) (((1 « kw) & chain.KeywordSet) != 0)

extern SpecData InitSpecifiers      ELI_ARG((DefTableKey));
extern int NextSpecifier            ELI_ARG((TypeSpecifier, SpecData));
extern SpecData UpdateSpecification ELI_ARG((DefTableKey, TypeSpecifier, SpecData));
extern DefTableKey CompleteType        ELI_ARG((SpecData));

extern void BasicPointerTypes ELI_ARG((void));
extern void BasicPointerRefs  ELI_ARG((void));

#endif
This macro is attached to a product file.

Type.c[55]:
#include "pdl_gen.h"
#include "Typing.h"
#include "Expression.h"
#include "Type.h"

#define KWD(w,i,s) i
static int FSMInput[] = {
Specifier keywords[45]
};
#undef KWD

#define KWD(w,i,s) s
static long Exclude[] = {
Specifier keywords[45]
};
#undef KWD

static struct {int Next[7]; DefTableKey Type;} State[] = {
Finite-state machine[35]
};

SpecData
#ifdef PROTO_OK
InitSpecifiers(DefTableKey key)
#else
InitSpecifiers(key) DefTableKey key;
#endif
InitSpecifiers(DefTableKey key)[37]

int
#ifdef PROTO_OK
NextSpecifier(TypeSpecifier kw, SpecData chain)
#else
NextSpecifier(kw, chain) TypeSpecifier kw; SpecData chain;
#endif
NextSpecifier(TypeSpecifier kw, SpecData chain)[38]

SpecData
#ifdef PROTO_OK
UpdateSpecification(DefTableKey type, TypeSpecifier kw, SpecData chain)
#else
UpdateSpecification(type, kw, chain)
DefTableKey type; TypeSpecifier kw; SpecData chain;
#endif
UpdateSpecification(DefTableKey type, TypeSpecifier kw, SpecData chain)[39]

DefTableKey
#ifdef PROTO_OK
CompleteType(SpecData chain)
#else
CompleteType(chain) SpecData chain;
#endif
CompleteType(SpecData chain)[44]

Type key arrays[9]

void
#ifdef PROTO_OK
BasicPointerTypes(void)
#else
BasicPointerTypes()
#endif
void BasicPointerTypes(void)[7]

void
#ifdef PROTO_OK
BasicPointerRefs(void)
#else
BasicPointerRefs()
#endif
void BasicPointerRefs(void)[8]
This macro is attached to a product file.

Type.head[56]:

#include "Type.h"
This macro is attached to a product file.


next up previous
Next: Provide Readable Type Names Up: Type Analysis Previous: Expression contexts
2008-08-30