コード例 #1
0
ファイル: ne.c プロジェクト: gentooinit/n00b-expression
int ne_parse(const char *formula)
{
	int err;
	struct symbol_table *sym;

	ne.buf = yy_scan_string(formula, ne.scanner);

	yyset_lineno(1, ne.scanner);
	yyset_column(1, ne.scanner);
	__ne_clear_error(&ne);

	err = yyparse(&ne);

	if (!err) {
		__ne_put_result(&ne, eval(&ne, ne.root));

		sym = get_sym(&ne, "y");
		if (sym && sym->dirty) {
			__ne_put_result(&ne, __ne_get_y(&ne));
			clean_output_sym(&ne);
		}
	}

	if (ne.error != 0)
		err = ne.error;
	else if (ne.warrning != 0)
		err = ne.warrning;

	free_ast(ne.root);
	ne.root = NULL;
	ne.stop = 0;
	yy_delete_buffer(ne.buf, ne.scanner);

	return err;
}
コード例 #2
0
ファイル: js-node.c プロジェクト: VujinovM/anjuta
JSNode*
js_node_new_from_file (const gchar *name)
{
	FILE *f = fopen (name, "r");
	JSNodePrivate *priv;

	line_missed_semicolon = NULL;
	global = NULL;
	yyset_lineno (1);
	YY_BUFFER_STATE b = yy_create_buffer (f, 10000);
	yy_switch_to_buffer (b);

	yyparse ();

	fclose (f);

	yy_delete_buffer (b);
	if (!global)
		return g_object_new (JS_TYPE_NODE, NULL);
	priv = JS_NODE_GET_PRIVATE (global);

	priv->missed = line_missed_semicolon;
	return global;
}
コード例 #3
0
ファイル: ehi.cpp プロジェクト: JelleZijlstra/EH
void EHI::parse_string(const char *cmd) {
	yy_switch_to_buffer(yy_scan_string(cmd, scanner), scanner);
	yyset_lineno(1, scanner);
	do_parse();
}