def generate_symbol_argument(argument):
assert argument.startswith('sym(') and argument.endswith(')')
def generate_symbol_argument(argument):
assert argument.startswith('sym(') and argument.endswith(')')
return {
'add': generate_null_argument_from(2),
'call': generate_size_t_argument,
return {
'add': generate_null_argument_from(2),
'call': generate_size_t_argument,
'drop': generate_null_argument,
'end': generate_null_argument,
'eq': generate_null_argument_from(2),
'drop': generate_null_argument,
'end': generate_null_argument,
'eq': generate_null_argument_from(2),
'gt': generate_null_argument_from(2),
'gte': generate_null_argument_from(2),
'idiv': generate_null_argument_from(2),
'jump': generate_label_argument,
'jump_if_false': generate_label_argument,
'gt': generate_null_argument_from(2),
'gte': generate_null_argument_from(2),
'idiv': generate_null_argument_from(2),
'jump': generate_label_argument,
'jump_if_false': generate_label_argument,
'lt': generate_null_argument_from(2),
'lte': generate_null_argument_from(2),
'mod': generate_null_argument_from(2),
'lt': generate_null_argument_from(2),
'lte': generate_null_argument_from(2),
'mod': generate_null_argument_from(2),
'push': generate_symbol_argument,
'push_integer': generate_integer_argument,
'push_string': generate_string_argument,
'push': generate_symbol_argument,
'push_integer': generate_integer_argument,
'push_string': generate_string_argument,
+ 'push_symbol': generate_symbol_argument,
+ 'return': generate_null_argument,
+ 'structure': generate_integer_argument,
'sub': generate_null_argument_from(2),
}[instruction.instruction](instruction.argument)
'sub': generate_null_argument_from(2),
}[instruction.instruction](instruction.argument)