$prefix	_TMPFSM_
$trace	_TMP_debug_trace
$action	_TMP_debug_action
$anyof	keyname		$'*+-./0123456789;<=>@ABCDEFGHIJKLMNOPQRSTUVWXYZ\\^_`abcdefghijklmnopqrstuvwxyz{|}~
$anyof	whitespace	\ \t\n
$anyof	real_exp_char	edgEDG
$state	line
$tran		!tree->line
$tran		$eos->$exit
$state	tree
$tran		'('				_TMP_allocate_new_tree
$tran		$symbol->$exit			?_TMP_get_named_tree
$state	read_tree_name
$tran		!named_tree			_TMP_name_tree
$tran		$lambda				_TMP_unname_tree
$state	keys
$tran		$lambda				_TMP_set_recent(1)
$state
$tran		!key_name->key_seen		_TMP_new_key
$tran		')'->$exit			_TMP_reverse_keyword_order
$tran		'&'->import_tree		_TMP_push_current_tree
$tran		'%'->address_key
$tran		'['->choice			_TMP_set_recent(0)
$state	finish_key
$tran		$lambda->keys			_TMP_check_recent
$state	key_seen
$tran		!read_prompt->key_seen		_TMP_set_key_prompt
$tran		'!'->subtree_given		_TMP_push_current_tree
$tran		'?'->conditional_given
$tran		'('				_TMP_push_current_tree
$tran		$lambda->finish_key		_TMP_no_subtree
$state
$tran		$lambda				_TMP_allocate_new_tree
$state
$tran		!read_tree_name->finish_key	_TMP_make_tree_subtree
$state	conditional_given
$tran		$decimal->key_seen		_TMP_set_key_conditional
$state	choice
$tran		!key_name			_TMP_new_key
$tran		']'->key_seen
$state
$tran		$lambda->choice			_TMP_increment_recent
$state	subtree_given
$tran		!tree->finish_key		_TMP_make_tree_subtree
$state	import_tree
$tran		!tree->finish_key		_TMP_import_current_tree
$state	address_key
$tran		'i'->integer_address_key
$tran		'd'->integer_address_key
$tran		'r'->real_address_key
$tran		'f'->real_address_key
$tran		'F'->double_address_key
$tran		's'->string_address_key
$tran		'v'->variable_key
$tran		'x'->hex_address_key
$tran		'o'->octal_address_key
$state	hex_address_key
$tran		$decimal->i_key			_TMP_hex_addr_key
$state	octal_address_key
$tran		$decimal->i_key			_TMP_oct_addr_key
$state	integer_address_key
$tran		$decimal->i_key			_TMP_int_addr_key
$state	real_address_key
$tran		$decimal->r_key			_TMP_real_addr_key
$state	double_address_key
$tran		$decimal->r_key			_TMP_double_addr_key
$state	string_address_key
$tran		$decimal->s_key			_TMP_str_addr_key
$state	variable_key
$tran		$decimal->key_seen		_TMP_var_key
$state	i_key
$tran		','
$tran		$lambda->key_seen
$state
$tran		'%'->i_min_addr
$tran		!integer_number			_TMP_set_integer_minimum
$tran		$lambda
$state	integer_min_seen
$tran		','
$tran		$lambda->key_seen
$state
$tran		'%'->i_max_addr
$tran		!integer_number			_TMP_set_integer_maximum
$tran		$lambda
$state	integer_max_seen
$tran		','->help_string
$tran		$lambda->key_seen
$state	help_string
$tran		'"'				_TMP_init_literal
$state	help_string_char
$tran		'"'->key_seen			_TMP_help_string
$tran		'\\'
$tran		$any->help_string_char		_TMP_literal_char
$state
$tran		$any->help_string_char		_TMP_literal_char
$state	i_min_addr
$tran		$decimal->integer_min_seen	_TMP_set_integer_min_addr
$state	i_max_addr
$tran		$decimal->integer_max_seen	_TMP_set_integer_max_addr
$state	r_key
$tran		','
$tran		$lambda->key_seen
$state
$tran		'%'->r_min_addr
$tran		!real_number			_TMP_set_real_minimum
$tran		$lambda
$state	real_min_seen
$tran		','
$tran		$lambda->key_seen
$state
$tran		'%'->r_max_addr
$tran		!real_number			_TMP_set_real_maximum
$tran		$lambda
$state	real_max_seen
$tran		','->help_string
$tran		$lambda->key_seen
$state	s_key
$tran		','->help_string
$tran		$lambda->key_seen
$state	r_min_addr
$tran		$decimal->real_min_seen		_TMP_set_real_min_addr
$state	r_max_addr
$tran		$decimal->key_seen		_TMP_set_real_max_addr
$state	named_tree
$tran		$symbol				_TMP_remember_name
$state
$tran		':'->$exit
$state	key_name
$tran		$lambda				_TMP_init_literal
$state	key_name_gobble
$tran		$anyof whitespace->key_name_gobble
$tran		$lambda
$state
$tran		$anyof keyname			_TMP_literal_char
$tran		$lambda->$fail			_TMP_finish_literal
$state	key_name_char
$tran		$anyof keyname->key_name_char	_TMP_literal_char
$tran		$lambda->$exit			_TMP_finish_literal
$state	read_prompt
$tran		'"'				_TMP_init_literal
$state	next___prompt_char
$tran		'"'->$exit			_TMP_finish_literal
$tran		'\\'
$tran		$any->next___prompt_char	_TMP_literal_char
$state
$tran		$any->next___prompt_char	_TMP_literal_char
$state	integer_number
$tran		$lambda				_TMP_init_for_integer
$state
$tran		'-'				_TMP_negate_integer
$tran		$lambda
$state
$tran		"0x"->integer_num_hex
$tran		'0'->integer_num_oct
$tran		$decimal->$exit			_TMP_integer_value
$state	integer_num_hex
$tran		$hex->$exit			_TMP_integer_value
$state	integer_num_oct
$tran		$octal->$exit			_TMP_integer_value
$tran		$lambda->$exit			_TMP_integer_value(0)
$state	real_number
$tran		$lambda				_TMP_parse_blanks
$state
$tran		!real_number_->$exit		_TMP_skip_blanks
$tran		$lambda->$fail			_TMP_skip_blanks
$state	real_number_
$tran		$lambda				_TMP_init_for_real
$state
$tran		'-'				_TMP_negate_real
$tran		$lambda
$state
$tran		$decimal			_TMP_integer_part_real
$tran		'.'->real_fraction
$state
$tran		'.'
$tran		$lambda->real_exp
$state	real_fraction
$tran		$digit->real_fraction		_TMP_real_fraction_digit
$tran		$lambda->real_exp
$state	real_exp
$tran		!real_exponent
$tran		$lambda
$state
$tran		$lambda->$exit			_TMP_finish_real
$state	real_exponent
$tran		$anyof real_exp_char
$state
$tran		'+'
$tran		'-'				_TMP_negate_exp
$tran		$lambda
$state
$tran		$decimal->$exit			_TMP_set_exp
