/*-=-=-=-=-=-=-=-=-=-=-=- RCCL/RCI Notice of Copyright -=-=-=-=-=-=-=-=-=-=-*
 *									    *
 *	Copyright (C) 1987, 1991 by Mike Parker.			    *
 *									    *
 *	Information on copyright permissions, as well as a complete	    *
 *	disclaimer of warranty, is given in the file COPYRIGHT.		    *
 *									    *
 *-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=*/

#include <ctype.h>
#include "fsm.h"
#define _TMPFSM_get ((*(_TMPFSM_inp->string))?(*++(_TMPFSM_inp->string)):'\0')
#define _TMPFSM_char (0x7f&(int)*(_TMPFSM_inp->string))

static char *_TMPFSM_lastfail;
static FSMarg _TMPFSM_mainarg = { 0, 0 };

static char _TMPFSM_anyof0[128] = {
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
0,0,0,0,1,1,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
0,0,0,0,1,1,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0};
static char _TMPFSM_anyof1[128] = {
0,0,0,0,0,0,0,0,0,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0};
static char _TMPFSM_anyof2[128] = {
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
0,0,0,0,1,0,0,1,0,0,1,1,0,1,1,1,1,1,1,1,1,1,1,1,1,1,0,1,1,1,1,0,
1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,1,0,1,1,
1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0};

static char *_TMPFSM_statenames[67] = 
{ "State 0", "line", "tree", "read_tree_name", "keys", "State 5", "finish_key", 
"key_seen", "State 8", "State 9", "conditional_given", "choice", "State 12", 
"subtree_given", "import_tree", "address_key", "hex_address_key", 
"octal_address_key", "integer_address_key", "real_address_key", 
"double_address_key", "string_address_key", "variable_key", "i_key", "State 24", 
"integer_min_seen", "State 26", "integer_max_seen", "help_string", 
"help_string_char", "State 30", "i_min_addr", "i_max_addr", "r_key", "State 34", 
"real_min_seen", "State 36", "real_max_seen", "s_key", "r_min_addr", "r_max_addr", 
"named_tree", "State 42", "key_name", "key_name_gobble", "State 45", "key_name_char", 
"read_prompt", "next___prompt_char", "State 49", "integer_number", "State 51", 
"State 52", "integer_num_hex", "integer_num_oct", "real_number", "State 56", 
"real_number_", "State 58", "State 59", "State 60", "real_fraction", "real_exp", 
"State 63", "real_exponent", "State 65", "State 66" };

_TMPFSM_(s)
char *s;
{
 int i;
#ifdef vax
 char *cp;
#endif

 _TMPFSM_mainarg.string = s;
#ifdef vax
 cp = (char *) &s;
 if (cp[-4] >= 2) /* VAX SPECIFIC!!!! */
  { _TMPFSM_mainarg.flags = ((int *)cp)[1];
  }
 else
#endif
  { _TMPFSM_mainarg.flags = 0;
  }
 _TMPFSM_lastfail = 0;
 i = __TMPFSM_(&_TMPFSM_mainarg,1);
 if (!i && _TMPFSM_lastfail)
  { _TMPFSM_mainarg.string = _TMPFSM_lastfail;
  }
 return(i);
}

FSMarg *_TMPFSM_getarg()
{
 return(&_TMPFSM_mainarg);
}

char *_TMPFSM_rest()
{
 return(_TMPFSM_mainarg.string);
}

_TMPFSM_cmp(in,str)
FSMarg *in;
char *str;
{
 register int i;
 register char *cp = in->string;

 for (i=0;str[i];i++)
  { if (cp[i]!=str[i])
     { return(0);
     }
  }
 in->string = cp + i;
 return(1);
}

__TMPFSM_rec(_TMPFSM_inp,_TMPFSM_state)
FSMarg *_TMPFSM_inp;
int _TMPFSM_state;
{
 char *cp = _TMPFSM_inp->string;

 if (__TMPFSM_(_TMPFSM_inp,_TMPFSM_state))
  { return(1);
  }
 if (_TMPFSM_lastfail == 0)
  { _TMPFSM_lastfail = _TMPFSM_inp->string;
  }
 _TMPFSM_inp->string = cp;
 return(0);
}

_TMPFSM_xval(c)
char c;
{
 if (isdigit(c))
  { return(c-'0');
  }
 else if (isupper(c))
  { return((c-'A')+10);
  }
 else
  { return((c-'a')+10);
  }
}

