Exemple #1
0
int main(int argc, char** argv) {

  create_parsers();

  init();

  if (argc > 1) {

    parser_execute_file(argv[1]);

  } else {
    while(1) {
      char* input = readline(":>  ");

      add_history(input);

      if (strcmp(input, "") == 0) {
        continue;
      } else if (strcmp(input, "exit") == 0) {
        break;
      } else {
        parser_execute(input);
      }

      free(input);

    }
  }
  cleanup_parsers();

  return 0;
}
Exemple #2
0
VALUE parse_tags(VALUE self, VALUE start_tag, VALUE end_tag, VALUE string)
{
	VALUE str = StringValue(string);
	VALUE start = StringValue(start_tag);
	VALUE end = StringValue(end_tag);
	parse_input input = (parse_input) {
		RSTRING(str)->ptr,   RSTRING(str)->len,
		RSTRING(start)->ptr, RSTRING(start)->len,
		RSTRING(end)->ptr,   RSTRING(end)->len
	};
	parse_data *p = parser_execute(&input);
	GList *list = p->elements;
	VALUE array = rb_ary_new2(g_list_length(list));
	for (GList *i = list; i; i = i->next) {
		int *data = (int *)i->data;
		VALUE pos = rb_ary_new2(ARRAY_SIZE);
		rb_ary_push(pos, INT2NUM(data[0]));
		rb_ary_push(pos, INT2NUM(data[1]));
		rb_ary_push(array, pos);
	}
	parser_free(p);
	return array;
}