# Parse input file.
our (%ops);
-our (@funcs, @opers);
+our (@funcs, @opers, @order);
parse_input ();
# Produce output.
sub init_all_types {
# Common user-visible types used throughout evaluation trees.
init_type ('number', 'any', C_TYPE => 'double',
- ATOM => 'number', MANGLE => 'n', HUMAN_NAME => 'num',
+ ATOM => 'number', MANGLE => 'n', HUMAN_NAME => 'number',
STACK => 'ns', MISSING_VALUE => 'SYSMIS');
init_type ('string', 'any', C_TYPE => 'struct substring',
ATOM => 'string', MANGLE => 's', HUMAN_NAME => 'string',
init_type ('str_var', 'leaf', C_TYPE => 'const struct variable *',
ATOM => 'variable', MANGLE => 'Vs',
HUMAN_NAME => 'string_variable');
+ init_type ('var', 'leaf', C_TYPE => 'const struct variable *',
+ ATOM => 'variable', MANGLE => 'V',
+ HUMAN_NAME => 'variable');
# Vectors.
init_type ('vector', 'leaf', C_TYPE => 'const struct vector *',
$op{ABSORB_MISS} = 1;
} elsif (match ('perm_only')) {
$op{PERM_ONLY} = 1;
+ } elsif (match ('no_abbrev')) {
+ $op{NO_ABBREV} = 1;
} else {
last;
}
$ops{$a}->{OPNAME} cmp $ops{$b}->{OPNAME}}
@funcs;
@opers = sort {$ops{$a}->{NAME} cmp $ops{$b}->{NAME}} @opers;
- our (@order) = (@funcs, @opers);
+ @order = (@funcs, @opers);
}
# Reads the next token into $token, $toktype.