eof (g_function_table [0]); i + +)
{(! strcmp (g_function_table [i]. name, name)) & g_function_table [i];
} NULL;
} execute_builtin_function (CodeBuffer * cb, BuiltinFunction * func)
{v [MAX_FUNC_ARGS]; i; (i = 0; i num_args)
{[arg_count] = parser_bool1 (cb); _count + +; (arg_count> = func-> num_args | | arg_count> = MAX_FUNC_ARGS) break; (func-> num_args == (int ) '*')
{(currToken.type == ',')
{
/* Removed comma */
;/* ok */
} if (currToken.type == ')')
{;
}
{[0]. error = parser_format_string ("Missing ',' or ')' at function% s.", func-> name); v [0];
}
}
{
/* Remove comma between expressions */(currToken.type! = TOK_COMMA)
{* p = builtin_function_arg_text (func); [0]. error = parser_format_string ("Missing ',' at function% s. Function% s takes% s arguments.", func-> ; name, func-> name, p); (p); v [0];
}
}
/* Next token */_get_token (cb, & currToken);
} (arg_count == 0)
{* p = builtin_function_arg_text (func); [0]. error = parser_format_string ("Не задані аргументи. Функція% s має% s аргумент (и).", func-> name , p); (p); v [0];
}> func (v, arg_count); v [0];
} * builtin_function_arg_text (BuiltinFunction * func)
{* p; (func-> num_args == '*') = parser_format_string ("До% d", MAX_FUNC_ARGS); = parser_format_string ("% d", func-> num_args);
/* You should free () the value after usage */p;
} * parser_copy_string (char * s)
{_t len ​​= min (parser_strlen (s), MAX_TOKEN_LEN); * tmp = (char *) calloc (len +1, sizeof (char)); (len) (tmp, s, len );
* (tmp + len) = ' 0'; tmp;
} * parser_quote_string (char * s)
{_t len ​​= min (parser_strlen (s), MAX_TOKEN_LEN); * tmp; (len> 0 && (* s == '"' | | * s == ' ''))
{parser_copy_string (s);
} = (char *) calloc (len + 3/* "+ 0 +" * /, sizeof (char));
* tmp = '"'; (len) (tmp +1, s, len);
* (tmp + len +1) = '"';
* (tmp + len +2) = ' 0'; tmp;
} _t parser_strlen (char * s) <...