// -- int main(void) { /* bool b = any_of('c', "abc"); printf("%d\n", b); */ /* char *s1 = "adaeda ; a;k;j;"; char *s2 = "abcde ;"; int len = strspn(s1, s2); printf("%d\n", len); */ // printf("%d\n", isalpha('3')); code_t *code = load_code("./code.scm"); // printf("%s", code->code); identifier_t *id = alloc_identifier(); int iter = 0; extract_identifier(code, iter, id); dealloc_identifier(id); free_code(code); return 0; return 0; }
bool extract_identifiers ( SemanticVersion::identifier_list& identifiers, bool allowLeadingZeroes, std::string& input) { if (input.empty ()) return false; do { std::string s; if (!extract_identifier (s, allowLeadingZeroes, input)) return false; identifiers.push_back (s); } while (chop (".", input)); return true; }
static void macro_define_command (char *exp, int from_tty) { struct macro_definition new_macro; char *name = NULL; struct cleanup *cleanup_chain; if (!exp) error (_("usage: macro define NAME[(ARGUMENT-LIST)] [REPLACEMENT-LIST]")); cleanup_chain = make_cleanup (free_macro_definition_ptr, &new_macro); make_cleanup (free_current_contents, &name); memset (&new_macro, 0, sizeof (struct macro_definition)); skip_ws (&exp); name = extract_identifier (&exp, 0); if (! name) error (_("Invalid macro name.")); if (*exp == '(') { /* Function-like macro. */ int alloced = 5; char **argv = XNEWVEC (char *, alloced); new_macro.kind = macro_function_like; new_macro.argc = 0; new_macro.argv = (const char * const *) argv; /* Skip the '(' and whitespace. */ ++exp; skip_ws (&exp); while (*exp != ')') { int i; if (new_macro.argc == alloced) { alloced *= 2; argv = (char **) xrealloc (argv, alloced * sizeof (char *)); /* Must update new_macro as well... */ new_macro.argv = (const char * const *) argv; } argv[new_macro.argc] = extract_identifier (&exp, 1); if (! argv[new_macro.argc]) error (_("Macro is missing an argument.")); ++new_macro.argc; for (i = new_macro.argc - 2; i >= 0; --i) { if (! strcmp (argv[i], argv[new_macro.argc - 1])) error (_("Two macro arguments with identical names.")); } skip_ws (&exp); if (*exp == ',') { ++exp; skip_ws (&exp); } else if (*exp != ')') error (_("',' or ')' expected at end of macro arguments.")); } /* Skip the closing paren. */ ++exp; skip_ws (&exp); macro_define_function (macro_main (macro_user_macros), -1, name, new_macro.argc, (const char **) new_macro.argv, exp); }