__TMPFSM_(_TMPFSM_inp,_TMPFSM_state)
FSMarg *_TMPFSM_inp;
int _TMPFSM_state;
{
 while(1)
  { if (!(_TMPFSM_inp->flags&FSM_FLAG_PARSE_BLANKS))
     { while (isspace(_TMPFSM_char))
	{ _TMPFSM_get;
	}
     }
    _TMPFSM_lastfail = 0;
    _TMP_debug_trace(_TMPFSM_state,_TMPFSM_statenames[_TMPFSM_state]);
    switch(_TMPFSM_state){
/*
 *
 *
 *
 * Machine begins here
 *
 *
 *
 */
				case 1: /* line */
if(__TMPFSM_rec(_TMPFSM_inp,2)){
					/* !tree */
{
_TMPFSM_state=1;break;}}
					/* ... -> line */
if(_TMPFSM_char=='\0'){
					/* $eos */
{
return(1);}}
					/* ... -> $exit */
return(0);break;
				case 2: /* tree */
if(_TMPFSM_char=='('){
					/* '(' */
					_TMP_debug_action("_TMP_allocate_new_tree(_TMPFSM_char)");
					_TMP_allocate_new_tree(_TMPFSM_char)     ;{
_TMPFSM_get;
_TMPFSM_state=3;break;}}
					/* ... -> read_tree_name */
if(isalpha(_TMPFSM_char)||
					/* $symbol */
(_TMPFSM_char=='$')||
(_TMPFSM_char=='_')){
char*_TMPFSM_save=_TMPFSM_inp->string;
char _TMPFSM_str[256];int _TMPFSM_i=0;
do _TMPFSM_str[_TMPFSM_i++]=_TMPFSM_char;
while(isalnum(_TMPFSM_get)||
(_TMPFSM_char=='$')||
(_TMPFSM_char=='_'));
_TMPFSM_str[_TMPFSM_i]='\0';
					_TMP_debug_action("_TMP_get_named_tree(_TMPFSM_str)");
if(!					_TMP_get_named_tree(_TMPFSM_str)     ){
_TMPFSM_inp->string=_TMPFSM_save;
}else{
return(1);}}
					/* ... -> $exit */
return(0);break;
				case 3: /* read_tree_name */
if(__TMPFSM_rec(_TMPFSM_inp,41)){
					/* !named_tree */
					_TMP_debug_action("_TMP_name_tree(0)");
					_TMP_name_tree(0)     ;{
_TMPFSM_state=4;break;}}
					/* ... -> keys */
if(1){
					/* $lambda */
					_TMP_debug_action("_TMP_unname_tree(0)");
					_TMP_unname_tree(0)     ;{
_TMPFSM_state=4;break;}}
					/* ... -> keys */
return(0);break;
				case 4: /* keys */
if(1){
					/* $lambda */
					_TMP_debug_action("_TMP_set_recent(10)");
					_TMP_set_recent(1)     ;{
_TMPFSM_state=5;break;}}
					/* ... -> [next state] */
return(0);break;
				case 5:
if(__TMPFSM_rec(_TMPFSM_inp,43)){
					/* !key_name */
					_TMP_debug_action("_TMP_new_key(0)");
					_TMP_new_key(0)     ;{
_TMPFSM_state=7;break;}}
					/* ... -> key_seen */
if(_TMPFSM_char==')'){
					/* ')' */
					_TMP_debug_action("_TMP_reverse_keyword_order(_TMPFSM_char)");
					_TMP_reverse_keyword_order(_TMPFSM_char)     ;{
_TMPFSM_get;
return(1);}}
					/* ... -> $exit */
if(_TMPFSM_char=='&'){
					/* '&' */
					_TMP_debug_action("_TMP_push_current_tree(_TMPFSM_char)");
					_TMP_push_current_tree(_TMPFSM_char)     ;{
_TMPFSM_get;
_TMPFSM_state=14;break;}}
					/* ... -> import_tree */
if(_TMPFSM_char=='%'){
					/* '%' */
{
_TMPFSM_get;
_TMPFSM_state=15;break;}}
					/* ... -> address_key */
if(_TMPFSM_char=='['){
					/* '[' */
					_TMP_debug_action("_TMP_set_recent(0_TMPFSM_char)");
					_TMP_set_recent(0)     ;{
_TMPFSM_get;
_TMPFSM_state=11;break;}}
					/* ... -> choice */
return(0);break;
				case 6: /* finish_key */
if(1){
					/* $lambda */
					_TMP_debug_action("_TMP_check_recent(0)");
					_TMP_check_recent(0)     ;{
_TMPFSM_state=4;break;}}
					/* ... -> keys */
return(0);break;
				case 7: /* key_seen */
if(__TMPFSM_rec(_TMPFSM_inp,47)){
					/* !read_prompt */
					_TMP_debug_action("_TMP_set_key_prompt(0)");
					_TMP_set_key_prompt(0)     ;{
_TMPFSM_state=7;break;}}
					/* ... -> key_seen */
if(_TMPFSM_char=='!'){
					/* '!' */
					_TMP_debug_action("_TMP_push_current_tree(_TMPFSM_char)");
					_TMP_push_current_tree(_TMPFSM_char)     ;{
_TMPFSM_get;
_TMPFSM_state=13;break;}}
					/* ... -> subtree_given */
if(_TMPFSM_char=='?'){
					/* '?' */
{
_TMPFSM_get;
_TMPFSM_state=10;break;}}
					/* ... -> conditional_given */
if(_TMPFSM_char=='('){
					/* '(' */
					_TMP_debug_action("_TMP_push_current_tree(_TMPFSM_char)");
					_TMP_push_current_tree(_TMPFSM_char)     ;{
_TMPFSM_get;
_TMPFSM_state=8;break;}}
					/* ... -> [next state] */
if(1){
					/* $lambda */
					_TMP_debug_action("_TMP_no_subtree(0)");
					_TMP_no_subtree(0)     ;{
_TMPFSM_state=6;break;}}
					/* ... -> finish_key */
return(0);break;
				case 8:
if(1){
					/* $lambda */
					_TMP_debug_action("_TMP_allocate_new_tree(0)");
					_TMP_allocate_new_tree(0)     ;{
_TMPFSM_state=9;break;}}
					/* ... -> [next state] */
return(0);break;
				case 9:
if(__TMPFSM_rec(_TMPFSM_inp,3)){
					/* !read_tree_name */
					_TMP_debug_action("_TMP_make_tree_subtree(0)");
					_TMP_make_tree_subtree(0)     ;{
_TMPFSM_state=6;break;}}
					/* ... -> finish_key */
return(0);break;
				case 10: /* conditional_given */
if(isdigit(_TMPFSM_char)){
					/* $decimal */
int _TMPFSM_i=_TMPFSM_char-'0';
while(isdigit(_TMPFSM_get))
_TMPFSM_i=(_TMPFSM_i*10)+_TMPFSM_char-'0';
					_TMP_debug_action("_TMP_set_key_conditional(_TMPFSM_i)");
					_TMP_set_key_conditional(_TMPFSM_i)     ;{
_TMPFSM_state=7;break;}}
					/* ... -> key_seen */
return(0);break;
				case 11: /* choice */
if(__TMPFSM_rec(_TMPFSM_inp,43)){
					/* !key_name */
					_TMP_debug_action("_TMP_new_key(0)");
					_TMP_new_key(0)     ;{
_TMPFSM_state=12;break;}}
					/* ... -> [next state] */
if(_TMPFSM_char==']'){
					/* ']' */
{
_TMPFSM_get;
_TMPFSM_state=7;break;}}
					/* ... -> key_seen */
return(0);break;
				case 12:
if(1){
					/* $lambda */
					_TMP_debug_action("_TMP_increment_recent(0)");
					_TMP_increment_recent(0)     ;{
_TMPFSM_state=11;break;}}
					/* ... -> choice */
return(0);break;
				case 13: /* subtree_given */
if(__TMPFSM_rec(_TMPFSM_inp,2)){
					/* !tree */
					_TMP_debug_action("_TMP_make_tree_subtree(0)");
					_TMP_make_tree_subtree(0)     ;{
_TMPFSM_state=6;break;}}
					/* ... -> finish_key */
return(0);break;
				case 14: /* import_tree */
if(__TMPFSM_rec(_TMPFSM_inp,2)){
					/* !tree */
					_TMP_debug_action("_TMP_import_current_tree(0)");
					_TMP_import_current_tree(0)     ;{
_TMPFSM_state=6;break;}}
					/* ... -> finish_key */
return(0);break;
				case 15: /* address_key */
if(_TMPFSM_char=='i'){
					/* 'i' */
{
_TMPFSM_get;
_TMPFSM_state=18;break;}}
					/* ... -> integer_address_key */
if(_TMPFSM_char=='d'){
					/* 'd' */
{
_TMPFSM_get;
_TMPFSM_state=18;break;}}
					/* ... -> integer_address_key */
if(_TMPFSM_char=='r'){
					/* 'r' */
{
_TMPFSM_get;
_TMPFSM_state=19;break;}}
					/* ... -> real_address_key */
if(_TMPFSM_char=='f'){
					/* 'f' */
{
_TMPFSM_get;
_TMPFSM_state=19;break;}}
					/* ... -> real_address_key */
if(_TMPFSM_char=='F'){
					/* 'F' */
{
_TMPFSM_get;
_TMPFSM_state=20;break;}}
					/* ... -> double_address_key */
if(_TMPFSM_char=='s'){
					/* 's' */
{
_TMPFSM_get;
_TMPFSM_state=21;break;}}
					/* ... -> string_address_key */
if(_TMPFSM_char=='v'){
					/* 'v' */
{
_TMPFSM_get;
_TMPFSM_state=22;break;}}
					/* ... -> variable_key */
if(_TMPFSM_char=='x'){
					/* 'x' */
{
_TMPFSM_get;
_TMPFSM_state=16;break;}}
					/* ... -> hex_address_key */
if(_TMPFSM_char=='o'){
					/* 'o' */
{
_TMPFSM_get;
_TMPFSM_state=17;break;}}
					/* ... -> octal_address_key */
return(0);break;
				case 16: /* hex_address_key */
if(isdigit(_TMPFSM_char)){
					/* $decimal */
int _TMPFSM_i=_TMPFSM_char-'0';
while(isdigit(_TMPFSM_get))
_TMPFSM_i=(_TMPFSM_i*10)+_TMPFSM_char-'0';
					_TMP_debug_action("_TMP_hex_addr_key(_TMPFSM_i)");
					_TMP_hex_addr_key(_TMPFSM_i)     ;{
_TMPFSM_state=23;break;}}
					/* ... -> i_key */
return(0);break;
				case 17: /* octal_address_key */
if(isdigit(_TMPFSM_char)){
					/* $decimal */
int _TMPFSM_i=_TMPFSM_char-'0';
while(isdigit(_TMPFSM_get))
_TMPFSM_i=(_TMPFSM_i*10)+_TMPFSM_char-'0';
					_TMP_debug_action("_TMP_oct_addr_key(_TMPFSM_i)");
					_TMP_oct_addr_key(_TMPFSM_i)     ;{
_TMPFSM_state=23;break;}}
					/* ... -> i_key */
return(0);break;
				case 18: /* integer_address_key */
if(isdigit(_TMPFSM_char)){
					/* $decimal */
int _TMPFSM_i=_TMPFSM_char-'0';
while(isdigit(_TMPFSM_get))
_TMPFSM_i=(_TMPFSM_i*10)+_TMPFSM_char-'0';
					_TMP_debug_action("_TMP_int_addr_key(_TMPFSM_i)");
					_TMP_int_addr_key(_TMPFSM_i)     ;{
_TMPFSM_state=23;break;}}
					/* ... -> i_key */
return(0);break;
				case 19: /* real_address_key */
if(isdigit(_TMPFSM_char)){
					/* $decimal */
int _TMPFSM_i=_TMPFSM_char-'0';
while(isdigit(_TMPFSM_get))
_TMPFSM_i=(_TMPFSM_i*10)+_TMPFSM_char-'0';
					_TMP_debug_action("_TMP_real_addr_key(_TMPFSM_i)");
					_TMP_real_addr_key(_TMPFSM_i)     ;{
_TMPFSM_state=33;break;}}
					/* ... -> r_key */
return(0);break;
				case 20: /* double_address_key */
if(isdigit(_TMPFSM_char)){
					/* $decimal */
int _TMPFSM_i=_TMPFSM_char-'0';
while(isdigit(_TMPFSM_get))
_TMPFSM_i=(_TMPFSM_i*10)+_TMPFSM_char-'0';
					_TMP_debug_action("_TMP_double_addr_key(_TMPFSM_i)");
					_TMP_double_addr_key(_TMPFSM_i)     ;{
_TMPFSM_state=33;break;}}
					/* ... -> r_key */
return(0);break;
				case 21: /* string_address_key */
if(isdigit(_TMPFSM_char)){
					/* $decimal */
int _TMPFSM_i=_TMPFSM_char-'0';
while(isdigit(_TMPFSM_get))
_TMPFSM_i=(_TMPFSM_i*10)+_TMPFSM_char-'0';
					_TMP_debug_action("_TMP_str_addr_key(_TMPFSM_i)");
					_TMP_str_addr_key(_TMPFSM_i)     ;{
_TMPFSM_state=38;break;}}
					/* ... -> s_key */
return(0);break;
				case 22: /* variable_key */
if(isdigit(_TMPFSM_char)){
					/* $decimal */
int _TMPFSM_i=_TMPFSM_char-'0';
while(isdigit(_TMPFSM_get))
_TMPFSM_i=(_TMPFSM_i*10)+_TMPFSM_char-'0';
					_TMP_debug_action("_TMP_var_key(_TMPFSM_i)");
					_TMP_var_key(_TMPFSM_i)     ;{
_TMPFSM_state=7;break;}}
					/* ... -> key_seen */
return(0);break;
				case 23: /* i_key */
if(_TMPFSM_char==','){
					/* ',' */
{
_TMPFSM_get;
_TMPFSM_state=24;break;}}
					/* ... -> [next state] */
if(1){
					/* $lambda */
{
_TMPFSM_state=7;break;}}
					/* ... -> key_seen */
return(0);break;
				case 24:
if(_TMPFSM_char=='%'){
					/* '%' */
{
_TMPFSM_get;
_TMPFSM_state=31;break;}}
					/* ... -> i_min_addr */
if(__TMPFSM_rec(_TMPFSM_inp,50)){
					/* !integer_number */
					_TMP_debug_action("_TMP_set_integer_minimum(0)");
					_TMP_set_integer_minimum(0)     ;{
_TMPFSM_state=25;break;}}
					/* ... -> integer_min_seen */
if(1){
					/* $lambda */
{
_TMPFSM_state=25;break;}}
					/* ... -> integer_min_seen */
return(0);break;
				case 25: /* integer_min_seen */
if(_TMPFSM_char==','){
					/* ',' */
{
_TMPFSM_get;
_TMPFSM_state=26;break;}}
					/* ... -> [next state] */
if(1){
					/* $lambda */
{
_TMPFSM_state=7;break;}}
					/* ... -> key_seen */
return(0);break;
				case 26:
if(_TMPFSM_char=='%'){
					/* '%' */
{
_TMPFSM_get;
_TMPFSM_state=32;break;}}
					/* ... -> i_max_addr */
if(__TMPFSM_rec(_TMPFSM_inp,50)){
					/* !integer_number */
					_TMP_debug_action("_TMP_set_integer_maximum(0)");
					_TMP_set_integer_maximum(0)     ;{
_TMPFSM_state=27;break;}}
					/* ... -> integer_max_seen */
if(1){
					/* $lambda */
{
_TMPFSM_state=27;break;}}
					/* ... -> integer_max_seen */
return(0);break;
				case 27: /* integer_max_seen */
if(_TMPFSM_char==','){
					/* ',' */
{
_TMPFSM_get;
_TMPFSM_state=28;break;}}
					/* ... -> help_string */
if(1){
					/* $lambda */
{
_TMPFSM_state=7;break;}}
					/* ... -> key_seen */
return(0);break;
				case 28: /* help_string */
if(_TMPFSM_char=='"'){
					/* '"' */
					_TMP_debug_action("_TMP_init_literal(_TMPFSM_char)");
					_TMP_init_literal(_TMPFSM_char)     ;{
_TMPFSM_get;
_TMPFSM_state=29;break;}}
					/* ... -> help_string_char */
return(0);break;
				case 29: /* help_string_char */
if(_TMPFSM_char=='"'){
					/* '"' */
					_TMP_debug_action("_TMP_help_string(_TMPFSM_char)");
					_TMP_help_string(_TMPFSM_char)     ;{
_TMPFSM_get;
_TMPFSM_state=7;break;}}
					/* ... -> key_seen */
if(_TMPFSM_char=='\\'){
					/* '\\' */
{
_TMPFSM_get;
_TMPFSM_state=30;break;}}
					/* ... -> [next state] */
if(_TMPFSM_char!='\0'){
					/* $any */
					_TMP_debug_action("_TMP_literal_char(_TMPFSM_char)");
					_TMP_literal_char(_TMPFSM_char)     ;{
_TMPFSM_get;
_TMPFSM_state=29;break;}}
					/* ... -> help_string_char */
return(0);break;
				case 30:
if(_TMPFSM_char!='\0'){
					/* $any */
					_TMP_debug_action("_TMP_literal_char(_TMPFSM_char)");
					_TMP_literal_char(_TMPFSM_char)     ;{
_TMPFSM_get;
_TMPFSM_state=29;break;}}
					/* ... -> help_string_char */
return(0);break;
				case 31: /* i_min_addr */
if(isdigit(_TMPFSM_char)){
					/* $decimal */
int _TMPFSM_i=_TMPFSM_char-'0';
while(isdigit(_TMPFSM_get))
_TMPFSM_i=(_TMPFSM_i*10)+_TMPFSM_char-'0';
					_TMP_debug_action("_TMP_set_integer_min_addr(_TMPFSM_i)");
					_TMP_set_integer_min_addr(_TMPFSM_i)     ;{
_TMPFSM_state=25;break;}}
					/* ... -> integer_min_seen */
return(0);break;
				case 32: /* i_max_addr */
if(isdigit(_TMPFSM_char)){
					/* $decimal */
int _TMPFSM_i=_TMPFSM_char-'0';
while(isdigit(_TMPFSM_get))
_TMPFSM_i=(_TMPFSM_i*10)+_TMPFSM_char-'0';
					_TMP_debug_action("_TMP_set_integer_max_addr(_TMPFSM_i)");
					_TMP_set_integer_max_addr(_TMPFSM_i)     ;{
_TMPFSM_state=27;break;}}
					/* ... -> integer_max_seen */
return(0);break;
				case 33: /* r_key */
if(_TMPFSM_char==','){
					/* ',' */
{
_TMPFSM_get;
_TMPFSM_state=34;break;}}
					/* ... -> [next state] */
if(1){
					/* $lambda */
{
_TMPFSM_state=7;break;}}
					/* ... -> key_seen */
return(0);break;
				case 34:
if(_TMPFSM_char=='%'){
					/* '%' */
{
_TMPFSM_get;
_TMPFSM_state=39;break;}}
					/* ... -> r_min_addr */
if(__TMPFSM_rec(_TMPFSM_inp,55)){
					/* !real_number */
					_TMP_debug_action("_TMP_set_real_minimum(0)");
					_TMP_set_real_minimum(0)     ;{
_TMPFSM_state=35;break;}}
					/* ... -> real_min_seen */
if(1){
					/* $lambda */
{
_TMPFSM_state=35;break;}}
					/* ... -> real_min_seen */
return(0);break;
				case 35: /* real_min_seen */
if(_TMPFSM_char==','){
					/* ',' */
{
_TMPFSM_get;
_TMPFSM_state=36;break;}}
					/* ... -> [next state] */
if(1){
					/* $lambda */
{
_TMPFSM_state=7;break;}}
					/* ... -> key_seen */
return(0);break;
				case 36:
if(_TMPFSM_char=='%'){
					/* '%' */
{
_TMPFSM_get;
_TMPFSM_state=40;break;}}
					/* ... -> r_max_addr */
if(__TMPFSM_rec(_TMPFSM_inp,55)){
					/* !real_number */
					_TMP_debug_action("_TMP_set_real_maximum(0)");
					_TMP_set_real_maximum(0)     ;{
_TMPFSM_state=37;break;}}
					/* ... -> real_max_seen */
if(1){
					/* $lambda */
{
_TMPFSM_state=37;break;}}
					/* ... -> real_max_seen */
return(0);break;
				case 37: /* real_max_seen */
if(_TMPFSM_char==','){
					/* ',' */
{
_TMPFSM_get;
_TMPFSM_state=28;break;}}
					/* ... -> help_string */
if(1){
					/* $lambda */
{
_TMPFSM_state=7;break;}}
					/* ... -> key_seen */
return(0);break;
				case 38: /* s_key */
if(_TMPFSM_char==','){
					/* ',' */
{
_TMPFSM_get;
_TMPFSM_state=28;break;}}
					/* ... -> help_string */
if(1){
					/* $lambda */
{
_TMPFSM_state=7;break;}}
					/* ... -> key_seen */
return(0);break;
				case 39: /* r_min_addr */
if(isdigit(_TMPFSM_char)){
					/* $decimal */
int _TMPFSM_i=_TMPFSM_char-'0';
while(isdigit(_TMPFSM_get))
_TMPFSM_i=(_TMPFSM_i*10)+_TMPFSM_char-'0';
					_TMP_debug_action("_TMP_set_real_min_addr(_TMPFSM_i)");
					_TMP_set_real_min_addr(_TMPFSM_i)     ;{
_TMPFSM_state=35;break;}}
					/* ... -> real_min_seen */
return(0);break;
				case 40: /* r_max_addr */
if(isdigit(_TMPFSM_char)){
					/* $decimal */
int _TMPFSM_i=_TMPFSM_char-'0';
while(isdigit(_TMPFSM_get))
_TMPFSM_i=(_TMPFSM_i*10)+_TMPFSM_char-'0';
					_TMP_debug_action("_TMP_set_real_max_addr(_TMPFSM_i)");
					_TMP_set_real_max_addr(_TMPFSM_i)     ;{
_TMPFSM_state=7;break;}}
					/* ... -> key_seen */
return(0);break;
				case 41: /* named_tree */
if(isalpha(_TMPFSM_char)||
					/* $symbol */
(_TMPFSM_char=='$')||
(_TMPFSM_char=='_')){
char _TMPFSM_str[256];int _TMPFSM_i=0;
do _TMPFSM_str[_TMPFSM_i++]=_TMPFSM_char;
while(isalnum(_TMPFSM_get)||
(_TMPFSM_char=='$')||
(_TMPFSM_char=='_'));
_TMPFSM_str[_TMPFSM_i]='\0';
					_TMP_debug_action("_TMP_remember_name(_TMPFSM_str)");
					_TMP_remember_name(_TMPFSM_str)     ;{
_TMPFSM_state=42;break;}}
					/* ... -> [next state] */
return(0);break;
				case 42:
if(_TMPFSM_char==':'){
					/* ':' */
{
_TMPFSM_get;
return(1);}}
					/* ... -> $exit */
return(0);break;
				case 43: /* key_name */
if(1){
					/* $lambda */
					_TMP_debug_action("_TMP_init_literal(0)");
					_TMP_init_literal(0)     ;{
_TMPFSM_state=44;break;}}
					/* ... -> key_name_gobble */
return(0);break;
				case 44: /* key_name_gobble */
if(_TMPFSM_anyof1[_TMPFSM_char]){
					/* $anyof whitespace */
{
_TMPFSM_get;
_TMPFSM_state=44;break;}}
					/* ... -> key_name_gobble */
if(1){
					/* $lambda */
{
_TMPFSM_state=45;break;}}
					/* ... -> [next state] */
return(0);break;
				case 45:
if(_TMPFSM_anyof2[_TMPFSM_char]){
					/* $anyof keyname */
					_TMP_debug_action("_TMP_literal_char(_TMPFSM_char)");
					_TMP_literal_char(_TMPFSM_char)     ;{
_TMPFSM_get;
_TMPFSM_state=46;break;}}
					/* ... -> key_name_char */
if(1){
					/* $lambda */
					_TMP_debug_action("_TMP_finish_literal(0)");
					_TMP_finish_literal(0)     ;{
return(0);}}
					/* ... -> $fail */
return(0);break;
				case 46: /* key_name_char */
if(_TMPFSM_anyof2[_TMPFSM_char]){
					/* $anyof keyname */
					_TMP_debug_action("_TMP_literal_char(_TMPFSM_char)");
					_TMP_literal_char(_TMPFSM_char)     ;{
_TMPFSM_get;
_TMPFSM_state=46;break;}}
					/* ... -> key_name_char */
if(1){
					/* $lambda */
					_TMP_debug_action("_TMP_finish_literal(0)");
					_TMP_finish_literal(0)     ;{
return(1);}}
					/* ... -> $exit */
return(0);break;
				case 47: /* read_prompt */
if(_TMPFSM_char=='"'){
					/* '"' */
					_TMP_debug_action("_TMP_init_literal(_TMPFSM_char)");
					_TMP_init_literal(_TMPFSM_char)     ;{
_TMPFSM_get;
_TMPFSM_state=48;break;}}
					/* ... -> next___prompt_char */
return(0);break;
				case 48: /* next___prompt_char */
if(_TMPFSM_char=='"'){
					/* '"' */
					_TMP_debug_action("_TMP_finish_literal(_TMPFSM_char)");
					_TMP_finish_literal(_TMPFSM_char)     ;{
_TMPFSM_get;
return(1);}}
					/* ... -> $exit */
if(_TMPFSM_char=='\\'){
					/* '\\' */
{
_TMPFSM_get;
_TMPFSM_state=49;break;}}
					/* ... -> [next state] */
if(_TMPFSM_char!='\0'){
					/* $any */
					_TMP_debug_action("_TMP_literal_char(_TMPFSM_char)");
					_TMP_literal_char(_TMPFSM_char)     ;{
_TMPFSM_get;
_TMPFSM_state=48;break;}}
					/* ... -> next___prompt_char */
return(0);break;
				case 49:
if(_TMPFSM_char!='\0'){
					/* $any */
					_TMP_debug_action("_TMP_literal_char(_TMPFSM_char)");
					_TMP_literal_char(_TMPFSM_char)     ;{
_TMPFSM_get;
_TMPFSM_state=48;break;}}
					/* ... -> next___prompt_char */
return(0);break;
				case 50: /* integer_number */
if(1){
					/* $lambda */
					_TMP_debug_action("_TMP_init_for_integer(0)");
					_TMP_init_for_integer(0)     ;{
_TMPFSM_state=51;break;}}
					/* ... -> [next state] */
return(0);break;
				case 51:
if(_TMPFSM_char=='-'){
					/* '-' */
					_TMP_debug_action("_TMP_negate_integer(_TMPFSM_char)");
					_TMP_negate_integer(_TMPFSM_char)     ;{
_TMPFSM_get;
_TMPFSM_state=52;break;}}
					/* ... -> [next state] */
if(1){
					/* $lambda */
{
_TMPFSM_state=52;break;}}
					/* ... -> [next state] */
return(0);break;
				case 52:
if(_TMPFSM_cmp(_TMPFSM_inp,"0x")){
					/* "0x" */
{
_TMPFSM_state=53;break;}}
					/* ... -> integer_num_hex */
if(_TMPFSM_char=='0'){
					/* '0' */
{
_TMPFSM_get;
_TMPFSM_state=54;break;}}
					/* ... -> integer_num_oct */
if(isdigit(_TMPFSM_char)){
					/* $decimal */
int _TMPFSM_i=_TMPFSM_char-'0';
while(isdigit(_TMPFSM_get))
_TMPFSM_i=(_TMPFSM_i*10)+_TMPFSM_char-'0';
					_TMP_debug_action("_TMP_integer_value(_TMPFSM_i)");
					_TMP_integer_value(_TMPFSM_i)     ;{
return(1);}}
					/* ... -> $exit */
return(0);break;
				case 53: /* integer_num_hex */
if(isxdigit(_TMPFSM_char)){
					/* $hex */
int _TMPFSM_i=_TMPFSM_xval(_TMPFSM_char);
while(isxdigit(_TMPFSM_get))
_TMPFSM_i=(_TMPFSM_i<<4)+_TMPFSM_xval(_TMPFSM_char);
					_TMP_debug_action("_TMP_integer_value(_TMPFSM_i)");
					_TMP_integer_value(_TMPFSM_i)     ;{
return(1);}}
					/* ... -> $exit */
return(0);break;
				case 54: /* integer_num_oct */
if((_TMPFSM_char<='7')&&(_TMPFSM_char>='0')){
					/* $octal */
int _TMPFSM_i=_TMPFSM_char-'0';
while(isdigit(_TMPFSM_get)&&(_TMPFSM_char<='7'))
_TMPFSM_i=(_TMPFSM_i<<3)+_TMPFSM_char-'0';
					_TMP_debug_action("_TMP_integer_value(_TMPFSM_i)");
					_TMP_integer_value(_TMPFSM_i)     ;{
return(1);}}
					/* ... -> $exit */
if(1){
					/* $lambda */
					_TMP_debug_action("_TMP_integer_value(00)");
					_TMP_integer_value(0)     ;{
return(1);}}
					/* ... -> $exit */
return(0);break;
				case 55: /* real_number */
if(1){
					/* $lambda */
					_TMP_debug_action("_TMP_parse_blanks(0)");
					_TMP_parse_blanks(0)     ;{
_TMPFSM_state=56;break;}}
					/* ... -> [next state] */
return(0);break;
				case 56:
if(__TMPFSM_rec(_TMPFSM_inp,57)){
					/* !real_number_ */
					_TMP_debug_action("_TMP_skip_blanks(0)");
					_TMP_skip_blanks(0)     ;{
return(1);}}
					/* ... -> $exit */
if(1){
					/* $lambda */
					_TMP_debug_action("_TMP_skip_blanks(0)");
					_TMP_skip_blanks(0)     ;{
return(0);}}
					/* ... -> $fail */
return(0);break;
				case 57: /* real_number_ */
if(1){
					/* $lambda */
					_TMP_debug_action("_TMP_init_for_real(0)");
					_TMP_init_for_real(0)     ;{
_TMPFSM_state=58;break;}}
					/* ... -> [next state] */
return(0);break;
				case 58:
if(_TMPFSM_char=='-'){
					/* '-' */
					_TMP_debug_action("_TMP_negate_real(_TMPFSM_char)");
					_TMP_negate_real(_TMPFSM_char)     ;{
_TMPFSM_get;
_TMPFSM_state=59;break;}}
					/* ... -> [next state] */
if(1){
					/* $lambda */
{
_TMPFSM_state=59;break;}}
					/* ... -> [next state] */
return(0);break;
				case 59:
if(isdigit(_TMPFSM_char)){
					/* $decimal */
int _TMPFSM_i=_TMPFSM_char-'0';
while(isdigit(_TMPFSM_get))
_TMPFSM_i=(_TMPFSM_i*10)+_TMPFSM_char-'0';
					_TMP_debug_action("_TMP_integer_part_real(_TMPFSM_i)");
					_TMP_integer_part_real(_TMPFSM_i)     ;{
_TMPFSM_state=60;break;}}
					/* ... -> [next state] */
if(_TMPFSM_char=='.'){
					/* '.' */
{
_TMPFSM_get;
_TMPFSM_state=61;break;}}
					/* ... -> real_fraction */
return(0);break;
				case 60:
if(_TMPFSM_char=='.'){
					/* '.' */
{
_TMPFSM_get;
_TMPFSM_state=61;break;}}
					/* ... -> real_fraction */
if(1){
					/* $lambda */
{
_TMPFSM_state=62;break;}}
					/* ... -> real_exp */
return(0);break;
				case 61: /* real_fraction */
if(isdigit(_TMPFSM_char)){
					/* $digit */
					_TMP_debug_action("_TMP_real_fraction_digit(_TMPFSM_char)");
					_TMP_real_fraction_digit(_TMPFSM_char)     ;{
_TMPFSM_get;
_TMPFSM_state=61;break;}}
					/* ... -> real_fraction */
if(1){
					/* $lambda */
{
_TMPFSM_state=62;break;}}
					/* ... -> real_exp */
return(0);break;
				case 62: /* real_exp */
if(__TMPFSM_rec(_TMPFSM_inp,64)){
					/* !real_exponent */
{
_TMPFSM_state=63;break;}}
					/* ... -> [next state] */
if(1){
					/* $lambda */
{
_TMPFSM_state=63;break;}}
					/* ... -> [next state] */
return(0);break;
				case 63:
if(1){
					/* $lambda */
					_TMP_debug_action("_TMP_finish_real(0)");
					_TMP_finish_real(0)     ;{
return(1);}}
					/* ... -> $exit */
return(0);break;
				case 64: /* real_exponent */
if(_TMPFSM_anyof0[_TMPFSM_char]){
					/* $anyof real_exp_char */
{
_TMPFSM_get;
_TMPFSM_state=65;break;}}
					/* ... -> [next state] */
return(0);break;
				case 65:
if(_TMPFSM_char=='+'){
					/* '+' */
{
_TMPFSM_get;
_TMPFSM_state=66;break;}}
					/* ... -> [next state] */
if(_TMPFSM_char=='-'){
					/* '-' */
					_TMP_debug_action("_TMP_negate_exp(_TMPFSM_char)");
					_TMP_negate_exp(_TMPFSM_char)     ;{
_TMPFSM_get;
_TMPFSM_state=66;break;}}
					/* ... -> [next state] */
if(1){
					/* $lambda */
{
_TMPFSM_state=66;break;}}
					/* ... -> [next state] */
return(0);break;
				case 66:
if(isdigit(_TMPFSM_char)){
					/* $decimal */
int _TMPFSM_i=_TMPFSM_char-'0';
while(isdigit(_TMPFSM_get))
_TMPFSM_i=(_TMPFSM_i*10)+_TMPFSM_char-'0';
					_TMP_debug_action("_TMP_set_exp(_TMPFSM_i)");
					_TMP_set_exp(_TMPFSM_i)     ;{
return(1);}}
					/* ... -> $exit */
return(0);break;
}}}
