Esempio n. 1
0
static void
print_parse(s3_cfg_t *_cfg, s3_cfg_entry_t *_parse, FILE *_out,
                        int _depth)
{
  int i;

  assert(_cfg != NULL);
  assert(_parse != NULL);

  if (_parse->back != NULL)
    print_parse(_cfg, _parse->back, _out, _depth);

  if (_parse->dot == 0) {
    for (i = _depth - 1; i >= 0; i--)
      fprintf(_out, "> ");
    s3_cfg_print_rule(_cfg, _parse->rule, _out);
    fprintf(_out, "\n");
  }

  if (_parse->complete != NULL)
    print_parse(_cfg, _parse->complete, _out, _depth + 1);
}
Esempio n. 2
0
/*-----------------------------------------------------------------------*
 * Main routine which takes a string as input and returns a parse string * 
 *-----------------------------------------------------------------------*/
Gal_Frame send_to_parse(Gal_Frame f, void *server_data)
{
   int i, path_score;
   char *in_string, *out_string, *sysid;
   Gal_Frame f_new = Gal_MakeFrame("main", GAL_CLAUSE);

   /* get the input string to parse from the key's value */
   in_string  = Gal_GetString(f, ":input_string");
   sysid      = Gal_GetString(f, ":sysid");
   path_score = Gal_GetInt(f, ":path_score");

   if (in_string == NULL)
      in_string = Gal_GetString(f, ":parse_input");

   /* strip out punctuation, comments, etc, to uppercase */
   strip_line(in_string);

   /* Call Phoenix Parse function */
   parse(in_string, gram);

   /* print parses to buffer */
   if( num_parses > MaxParses ) num_parses= MaxParses;
   if( num_parses < 1 ) { strcpy(outbuf, "No Parse"); }
   else {
	out_string= outbuf;
	for(i= 0; i < num_parses; i++ ) {
	    sprintf(out_string, "PARSE_%d:\n", i);
	    out_string += strlen(out_string);
	    print_parse(i, out_string, extract, gram);
	    out_string += strlen(out_string);
	    sprintf(out_string, "END_PARSE\n");
	    out_string += strlen(out_string);
	}
	sprintf(out_string, "\n");
	out_string= outbuf;
   }

   /* clear parser temps */
   reset(num_nets);

   /*  create a new frame containing the parse */ 
   Gal_SetProp(f_new, ":parse_input", Gal_StringObject(in_string));
   Gal_SetProp(f_new, ":parse_output", Gal_StringObject(outbuf));
   if (sysid != NULL) Gal_SetProp(f_new, ":sysid", Gal_StringObject(sysid));
   if (path_score != 0) Gal_SetProp(f_new, ":path_score", Gal_IntObject(path_score));

   /* write parse output frame to HUB */
   GalSS_EnvWriteFrame((GalSS_Environment *) server_data, f_new, 0);

   return(f);
}
Esempio n. 3
0
  int main() {
    char *linha;
    COMMAND com;

    while (1) {
      if ((linha = readline("my_prompt$ ")) == NULL)
			exit(0);
		if (strlen(linha) != 0) {
			add_history(linha);  //biblioteca readline, historico de comandos que escrevi
			com = parse(linha);
			if(strcmp(com.cmd ,"exit")==0)
				exit(0);		
			print_parse(com);
      }
      free(linha);
    }
  }
Esempio n. 4
0
void
s3_cfg_print_parse(s3_cfg_t *_cfg, s3_cfg_entry_t *_parse, FILE *_out)
{
  print_parse(_cfg, _parse, _out, 0);
}