Age | Commit message (Collapse) | Author | Files |
|
* src/git-parser.c: Hanlde end-of-line comments.
* tests/Makefile.am (EXTRA_DIST): Add meta1.conf and git.conf
(TESTSUITE_AT): Add parser-git.at and parser-meta1.at.
* tests/testsuite.at: Include parser-git.at and parser-meta1.at.
* tests/meta1.conf: New file.
* tests/git.conf: New file.
* tests/parser-git.at: New file.
* tests/parser-meta1.at: New file.
* tests/gcffmt.c (main): Handle -type= option.
|
|
* am/grecs.m4: New option: parser-git
* doc/GRECS_SETUP.3: Document new options.
* src/git-parser.c: New file.
* src/Make.am [GRECS_COND_GIT_PARSER]: Define GRECS_PARSER_GIT.
(GRECS_SRC): Add GRECS_PARSER_GIT.
* src/grecs.h (grecs_git_parser): New proto.
* src/txtacc.c (grecs_txtacc_free): Ignore NULL argument.
|
|
* build-aux/yyrename: Ignore #line statements.
|
|
* am/grecs.m4: New option: parser-bind.
* src/.gitignore: Update.
* src/Make.am [GRECS_COND_BIND_PARSER]: Set GRECS_PARSER_BIND
and GRECS_EXTRA_BIND.
(GRECS_SRC): Include GRECS_PARSER_BIND.
(EXTRA_DIST): Include GRECS_EXTRA_BIND.
* src/bind-gram.y: New file.
* src/bind-lex.l: New file.
* src/format.c (grecs_txtacc_format_value): New function.
* src/grecs.h (grecs_bind_parser): New proto.
* src/parser.c: Set grecs_current_locus.
* src/tree.c (grecs_node_bind): Return immediately if node==NULL.
* src/yytrans: Update.
|
|
* Makefile.am (EXTRA_DIST): Add build-aux/yyrename
* am/grecs.m4: New options: parser-meta1 and all-parsers
* src/.gitignore: Update.
* src/Make.am [GRECS_COND_META1_PARSER]: Set GRECS_PARSER_META1 and
GRECS_EXTRA_META1
(GRECS_SRC): Add new files.
(EXTRA_DIST): Add GRECS_EXTRA_META1.
(LEXCOMPILE,YACCCOMPILE): Redefine
* src/grecs-gram.y: Don't include yygrecs.h
(grecs_vasprintf,grecs_asprintf): Move to a separate file.
(grecs_parse): Rename to grecs_grecs_parser.
Actual grecs_parse is defined in parser.c
(grecs_gram_trace): Move to parser.c
* src/grecs-lex.l: Don't include yygrecs.h
Use line_acc functions.
* src/grecs.h (grecs_trace_flags): New extern.
(GRECS_TRACE_GRAM, GRECS_TRACE_LEX): New flags.
(grecs_lex_begin): Change signature.
(grecs_grecs_parser,grecs_meta1_parser): New protos.
(grecs_line_acc_create)
(grecs_line_acc_free,grecs_line_acc_grow_char)
(grecs_line_acc_grow_char_unescape)
(grecs_line_acc_grow)
(grecs_line_acc_grow_unescape_last): New protos.
(GRECS_TXTACC_BUFSIZE): New const
(grecs_txtacc_create,grecs_txtacc_free)
(grecs_txtacc_grow,grecs_txtacc_finish)
(grecs_txtacc_free_string): New protos.
(grecs_value_match): New proto.
* src/wordsplit.c (quote_transtab): Translate \"
* src/yygrecs.h: Remove.
* src/yytrans: New file.
* build-aux/yyrename: New file.
* src/asprintf.c: New file.
* src/lineacc.c: New file.
* src/meta1-gram.y: New file.
* src/meta1-lex.l: New file.
* src/parser.c: New file.
* src/txtacc.c: New file.
* doc/grecs_parse.3: Update.
* doc/GRECS_SETUP.3: Update.
|
|
* src/lookup.c (grecs_value_match): New function.
(grecs_match_buf_free): Ignore NULL argument.
(grecs_match): Implement single-occurrence wildcard (%). Match
values using fnmatch globbing patterns.
(grecs_match_first): Compress multiple contiguous *
|
|
* src/grecs-gram.y (union)<ident>: New field.
(IDENT): Change type to <ident>. All uses changed.
* src/grecs-lex.l (ident): Initialize ident.locus.
* src/grecs.h (GRECS_NODE_FLAG_NODESCEND): New flag.
(grecs_match_buf_t): New data type.
(grecs_match_first,grecs_match_next)
(grecs_match_buf_free): New protos.
(grecs_tree_first_node,grecs_next_node): New protos.
* src/format.c (grecs_format_node): Handle GRECS_NODE_FLAG_NODESCEND flag.
* src/lookup.c (grecs_match_buf): New struct.
(grecs_match_first,grecs_match_next)
(grecs_match_buf_free): New functions.
(split_cfg_path): Fill in array of values, if given.
(parse_tag): Remove. All uses updated.
(node_finder): Use grecs_match_buf.
* src/tree.c (grecs_tree_reduce): Fill config_keywords with 0s.
(grecs_tree_first_node, grecs_next_node): New functions.
* tests/.gitignore: Add gcfenum
* tests/enum.at: New file.
* tests/glob00.at: New file.
* tests/glob01.at: New file.
* tests/glob02.at: New file.
* tests/gcfenum.c: New file.
* tests/Makefile.am: Build gcfenum. Add enum.at test.
* tests/testsuite.at: Include enum.at.
* tests/gcfpeek.c: Implement -match option.
|
|
* build-aux/git2chg.awk: New configuration variables:
since=YYYY-MM-DD, to cut off entries earlier than the
given date, and append=FILE, to append FILE to the
generated ChangeLog.
* am/grecs.m4 (GRECS_HOST_PROJECT_INCLUDES): New substitution
variable.
* src/Make.am (INCLUDES): Expand GRECS_HOST_PROJECT_INCLUDES.
* tests/Makefile.am: Likewise.
|
|
* src/grecs-gram.y (slist production): Free ep->data after appending.
* src/grecs-lex.l (string_list): Remove. All uses updated.
* src/tree.c (grecs_node_free): Free ident.
(grecs_tree_process): Fill config_keywords with zeros.
* src/grecs.h (grecs_getline): New proto.
* src/preproc.c (pp_getline): Rename to grecs_getline,
drop static qualifier. Improve initial allocation.
|
|
* src/tree.c (grecs_process_ident): Do nothing if target is NULL.
|
|
|
|
* Makefile.am (gitid.h): Fix sed expression.
* src/grecs.h (grecs_hash_string): New proto.
* src/symtab.c (grecs_hash_string): New function.
|
|
* src/lookup.c (grecs_value_eq): Allow for NULL values.
|
|
* src/format.c (grecs_format_value): Return immediately if val is NULL.
* src/grecs-gram.y: Accept statements without values and arrays as
block tags.
* src/tree.c (grecs_process_ident): Bail out if a value is required, but
not given.
|
|
|
|
|
|
* .gitignore: Add gitid.h
* Makefile.am: Build gitid.h.
* am/grecs.m4: Remove GRECS_VEROK_AT.
* build-aux/getopt.m4 (print_version_hook): New variable.
(print_version): Call print_version_hook, if defined.
* src/Make.am (INCLUDES): Update.
* src/grecs.h (grecs_version_info) <id>: New member.
* src/version.c (grecs_version): Initialize id.
* tests/Makefile.am: Remove GRECS_VEROK_AT.
* tests/testsuite.at: Likewise.
|
|
* am/grecs.m4: Define GRECS_VEROK_AT if package version matches
the standard scheme.
Define GRECS_DISTCK_AT if install flag is set.
* src/grecs.h (GRECS_VERSION_MAJOR)
(GRECS_VERSION_MINOR): New defines.
(grecs_version_info)<buffer>: New member.
(grecs_version): Return allocated grecs_version_info structure.
(grecs_version_cmp): Change prototype.
(grecs_version_ok)
(grecs_version_info_cmp)
(grecs_version_split)
(grecs_version_info_free): New protos.
* src/version.c: Rewrite.
* src/libgrecs.m4 (AM_LIBGRECS): Use grecs_version_ok
* tests/.gitignore: Add distck.
* tests/Makefile.am: Add new tests.
* tests/testsuite.at: Add new tests.
* tests/gcfver.c: Update.
* tests/vercmp.at: Rewrite.
* tests/verok.at: New file (from old vercmp.at).
* tests/distck.at: New file.
* tests/distck.c: New file.
|
|
|
|
* src/grecs.h (GRECS_MULT): New flag.
* src/lookup.c (parse_label): Allocate array elements.
* src/tree.c (grecs_process_ident): Store string duplicates
in lists.
(reduceproc): Ignore keywords marked with GRECS_MULT.
|
|
* AUTHORS, COPYING, NEWS, README: New files.
* .gitignore: Update.
* am/.gitignore: New file.
* build-aux/.gitignore: New file.
* build-aux/ylwrap: Remove.
* Makefile.am: Define ACLOCAL_AMFLAGS
[GRECS_CHANGELOG]: Build ChangeLog.
* am/grecs.m4: Define GRECS_CHANGELOG and GRECS_SRCDIR.
Fixup first argument, if it is [.].
* configure.ac: New file.
* src/Make-inst.am (include_HEADERS): Add wordsplit.h.
Install libgrecs.m4.
* Make-shared.am (noinst_HEADERS): Add wordsplit.h.
* src/Make-static.am: Likewise.
* src/Make.am (GRECS_SRC): Remove wordsplit.h
(noinst_HEADERS): Add yygrecs.h
(YLWRAP): Remove.
* src/libgrecs.m4: New file.
* src/yygrecs.h: New file.
* src/grecs-gram.y: Include yygrecs.h.
* src/grecs-lex.l: Likewise.
* src/preproc.c (yy_grecs_flex_debug): Rename to grecs_yy_flex_debug.
|
|
* src/Makefile.am: Remove.
* src/Make.am (GRECS_SRC): Remove grecs.h
* src/Make-inst.am (include_HEADERS): Add grecs.h
* src/Make-shared.am (noinst_HEADERS): Add grecs.h
* src/Make-static.am: Likewise.
|
|
* src/grecs.h (grecs_tree_reduce): Change signature.
(nodeproc_closure)<flags>: New member.
(value_to_list): Bugfixes.
(value_to_array,array_add): New functions.
(node_aggregate_stmt): Rewrite.
(node_merge_stmt): Take additional argument.
(grecs_tree_reduce): Take additional argument. All uses changed.
* src/tree.c (grecs_tree_free): Don't coredump on NULL arg.
* src/format.c (grecs_format_simple_statement): Bugfix.
* tests/reduce03.at: New testcase.
* tests/Makefile.am: Add reduce03.at
* tests/testsuite.at: Add reduce03.at
* tests/gcffmt.c: Single grecs_format_node call is enough to
print the entire tree.
* tests/gcfset.c (logging_kwtab): Mark "facility" as GRECS_AGGR
to disable aggregation.
(usage): Update.
(main): New options: -print, -locus, -sort, -noset.
Pass GRECS_AGGR to grecs_tree_reduce.
|
|
* build-aux/getopt.m4: Fixup cmdline_tree, if needed.
|
|
* src/join.c: New file.
* src/Make.am: Add join.c
* src/grecs.h (grecs_tree_join): New function.
* tests/gcffmt.c (main): If several files are given, process
them all and join the resulting trees.
* tests/join.at: New testcase.
* tests/testsuite.at: Include join.at.
* tests/Makefile.am: Add join.at.
|
|
* src/grecs.h (grecs_free_fun): New extern.
(grecs_free): New proto.
* src/format.c: Use grecs_free where appropriate.
* src/grecs-lex.l: Likewise.
* src/preproc.c: Likewise.
* src/tree.c: Likewise.
* src/lookup.c (parse_label): Use grecs_value_list_create.
* src/mem.c: Initialize hooks with the default values.
(grecs_free_fun): New hook.
(grecs_free): New function.
* doc/grecs_malloc.3: Document grecs_free.
* doc/grecs_parse.3: Document the recent changes.
* doc/grecs_strdup.3: Update.
|
|
* src/grecs-lex.l (grecs_lex_end): Free both lists.
Additional argument specifies if string data should be
freed as well (on error).
(grecs_value_dup): Don't append to string_list.
* src/grecs.h (grecs_value) <v.string>: Remove const qualifier.
<v.arg.v>: Array of struct grecs_value pointers.
(grecs_node)<value>: Move to the union v.
<v.texttab>: Text storage table (for grecs_node_root).
(grecs_lex_end): Fix prototype.
(grecs_value_list_create): New prototype.
(grecs_value_free: New prototype.
(grecs_value_dup): Rename to grecs_value_ptr_from_static.
* src/text.c (grecs_text_table): New function.
* src/tree.c (grecs_value_free): New function.
(grecs_node_free): Reimplement.
(grecs_tree_free): Rewrite using grecs_tree_recurse.
(grecs_string_convert): strdup string values.
(grecs_value_list_create): New function.
* tests/gcffmt.c: Call grecs_tree_free.
* tests/gcfpeek.c: Likewise.
* tests/gcfset.c: Likewise.
|
|
* src/sort.c: New file.
* src/Make.am: Add sort.c.
* tests/gcffmt.c: New option -sort.
* src/grecs-lex.l (ID): Allow for single-character identifiers.
|
|
* src/format.c (grecs_format_node)
(grecs_format_node_path): Handle grecs_node_root.
* src/grecs-gram.y (input production): Create root node.
* src/grecs.h (grecs_list_entry)<prev>: New member.
(grecs_node_root): New node type.
(grecs_node_eq): New proto.
(grecs_list_add,grecs_tree_reduce): New protos.
* src/list.c: Rewrite as a doubly-linked list.
* src/tree.c (grecs_node_bind): Bugfix.
(grecs_node_unlink): New function.
(_tree_recurse): Allow for removal of the current node.
(grecs_node_eq): New function.
(grecs_tree_reduce): New function.
(grecs_tree_process): Descend into the first subnode at once.
* src/lookup.c (node_finder): Handle grecs_node_root.
* tests/reduce00.at: New testcase.
* tests/reduce01.at: New testcase.
* tests/reduce02.at: New testcase.
* tests/testsuite.at (GRECS_TEST): New macro.
Include reduce0[0-2].at.
* tests/gcffmt.c: New option -reduce.
* tests/gcfpeek.c: Likewise.
* tests/gcfset.c: Likewise.
|
|
|
|
* am/grecs.m4 (GRECS_SETUP): New option: shared.
* doc/GRECS_SETUP.3: Document new options.
* doc/grecs_format_locus.3: Update.
* doc/grecs_format_node.3: Document new flags.
* src/.gitignore: Update.
* src/version.c: New file.
* src/Make.am (GRECS_SRC): Add version.c
(EXTRA_DIST): Update.
* src/diag.c (default_print_diag): Flush stdout as per the docs.
* src/format.c (grecs_format_locus): Don't print trailing semicolon.
(grecs_format_value): Handle GRECS_NODE_FLAG_NOQUOTE flag.
(grecs_format_node): Print delimiters when needed.
* src/grecs.h (grecs_version_info): New struct.
(grecs_version, grecs_version_cmp): New protos.
(GRECS_NODE_FLAG_NOQUOTE): New flag.
* tests/gcfver.c: New file.
* tests/vercmp.at: New file.
* tests/.gitignore: Update.
* tests/Makefile.am: Define GRECS_VERCMP_AT in package.m4
(TESTSUITE_AT): Add vercmp.at (conditionally).
(noinst_PROGRAMS): Add gcfver.
* tests/testsuite.at: Conditionally include vercmp.at.
|
|
* am/grecs.m4 (GRECS_SETUP): New option: shared.
* doc/GRECS_SETUP.3: Document new options.
* doc/grecs_format_locus.3: Update.
* doc/grecs_format_node.3: Document new flags.
* src/.gitignore: Update.
* src/version.c: New file.
* src/Make.am (GRECS_SRC): Add version.c
(EXTRA_DIST): Update.
* src/diag.c (default_print_diag): Flush stdout as per the docs.
* src/format.c (grecs_format_locus): Don't print trailing semicolon.
(grecs_format_value): Handle GRECS_NODE_FLAG_NOQUOTE flag.
(grecs_format_node): Print delimiters when needed.
* src/grecs.h (grecs_version_info): New struct.
(grecs_version, grecs_version_cmp): New protos.
(GRECS_NODE_FLAG_NOQUOTE): New flag.
* tests/gcfver.c: New file.
* tests/vercmp.at: New file.
* tests/.gitignore: Update.
* tests/Makefile.am: Define GRECS_VERCMP_AT in package.m4
(TESTSUITE_AT): Add vercmp.at (conditionally).
(noinst_PROGRAMS): Add gcfver.
* tests/testsuite.at: Conditionally include vercmp.at.
|
|
|
|
* src/format.c (grecs_format_value): Fix quoting (missed trailing 0).
|
|
* am/grecs.m4 (GRECS_SETUP): New flags: getopt and git2chg.
* src/format.c (grecs_format_locus): Ignore NULL loci.
(grecs_format_node_ident): Rename to grecs_format_node_path.
Change semantics of the second argument.
(grecs_format_value): Change signature (take flags).
Correctly quote string values.
* src/grecs.h: Protect the contents with #ifndef _GRECS_H.
(GRECS_AGGR): New flag (for future use).
(grecs_node) <prev>: New member.
(grecs_format_value): Change signature.
(grecs_format_node_ident): Rename to grecs_format_node_path.
(GRECS_NODE_FLAG_PATH,GRECS_NODE_FLAG_VALUE)
(GRECS_NODE_FLAG_QUOTE,GRECS_NODE_FLAG_QUOTE_HEX)
(GRECS_NODE_FLAG_DEFAULT): New flags.
(grecs_node_from_path): New proto.
* src/lookup.c (grecs_node_from_path): New function.
* src/tree.c (grecs_node_bind): Keep track of node->prev.
|
|
The configuration file parser creates a syntax tree. This step
does not require any knowledge about which keywords are allowed.
The user can then either use that tree directly, or post-process
it using parser tables. The latter approach is equivalent to
previous versions of grecs.
|
|
|
|
|
|
* am/grecs.m4 (GRECS_SETUP): Call AC_PROG_YACC and AM_PROG_LEX.
* src/grecs.h: Add a missing prototype.
|
|
* am/grecs.m4 (GRECS_INCLUDES): New substitute variable.
* src/Makefile.am (INCLUDES): Add GRECS_INCLUDES.
* src/grecs-gram.y: Remove leftover uses of xmalloc.
* src/grecs.h (grecs_zalloc, grecs_calloc): New protos.
* src/mem.c (grecs_zalloc, grecs_calloc): New functions.
* src/wordsplit.c [ENABLE_NLS]: include gettext.h
|
|
* gnulib.modules: Remove.
* src/mem.c: New file.
* src/symtab.c: New file.
* src/Makefile.am (libgrecs_a_SOURCES): Add mem.c and symtab.c.
(INCLUDES): Remove -Ignu
* src/grecs-gram.y (grecs_vasprintf, grecs_asprintf): New functions.
(grecs_warning, grecs_error): Use grecs_vasprintf.
(string_to_signed, string_to_unsigned): Remove.
(STRTONUM,STRxTONUM,GETUNUM,GETSNUM): New macros (from Mailutils).
(grecs_string_convert): Use macros for numeric conversions.
(grecs_prop_tab): Remove entries for uintmax_t and intmax_t.
* src/grecs-lex.l: Drop dependency on obstack.
(line_acc, string_list): New statics.
(line_acc_free_entry,line_acc_add_string): new function
(line_acc_add_char,list_acc_unescape_char): new function
(line_add_unescape_last): new function
(grecs_lex_begin,grecs_line_add, multiline_begin)
(grecs_line_finish): Rewrite.
* src/grecs.h (grecs_type_uintmax,grecs_type_intmax): Remove.
(grecs_malloc_fun,grecs_realloc_fun,grecs_alloc_die_fun): New externs.
(grecs_malloc,grecs_realloc,grecs_alloc_die,grecs_strdup)
(grecs_list_clear,grecs_list_free)
(grecs_vasprintf,grecs_asprintf): New protos.
(grecs_symtab,grecs_syment): New structs.
(grecs_symtab_enumerator_t): New type.
(grecs_symtab_strerror,grecs_symtab_lookup_or_install)
(grecs_symtab_clear,grecs_symtab_create)
(grecs_symtab_create_default)
(grecs_symtab_free,grecs_symtab_remove,grecs_symtab_replace)
(grecs_symtab_enumerate,grecs_symtab_count_entries): New protos.
* src/list.c (grecs_list_clear): New function.
(grecs_list_free): Use grecs_list_clear.
* src/preproc.c (linebufbase,linebufsize): New variables.
(pp_getline): New function.
(pp_line_stmt_size): Remove.
(pp_line_stmt): Use grecs_asprintf to format data.
(next_line,grecs_preproc_extrn_start): Use pp_getline.
(source_lookup): Use grecs_symtab instead of hash.
* src/text.c: Rewrite using grecs_symtab.
|
|
* gnulib.modules (linked-list, xlist): Remove.
* src/list.c: New file.
* src/Makefile.am (libgrecs_a_SOURCES): Add list.c
* src/grecs-gram.y: Use grecs_list functions.
* src/preproc.c: Likewise.
* src/grecs.h (grecs_list_entry, grecs_list): New structs.
(grecs_value): use struct grecs_list* for the v.list member.
(grecs_log_to_stderr): Change type to int.
(grecs_list_create, grecs_list_size, grecs_list_push)
(grecs_list_pop, grecs_list_locate, grecs_list_index)
(grecs_list_remove_tail): New protos.
|
|
The macro takes an optional second argument. When given, it supplies
the name of the preprocessor setup file to install.
Options available for use in the 1st argument are:
no-preproc Generate the --without-preprocessor option.
std-pp-setup Install the default pp-setup file. Note for
upgraders: earlier this was the default!
pp-setup-option Generate the --with-pp-setup-file option.
* am/grecs.m4 (GRECS_SETUP): Handle new options.
|
|
|
|
* gnulib.modules: Remove c-type, error, regex and stdbool.
* src/grecs-gram.y: Use 0/1 instead of false/true.
* src/preproc.c: Likewise.
* src/grecs.h: Don't include stdbool.h
* src/wordsplit.c: Apply fixes from Mailutils.
* src/wordsplit.h: Likewise.
|
|
Happy GNU Year!
|
|
* gnulib.modules: Add xlist.
* src/grecs.h: Include gl_xlist.h
|
|
* src/grecs-lex.l: Fix #include <config.h> protection.
|
|
* src/wordsplit.c (scan_word): Ignore trailing whitespace.
* src/grecs-lex.l: Remove duplicate inclusion of config.h
|
|
* src/grecs-lex.l (%top): Include config.h (requires flex >= 2.5.30)
* src/wordsplit.c: Include stdio.h
|