Age | Commit message (Collapse) | Author | Files |
|
yylloc reflects the location of the current token. Its end
point does not necessarily coincide with the current scanner
point.
|
|
Remove the grecs_current_locus_point variable. Use yylloc.end directly.
For git-parser.c and path-parser.c, provide a static replacement.
|
|
|
|
When external preprocessing is required, each source file is preprocessed
separately. This means that if you use #include or #include_once
statements, a separate copy of external preprocessor will be started
for each included file. In other words, when both internal and external
preprocessing is used, the order is: external first, internal next.
Previous versions of grecs implemented opposite order, when one external
preprocessor was started, which obtained input from the internal
preprocessor.
One concequence of this is that any macros defined in a configuration file
are no longer visible for files included from it.
* include/grecs/lex.h (grecs_parse_line_directive)
(grecs_parse_line_directive_cpp): Change signature.
* include/grecs/preproc.h (grecs_preproc_init)
(grecs_preproc_done)
(grecs_preproc_run): Remove.
(grecs_preprocess): New proto.
* src/grecs-lex.l: Rewrite.
* src/Make.am: Remove preproc.c
* src/preproc.c: Remove.
* src/bind-lex.l: Update calls to grecs_parse_line_directive*
functions.
* src/dhcpd-lex.l: Likewise.
* tests/Makefile.am: Add new tests.
* tests/testsuite.at: Inlcude new tests.
* tests/epp.at: New file.
* tests/ipp.at: New file.
* tests/fpp.c: Rename to tests/failpp.c
* tests/gcfpp.c: New file.
* tests/incl01.at: Change expected strings.
* tests/ppexit.at: Change expected strings.
|
|
|
|
* Makefile.am (SUBDIRS): Add include
* am/grecs.m4 (GRECS_INCLUDES): Update
(GRECS_COND_BUILD_INSTALL)
(GRECS_COND_BUILD_SHARED)
(GRECS_COND_BUILD_STATIC): New conditions.
Build include/Makefile and include/grecs/Makefile.
* configure.ac: Use src/grecs-gram.y as a source
validity marker
* include/Makefile.a: New file.
* src/grecs.hin: Remove. Split into include/*. See below.
* include/grecs.h: New file.
* include/grecs/.gitignore: New file.
* include/grecs/Makefile.am: New file.
* include/grecs/doc.h: New file.
* include/grecs/error.h: New file.
* include/grecs/format.h: New file.
* include/grecs/lex.h: New file.
* include/grecs/list.h: New file.
* include/grecs/mem.h: New file.
* include/grecs/node.h: New file.
* include/grecs/parser.h: New file.
* include/grecs/preproc.h: New file.
* include/grecs/sockaddr.h: New file.
* include/grecs/symtab.h: New file.
* include/grecs/table.h: New file.
* include/grecs/tree.h: New file.
* include/grecs/txtacc.h: New file.
* include/grecs/types.h.in: New file.
* include/grecs/util.h: New file.
* include/grecs/value.h: New file.
* include/grecs/version.h: New file.
* src/grecs-locus.h: Move to ...
* include/grecs/locus.h: ... here
* src/grecsopt.h: Move to ...
* include/grecs/opt.h: ... here
* src/json.h: Move to ...
* include/grecs/json.h: ... here
* src/wordsplit.h: Move to ...
* include/wordsplit.h: ... here
* src/Make-inst.am (include_HEADERS): Remove.
* src/Make-shared.am (grecsinclude_HEADERS)
(noinst_HEADERS): Remove.
* src/Make-static.am (noinst_HEADERS): Remove.
* src/Make.am: Remove header-related stuff
* src/bind-gram.y: Fix includes.
* src/bind-lex.l: Likewise.
* src/cidr.c: Likewise.
* src/dhcpd-gram.y: Likewise.
* src/dhcpd-lex.l: Likewise.
* src/diag.c: Likewise.
* src/format.c: Likewise.
* src/grecs-gram.y: Likewise.
* src/grecs-lex.l: Likewise.
* src/json-gram.y: Likewise.
* src/json-lex.l: Likewise.
* src/jsonfmt.c: Likewise.
* src/lookup.c: Likewise.
* src/meta1-gram.y: Likewise.
* src/meta1-lex.l: Likewise.
* src/opthelp.c: Likewise.
* src/preproc.c: Likewise.
* src/sockaddr.c: Likewise.
* src/txtacc.c: Likewise.
* src/version.c: Likewise.
* tests/gcfenum.c: Likewise.
* tests/gcffmt.c: Likewise.
* tests/gcfpeek.c: Likewise.
* tests/gcfset.c: Likewise.
* tests/gcfver.c: Likewise.
* tests/json.c: Likewise.
|
|
|
|
* src/lineacc.c (grecs_line_acc_grow_char_unescape): If the escape
sequence is not defined, add the character itself and return 1.
Return 0 otherwise.
(grecs_line_acc_grow_unescape_last): Take pointer to locus as third
argument. If not NULL, print warning about undefined escape sequences.
All callers updated.
* src/parser.c (grecs_parse): Unless grecs_trace_flags is already set,
set it from the value of GRECS_DEBUG environment variable.
|
|
* src/bind-lex.l: Set noinput,nounput options
* src/dhcpd-lex.l: Likewise.
* src/meta1-lex.l: Likewise.
|
|
|
|
|
|
diagnostics.
* src/grecs.h (grecs_locus_point): New struct.
(grecs_locus_point_advance_line): New macro.
(grecs_locus_t): Redesign.
(grecs_value) <locus>: New member.
(grecs_node) <idloc>: New member.
(grecs_print_diag_fun): Change signature.
(grecs_warning,grecs_error): Change signature.
(grecs_parse_line_directive)
(grecs_parse_line_directive_cpp)
(grecs_string_convert): Change signature.
(grecs_current_locus): Remove.
(grecs_current_locus_point): New extern.
* src/grecs-locus.h: New file.
* src/Make.am (noinst_HEADERS): Add grecs-locus.h.
* src/join.c (reset_locus): Rewrite.
* src/lookup.c: Initialize new members of grecs_value and grecs_node.
(split_cfg_path): Return wrdse error code.
(grecs_node_from_path_locus): Take two grecs_locus_t arguments.
Make sure all created nodes have their locus members
properly initialized.
* src/parser.c (grecs_parse): Initialize grecs_current_locus_point.
* src/tree.c (grecs_node_create_points): New function.
(string_to_bool,string_to_host,string_to_sockaddr)
(grecs_string_convert): Change signatures. Be more precise in
what locus to report.
* src/diag.c (default_print_diag): Use YY_LOCATION_PRINT to
output locus.
(grecs_print_diag_fun): Change signature.
(grecs_warning,grecs_error): Change signature.
* src/format.c (grecs_format_locus): Rewrite.
(grecs_format_node): Be more precise in what locus is being
output.
* src/bind-gram.y: Keep track of locations. Turn on error-verbose mode.
* src/grecs-gram.y: Likewise.
* src/meta1-gram.y: Likewise.
* src/bind-lex.l: Keep track of locations.
* src/git-parser.c: Likewise.
* src/grecs-lex.l: Likewise.
* src/meta1-lex.l: Likewise.
* src/path-parser.c: Likewise.
* src/preproc.c: Likewise.
* tests/gcf1.conf: Untabify.
* tests/format01.at: Reflect changes in the output.
* tests/join.at: Likewise.
* tests/set.at: Likewise.
* tests/locus-bind.at: New testcase.
* tests/locus-git.at: New testcase.
* tests/locus-meta1.at: New testcase.
* tests/locus00.at: New testcase.
* tests/locus01.at: New testcase.
* tests/locus02.at: New testcase.
* tests/path-locus.at: New testcase.
|
|
* src/bind-lex.l: Fix unquoted string rule.
* src/grecs-lex.l: Likewise.
* tests/bind00.at: Update.
* tests/grecs00.at: New testcase.
* tests/Makefile.am: Add new testcases.
* tests/testsuite.at: Likewise.
* tests/gcffmt.c (main): New options -x and -X.
|
|
* src/bind-lex.l: Fix comment starter rule to take precedence
over the identifier rule.
* tests/bind00.at: New testcase.
* tests/Makefile.am: Add new testcase.
* tests/testsuite.at: Likewise.
|
|
* src/bind-lex.l: Parse #line directives.
(_pop_context): Use fclose or pclose, depending on how
the stream was opened.
(grecs_bind_new_source): Use preprocessor if grecs_preprocessor
was set.
* src/grecs-lex.l (parse_line): Rename to grecs_parse_line_directive.
(parse_line_cpp): Rename to grecs_parse_line_directive_cpp.
* src/grecs.h (grecs_parse_line_directive)
(grecs_parse_line_directive_cpp): New protos.
* src/lookup.c (grecs_match_first): Bugfix.
|
|
|
|
* src/bind-gram.y: Special handling for the controls block.
* src/bind-lex.l: Handle "controls" separately.
* src/lookup.c (grecs_find_node): Handle single dot path
(root node).
(grecs_match_first): Likewise.
(grecs_match_next): Return NULL if buf is NULL.
* tests/parser-bind.at: Update.
|
|
* Makefile.am: Fix format to git log.
* src/bind-lex.l (grecs_bind_close_sources): Reset input_stack to 0.
* src/lookup.c (split_cfg_path): Allow only one of "./:;,^~" at
the beginning of a path.
|
|
* README.submodule: Update URL.
* src/bind-lex.l (grecs_bind_new_source): Scan include path.
* src/grecs.h (grecs_find_include_file): new proto.
* src/preproc.c (try_file): Rename to grecs_find_include_file. Change
signature and return type. All uses updated.
* tests/Makefile.am (EXTRA_DIST): Add new configs.
(TESTSUITE_AT): Add parser-bind.at.
* tests/gcffmt.c: Add -I (-include) option.
* tests/testsuite.at: Include parser-bind.at.
* tests/bind.conf: New file.
* tests/bind.dlz: New file.
* tests/bind.ext.conf: New file.
* tests/bind.int.conf: New file.
* tests/bind.keys: New file.
* tests/parser-bind.at: New file.
|
|
* 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.
|