typedef struct x1f4_a1_type { struct x1f4_track_type textflat_set; struct { struct x1f4_eelookup_type *eelookup_data; } eelookup_set; struct { int (*fix)(const void *, const struct x1f4_function_type *, void **), (*get)(const char *, unsigned, const void *, const struct x1f4_function_type **); const void *context; } function_set; struct { const void *context; } variable_set; struct { int (*get)(void *, int, int, const struct x1f4_operator_type **); void *context; } implicit_set; struct x1f4_composer_type composer_set; struct { struct x1f4_a1record_type *a1record_data; } bcollect_set; struct { void *fine; } transfer_set; struct x1f4_trans_type resource_set; struct { int (*link)(void *, void **, unsigned), (*pick)(void *, void ***, int (*)(void *), unsigned, void **); void *context; } autolead_set; struct { const void *miss; } datatype_set; struct { const void *miss; } sidetype_set; struct { struct x1f4_progress_type *progress_data; } traverse_set; struct { void *fine; } deprefix_set; struct { struct x1f4_linetext_type **linetext; struct x1f4_variable_type *variable_data; } casecall_set; struct { const char **argv; unsigned argc; } argument_set; struct x1f4_frame_type autolink_set; struct x1f4_trans_type codelink_set; const struct x1f4_operator_type *const *operator1s, *const *operator2s; } x1f4_a1_type;
The struct x1f4_a1_type
describes the program parsing context.
The fields that are always interpreted by the program parsing functions are:
function_set
specifies the functions set as:
fix
the function specific execution context retriever method
get
the function look up method
context
the function look up context
See Functions.
variable_set
specifies the variables set as:
context
the variables collection to observe
See Variables.
operator1s
specifies the prefix unary operators set
operator2s
specifies the infix binary operators set
autolink_set
specifies the temporaries allocator.
See Temporaries.
The fields that are interpreted only if so requested are:
See Procedural Language Interpreter Generation Flags.
argument_set
specifies the intrinsic string arguments for variadic ‘main’ functions as:
argv
the array of pointers to the strings that are to be used for ‘main’ arguments
argc
the number of arguments
bcollect_set
specifies some parsing error collector as:
a1record_data
the very error collector
datatype_set
specifies the application defined declarable types as:
miss
the null terminated struct x1f4_datatype_type
application defined
declarable type definitions array. Here the null terminated means the last
struct x1f4_datatype_type
record in the array has its name
field
set to NULL
.
See Data Type Definition.
See Application Defined Types.
See struct x1f4_datatype_type.
The array may be accessed throughout program execution.
sidetype_set
specifies the application defined non declarable types as:
miss
the null terminated struct x1f4_datatype_type
application defined
declarable type definitions array. Here the null terminated means the last
struct x1f4_datatype_type
record in the array has its name
field
set to NULL
.
See Data Type Definition.
See Application Defined Types.
See struct x1f4_datatype_type.
The array may be accessed throughout program execution.
The non declarable data types are allowed for function returns and parameters, but not for variable declarations.
resource_set
specifies an alternate memory manager.
implicit_set
specifies the prefix unary operator converters set as:
get
the converter look up method
context
the converter look up context
composer_set
specifies the single parameter function converters set
autolead_set
specifies the non scalar function returns recorder as:
link
the memory allocation method
pick
the temporary collection routine registering method
context
the temporaries collection context
transfer_set
specifies a function type mapper to be used as:
fine
the mapper object
See Function Pointers.
See Function Pointer Type Alloter.
If no mapper is specified (either X1f4_A1_TRANSFER
is missing in the
flags argument of the program parser function or fine
is nil) a function
type mapper is constructed and used instead.
textflat_set
specifies the error reporter.
eelookup_set
specifies a name lookup context as:
eelookup_data
the data type name lookup context, used for error reporting
codelink_set
specifies the program executable allocator (allocates memory for the program
executable representation only, not for program execution and not for program
created data (strings, etc)). If not set and resource_set
is, the
latter is used instead.
traverse_set
specifies the collection traversal modes as:
miss
the null terminated struct x1f4_progress_type
traversal mode definitions
array. Here the null terminated means the last struct
x1f4_progress_type
record in the array has its count
field set to
0
.
deprefix_set
specifies the strippable function prefixes collection as:
fine
a type id to list of prefixes associative array.
The prefixes are introduced in the struct x1f4_deprefix_type
record
definition, with one null terminated array per type (the last record in the
array has its name
and size
fields set as NULL
and
0
respectively).
See Strippable Prefixes.
casecall_set
specifies the ‘object’ data caller as:
linetext
the address where a pointer to the struct x1f4_linetext_type
definition
of the ‘object’ caller function is stored.
See struct x1f4_linetext_type.
The described function calls the function described by its first ‘object’ argument with its remaining arguments, the same way the ‘call’ function of the trap library does.
See Trap Library.
variable_data
the address of the struct x1f4_variable_type
record describing a
matching call variable (its type
field is not used). The
variable value is the one at linetext
.
The memory locations pointed to by both ‘linetext’ and ‘variable_data’ are expected accessible and meaningfully set during the constructed expression use and destruction.