]> granicus.if.org Git - re2c/log
re2c
5 years agoAdded option --location-format <gnu | msvc> (default is gnu).
Ulya Trofimovich [Wed, 13 Feb 2019 13:50:00 +0000 (13:50 +0000)]
Added option --location-format <gnu | msvc> (default is gnu).

This option controls the formatting of locations in error messages
and warnings.

With --location-format gnu:

    filename:line:column: ...

With --location-format msvc:

    filename(line,column): ...

5 years agoMoved files.
Ulya Trofimovich [Wed, 13 Feb 2019 07:23:27 +0000 (07:23 +0000)]
Moved files.

5 years agoDeduplicated filename strings in locations by interning them in a table and using...
Ulya Trofimovich [Tue, 12 Feb 2019 22:53:54 +0000 (22:53 +0000)]
Deduplicated filename strings in locations by interning them in a table and using indices.

5 years agoUnified location handling by grouping relevant information in a struct.
Ulya Trofimovich [Tue, 12 Feb 2019 17:31:25 +0000 (17:31 +0000)]
Unified location handling by grouping relevant information in a struct.

Massive test updates are caused by refined locations for various error
messages and warnings (re2c now reports not only line, but also column).

5 years agoAdded test for EOF rule.
Ulya Trofimovich [Mon, 11 Feb 2019 21:43:52 +0000 (21:43 +0000)]
Added test for EOF rule.

5 years agoUse GNU-style location format 'file:line:column: ...' in warnings and error messages.
Ulya Trofimovich [Mon, 11 Feb 2019 13:11:47 +0000 (13:11 +0000)]
Use GNU-style location format 'file:line:column: ...' in warnings and error messages.

5 years agoAdded build script that uses '-D_GLIBCXX_DEBUG -D_GLIBCXX_DEBUG_PEDANTIC'.
Ulya Trofimovich [Sat, 9 Feb 2019 18:18:48 +0000 (18:18 +0000)]
Added build script that uses '-D_GLIBCXX_DEBUG -D_GLIBCXX_DEBUG_PEDANTIC'.

5 years agoFixed out of bounds read when sorting one-element initial closure.
Ulya Trofimovich [Sat, 9 Feb 2019 17:54:25 +0000 (17:54 +0000)]
Fixed out of bounds read when sorting one-element initial closure.

The error only occurred on some libc implementations, e.g. on debug
glibc (options -D_GLIBCXX_DEBUG -D_GLIBCXX_DEBUG_PEDANTIC).

5 years agoFixed use of invalidated iterator after erase on std::map.
Ulya Trofimovich [Fri, 8 Feb 2019 23:15:21 +0000 (23:15 +0000)]
Fixed use of invalidated iterator after erase on std::map.

Problem reported by Denis Naumov.

5 years agoUse per-tag cache of history comparisons to avoid repeated computation.
Ulya Trofimovich [Fri, 8 Feb 2019 16:40:47 +0000 (16:40 +0000)]
Use per-tag cache of history comparisons to avoid repeated computation.

5 years agoUse counting sort for tag histories (the number tags is limited, so it is faster).
Ulya Trofimovich [Fri, 8 Feb 2019 16:08:58 +0000 (16:08 +0000)]
Use counting sort for tag histories (the number tags is limited, so it is faster).

5 years agoUse insertion sort instead of bubble sort (it is slightly faster).
Ulya Trofimovich [Fri, 8 Feb 2019 15:25:54 +0000 (15:25 +0000)]
Use insertion sort instead of bubble sort (it is slightly faster).

5 years agoFixed typo.
Ulya Trofimovich [Fri, 8 Feb 2019 13:58:43 +0000 (13:58 +0000)]
Fixed typo.

5 years agoSpeedup in determinization (using a more efficient way to compare lookahead tags).
Ulya Trofimovich [Fri, 8 Feb 2019 10:59:58 +0000 (10:59 +0000)]
Speedup in determinization (using a more efficient way to compare lookahead tags).

5 years agoYet another speedup in determinization (early exit when comparing history with itself).
Ulya Trofimovich [Thu, 7 Feb 2019 22:40:18 +0000 (22:40 +0000)]
Yet another speedup in determinization (early exit when comparing history with itself).

5 years agoSmall speedup in determinization (by inlining small hot functions).
Ulya Trofimovich [Thu, 7 Feb 2019 22:06:40 +0000 (22:06 +0000)]
Small speedup in determinization (by inlining small hot functions).

5 years agoSmall speedup in determinization by delaying computation of costly conditions.
Ulya Trofimovich [Thu, 7 Feb 2019 21:41:18 +0000 (21:41 +0000)]
Small speedup in determinization by delaying computation of costly conditions.

5 years agolibre2c: added comment.
Ulya Trofimovich [Thu, 7 Feb 2019 11:31:47 +0000 (11:31 +0000)]
libre2c: added comment.

5 years agolibre2c: speedup of POSIX NFA matcher by lazy computation and caching of precedence.
Ulya Trofimovich [Thu, 7 Feb 2019 10:50:35 +0000 (10:50 +0000)]
libre2c: speedup of POSIX NFA matcher by lazy computation and caching of precedence.

A lot of the match time was taken by eagerly computing precedence values
on each step for each pair of closure states. Most of these values are not
needed: RE may be unambigous; or the given input string may be unambigous,
even if there is ambiguity, it may take only a few comparisons to resolve.
All the rest is wasted effort.

We can avoid it by delaying precedence computation until necessary, and
then unwinding all the steps backwards, computing precedence for each step
and caching the computed values (so that the same pair of histories is not
compared twice). It is still the same incremental comparison as with
precedence matrices: we compare step by step, going from the fork frame to
the join frame. The result of comparison on each step is folded to a triple
of numbers and recorded in cache. It is important that we do record each
step, not just the first step, because the next pair of ambiguous histories
may unwind to the same pair of prefixes that was compared before.

For all this to work, it is necessary that we can store all history until
the very end, because at any step we might need to unwind an arbitrary
number of steps back. We also need to address individual subhistories
efficiently in order to use them as keys in the cache. All this is achieved
by storing history in the form of a trie and addressing individual
histories by indices in the trie. We also use trie to compute the resulting
tag values (instead of storing tags in registers at each step).

5 years agolibre2c: small performance improvement in POSIX TNFA matcher.
Ulya Trofimovich [Tue, 5 Feb 2019 17:21:48 +0000 (17:21 +0000)]
libre2c: small performance improvement in POSIX TNFA matcher.

5 years agolibre2c: extracted common parts of TNFA matchers (leftmost and POSIX).
Ulya Trofimovich [Tue, 5 Feb 2019 15:47:01 +0000 (15:47 +0000)]
libre2c: extracted common parts of TNFA matchers (leftmost and POSIX).

5 years agolibre2c: performance optimization: get all tag values in one scan of history.
Ulya Trofimovich [Tue, 5 Feb 2019 14:57:42 +0000 (14:57 +0000)]
libre2c: performance optimization: get all tag values in one scan of history.

5 years agoRenamed libre2c_posix -> libre2c (as it now also supports leftmost greedy semantics).
Ulya Trofimovich [Tue, 5 Feb 2019 13:33:04 +0000 (13:33 +0000)]
Renamed libre2c_posix -> libre2c (as it now also supports leftmost greedy semantics).

5 years agoDifferentiate between "POSIX syntax" and "POSIX semantics" options.
Ulya Trofimovich [Tue, 5 Feb 2019 13:10:56 +0000 (13:10 +0000)]
Differentiate between "POSIX syntax" and "POSIX semantics" options.

This is needed because we may want to use POSIX syntax with leftmost
greedy disambiguation. In that case, we still need parentheses-as-tags
attitude, but we don't want all the overhead and heuristics to spped
up POSIX closure.

libre2c_posix: added test for leftmost TNFA matcher.

5 years agolibre2c_posix: added TNFA matcher with leftmost greedy disambiguation semantics.
Ulya Trofimovich [Tue, 5 Feb 2019 11:05:51 +0000 (11:05 +0000)]
libre2c_posix: added TNFA matcher with leftmost greedy disambiguation semantics.

5 years agolibre2c_posix: small performance improvement in NFA-based matcher.
Ulya Trofimovich [Sat, 2 Feb 2019 19:08:45 +0000 (19:08 +0000)]
libre2c_posix: small performance improvement in NFA-based matcher.

5 years agolibre2c_posix: added NFA-based matcher.
Ulya Trofimovich [Sat, 2 Feb 2019 18:16:32 +0000 (18:16 +0000)]
libre2c_posix: added NFA-based matcher.

5 years agoConstified function parameter.
Ulya Trofimovich [Sat, 2 Feb 2019 18:12:18 +0000 (18:12 +0000)]
Constified function parameter.

5 years agolibre2c_posix: another small improvement in regexec() implementation.
Ulya Trofimovich [Sun, 27 Jan 2019 22:57:25 +0000 (22:57 +0000)]
libre2c_posix: another small improvement in regexec() implementation.

5 years agolibre2c_posix: a small performance improvement in regexec() implementation.
Ulya Trofimovich [Sun, 27 Jan 2019 18:05:23 +0000 (18:05 +0000)]
libre2c_posix: a small performance improvement in regexec() implementation.

5 years agolibre2c_posix: regex_t definition must be exposed to users.
Ulya Trofimovich [Sun, 27 Jan 2019 17:45:37 +0000 (17:45 +0000)]
libre2c_posix: regex_t definition must be exposed to users.

POSIX standard says that:

    The regex_t structure is defined in <regex.h> and contains at
    least the following member: re_nsub (number of parenthesized
    subexpressions).

5 years agolibre2c_posix: enable tag optimizations.
Ulya Trofimovich [Sun, 27 Jan 2019 11:35:18 +0000 (11:35 +0000)]
libre2c_posix: enable tag optimizations.

5 years agolibre2c_posix: extended regex_t structure to hold more submatch data.
Ulya Trofimovich [Sun, 27 Jan 2019 10:23:23 +0000 (10:23 +0000)]
libre2c_posix: extended regex_t structure to hold more submatch data.

Added fields:
    - re_nsub: total number of submatch groups, required by POSIX standard

    - pmatch: buffer for submatch results, usually supplied by the user to
      regexec(), but we allow to do the allocation and storage in regex_t.
      This is convenient for users that have hard time managing memory, e.g.
      java bindings to libre2c_posix.

    - regs: buffer for internal use by regexec(), strored in regex_t to
      avoid repeated memory allocation on each call to regexec() with the
      same regex.

5 years agoAdjusted build system to correctly build DLLs for windows.
Ulya Trofimovich [Sun, 27 Jan 2019 10:06:22 +0000 (10:06 +0000)]
Adjusted build system to correctly build DLLs for windows.

Adjustments:
    - configure.ac:  pass win32-dll option to LT_INIT

    - Makefile_libre2c_posix.am: use -no-undefined in LDFLAGS

    - use slibtool: https://github.com/midipix-project/slibtool for windows
      builds The problem with libtool is that it doesn't allow to link libstdc++
      and libgcc statically, which is necessary to build portable DLLs with
      Mingw. Libtool adds -nostdlib option to LDFLAGS and links some predefined
      objects that pull in dependency on dynamic libstdc++ and libgcc, even in
      the presence of -static-libstdc++ -static-libgcc.

5 years agoUse libtool to build libraries.
Ulya Trofimovich [Sat, 19 Jan 2019 11:57:16 +0000 (11:57 +0000)]
Use libtool to build libraries.

5 years agoFixed operator precedence with --flex-syntax option.
Ulya Trofimovich [Thu, 17 Jan 2019 22:52:04 +0000 (22:52 +0000)]
Fixed operator precedence with --flex-syntax option.

Operator precedence was broken because re2c tried to parse whole strings
of characters at once instead of parsing one character at a time (in
much the same way as it would parse properly quotes string literals in
the original re2c format). This caused ab* being parsed as (ab)*, which
is clearly wrong (should be a(b)*).

This fixes bug #242:
    "Operator precedence with --flex-syntax is broken."

5 years agolibre2c_posix: handle empty group () in parser; added more tests.
Ulya Trofimovich [Wed, 16 Jan 2019 21:49:38 +0000 (21:49 +0000)]
libre2c_posix: handle empty group () in parser; added more tests.

5 years agoMake re2c:eof usable with push-model lexers (-f, --storable-state option).
Ulya Trofimovich [Tue, 15 Jan 2019 23:45:53 +0000 (23:45 +0000)]
Make re2c:eof usable with push-model lexers (-f, --storable-state option).

5 years agolibre2c_posix: parse repetition counters in the lexer.
Ulya Trofimovich [Tue, 15 Jan 2019 00:24:22 +0000 (00:24 +0000)]
libre2c_posix: parse repetition counters in the lexer.

5 years agolibre2c_posix: initial support for character classes in parser.
Ulya Trofimovich [Mon, 14 Jan 2019 23:04:23 +0000 (23:04 +0000)]
libre2c_posix: initial support for character classes in parser.

5 years agolibre2c_posix (test): clear error status on expected failures.
Ulya Trofimovich [Sun, 13 Jan 2019 11:11:45 +0000 (11:11 +0000)]
libre2c_posix (test): clear error status on expected failures.

5 years agolibre2c_posix: skip fictive tags in regexec(); handle dot in parser; added more tests.
Ulya Trofimovich [Sun, 13 Jan 2019 10:57:53 +0000 (10:57 +0000)]
libre2c_posix: skip fictive tags in regexec(); handle dot in parser; added more tests.

5 years agolibre2c_posix: use C-array initializers instead of variadic functions for offset...
Ulya Trofimovich [Sat, 12 Jan 2019 20:32:15 +0000 (20:32 +0000)]
libre2c_posix: use C-array initializers instead of variadic functions for offset lists.

Variadic functions cause subtle toolchain-specific errors because integer
literals used to initialize offsets may have different type than the type
expected by variadic function (e.g. int vs long).

5 years agolibre2c_posix (test): a more concise error message.
Ulya Trofimovich [Sat, 12 Jan 2019 14:42:24 +0000 (14:42 +0000)]
libre2c_posix (test): a more concise error message.

5 years agolibre2c_posix: fixed -Wmaybe-uninitialized GCC warning.
Ulya Trofimovich [Sat, 12 Jan 2019 14:19:21 +0000 (14:19 +0000)]
libre2c_posix: fixed -Wmaybe-uninitialized GCC warning.

5 years agolibre2c_posix: fixed memleaks.
Ulya Trofimovich [Sat, 12 Jan 2019 14:18:21 +0000 (14:18 +0000)]
libre2c_posix: fixed memleaks.

5 years agoExperimental: initial implementation of libre2c_posix, POSIX regexp library based...
Ulya Trofimovich [Sat, 12 Jan 2019 12:50:47 +0000 (12:50 +0000)]
Experimental: initial implementation of libre2c_posix, POSIX regexp library based on re2c.

5 years agoPaper: don't forget to pass precedence matrices to initial closure.
Ulya Trofimovich [Fri, 11 Jan 2019 08:16:00 +0000 (08:16 +0000)]
Paper: don't forget to pass precedence matrices to initial closure.

5 years agoMakefile.am: further simplify parser generation rules and avoid copying file to itself.
Ulya Trofimovich [Fri, 11 Jan 2019 00:34:07 +0000 (00:34 +0000)]
Makefile.am: further simplify parser generation rules and avoid copying file to itself.

5 years agoMakefile.am: don't forget to run main test suite on `make check`.
Ulya Trofimovich [Fri, 11 Jan 2019 00:19:01 +0000 (00:19 +0000)]
Makefile.am: don't forget to run main test suite on `make check`.

5 years agoMakefile.am: use more universal rules for autogenerated lexers and parsers.
Ulya Trofimovich [Thu, 10 Jan 2019 23:28:30 +0000 (23:28 +0000)]
Makefile.am: use more universal rules for autogenerated lexers and parsers.

5 years agoAvoid unexpected removal of untracked files and directories.
Ulya Trofimovich [Thu, 10 Jan 2019 22:16:07 +0000 (22:16 +0000)]
Avoid unexpected removal of untracked files and directories.

5 years agoMoved function declarations to the header they belong in.
Ulya Trofimovich [Thu, 10 Jan 2019 22:09:25 +0000 (22:09 +0000)]
Moved function declarations to the header they belong in.

5 years agoUpdated range test.
Ulya Trofimovich [Sun, 6 Jan 2019 16:44:45 +0000 (16:44 +0000)]
Updated range test.

5 years agoUse a simple fixed-size slab allocator for ranges.
Ulya Trofimovich [Sun, 6 Jan 2019 16:25:39 +0000 (16:25 +0000)]
Use a simple fixed-size slab allocator for ranges.

5 years agoHandle single chars and 1-char ranges in the same way.
Ulya Trofimovich [Sun, 6 Jan 2019 08:40:16 +0000 (08:40 +0000)]
Handle single chars and 1-char ranges in the same way.

5 years agoUpdated autogenerated files after change of directory layout.
Ulya Trofimovich [Sat, 5 Jan 2019 22:53:45 +0000 (22:53 +0000)]
Updated autogenerated files after change of directory layout.

5 years agoMoved duplicated code into a separate function.
Ulya Trofimovich [Sat, 5 Jan 2019 22:49:52 +0000 (22:49 +0000)]
Moved duplicated code into a separate function.

5 years agoChanged directory layout (cosmetic).
Ulya Trofimovich [Sat, 5 Jan 2019 22:41:45 +0000 (22:41 +0000)]
Changed directory layout (cosmetic).

5 years agoHandle EBCDIC like other encodings instead of coupling it with character validation.
Ulya Trofimovich [Sat, 5 Jan 2019 13:16:36 +0000 (13:16 +0000)]
Handle EBCDIC like other encodings instead of coupling it with character validation.

5 years agoMoved repeated code into a separate function.
Ulya Trofimovich [Sat, 5 Jan 2019 11:42:29 +0000 (11:42 +0000)]
Moved repeated code into a separate function.

5 years agoFixed error in range difference with EBCDIC, added tests for various encodings.
Ulya Trofimovich [Fri, 4 Jan 2019 20:59:25 +0000 (20:59 +0000)]
Fixed error in range difference with EBCDIC, added tests for various encodings.

5 years agoCompute range difference before applying encoding expansion to operands.
Ulya Trofimovich [Fri, 4 Jan 2019 10:53:22 +0000 (10:53 +0000)]
Compute range difference before applying encoding expansion to operands.

5 years agoAdded test for bug #238.
Ulya Trofimovich [Fri, 4 Jan 2019 19:27:58 +0000 (19:27 +0000)]
Added test for bug #238.

5 years agoFixed out-of-bounds write caused by misuse of slab allocator in case of large allocat...
Ulya Trofimovich [Fri, 4 Jan 2019 12:54:03 +0000 (12:54 +0000)]
Fixed out-of-bounds write caused by misuse of slab allocator in case of large allocation size.

This fixes bug #238.
Found by american fuzzy lop (thanks to Henri Salo).

5 years agoAdjusting formatting, dropping old macros (cosmetic).
Ulya Trofimovich [Thu, 3 Jan 2019 22:56:34 +0000 (22:56 +0000)]
Adjusting formatting, dropping old macros (cosmetic).

5 years agoAdded tests for debug options.
Ulya Trofimovich [Thu, 3 Jan 2019 22:37:54 +0000 (22:37 +0000)]
Added tests for debug options.

5 years agoAdded debug options --dump-cfg and --dump-interf.
Ulya Trofimovich [Thu, 3 Jan 2019 21:58:53 +0000 (21:58 +0000)]
Added debug options --dump-cfg and --dump-interf.

5 years agoMoved debug stuff to a separate subdirectory.
Ulya Trofimovich [Thu, 3 Jan 2019 21:17:22 +0000 (21:17 +0000)]
Moved debug stuff to a separate subdirectory.

5 years agoDisable --dump-* options in non-debug mode.
Ulya Trofimovich [Thu, 3 Jan 2019 20:26:36 +0000 (20:26 +0000)]
Disable --dump-* options in non-debug mode.

5 years agoAdding --enable-debug to Travis CI configuration.
Ulya Trofimovich [Thu, 3 Jan 2019 11:33:04 +0000 (11:33 +0000)]
Adding --enable-debug to Travis CI configuration.

5 years agoAdded some tests for GTOP closure algorithm.
Ulya Trofimovich [Thu, 3 Jan 2019 11:26:51 +0000 (11:26 +0000)]
Added some tests for GTOP closure algorithm.

5 years agoAdded test comparing POSIX closure statistics with GOR1 and GTOP.
Ulya Trofimovich [Thu, 3 Jan 2019 11:13:15 +0000 (11:13 +0000)]
Added test comparing POSIX closure statistics with GOR1 and GTOP.

5 years agoIn debug build, add " (debug)" to version string.
Ulya Trofimovich [Thu, 3 Jan 2019 10:44:24 +0000 (10:44 +0000)]
In debug build, add " (debug)" to version string.

5 years agoSmall simplifications in GOR1 initialization phase.
Ulya Trofimovich [Thu, 3 Jan 2019 09:53:57 +0000 (09:53 +0000)]
Small simplifications in GOR1 initialization phase.

Instead of using two stacks to weed out low-precedence initial
configurations with duplicate target state, let them remain on the
bottom of topsort stack, which effectively makes them ignored.

5 years agoPaper: simplifying GOR1 initialization pseudocode.
Ulya Trofimovich [Wed, 2 Jan 2019 22:57:51 +0000 (22:57 +0000)]
Paper: simplifying GOR1 initialization pseudocode.

5 years agoSmall cosmetic simplifications in POSIX precedence.
Ulya Trofimovich [Wed, 2 Jan 2019 17:54:11 +0000 (17:54 +0000)]
Small cosmetic simplifications in POSIX precedence.

5 years agoUse a specialized simplified version of POSIX comparison for initial configurations.
Ulya Trofimovich [Wed, 2 Jan 2019 17:43:17 +0000 (17:43 +0000)]
Use a specialized simplified version of POSIX comparison for initial configurations.

5 years agoIntrinsic options that do not have configurations should be immutable.
Ulya Trofimovich [Tue, 1 Jan 2019 13:24:10 +0000 (13:24 +0000)]
Intrinsic options that do not have configurations should be immutable.

5 years agoAdded debug option --dump-closure-stats.
Ulya Trofimovich [Tue, 1 Jan 2019 13:13:14 +0000 (13:13 +0000)]
Added debug option --dump-closure-stats.

5 years agoAdjust TNFA construction for bounded repetition to the needs of GOR1.
Ulya Trofimovich [Mon, 31 Dec 2018 20:55:01 +0000 (20:55 +0000)]
Adjust TNFA construction for bounded repetition to the needs of GOR1.

5 years agoOrder initial configurations by POSIX precedence in GOR1.
Ulya Trofimovich [Mon, 31 Dec 2018 12:52:43 +0000 (12:52 +0000)]
Order initial configurations by POSIX precedence in GOR1.

5 years agoAdded option --posix-closure <gor1|gtop>. Removed configurations for internal options.
Ulya Trofimovich [Mon, 31 Dec 2018 12:37:12 +0000 (12:37 +0000)]
Added option --posix-closure <gor1|gtop>. Removed configurations for internal options.

5 years agoAdded GTOP SSSP algorithm for computing epsilon-closure with POSIX disambiguation.
Ulya Trofimovich [Mon, 31 Dec 2018 12:08:42 +0000 (12:08 +0000)]
Added GTOP SSSP algorithm for computing epsilon-closure with POSIX disambiguation.

GTOP SSSP meand "Global Topsort Single Source Shortes Path".

It is well known that SSSP can be solved in linear time on DAGs (directed
acyclic graphs) by exploring graph nodes in topological order. In our case
TNFA is not a DAG (it may have cycles), but it is possible to compute fake
topologcal order by ignoring back edges.

The algorithm works by having a priority queue of nodes, where priorities
are indices of nodes in fake topological ordering. At each step, the node
with the minimal priority is popped from queue and explored. All nodes
reachable from it on admissible arcs are enqueued, unless they are already
on queue.

The resulting algorithm is of course not optimal: it can get stuck on
graphs with loops, because it will give priority to some of the loop nodes
compared to others for no good reason.

However the algorithm is simple and optimal for DAGs, therefore we keep it.

5 years agorun_tests.sh: cleanup .inc files.
Ulya Trofimovich [Mon, 31 Dec 2018 10:57:47 +0000 (10:57 +0000)]
run_tests.sh: cleanup .inc files.

5 years agoConverting tabs to spaces (cosmetic).
Ulya Trofimovich [Sun, 30 Dec 2018 23:35:29 +0000 (23:35 +0000)]
Converting tabs to spaces (cosmetic).

5 years agoEh, some of the asserts were doing useful work and affecting control flow.
Ulya Trofimovich [Sun, 30 Dec 2018 23:30:28 +0000 (23:30 +0000)]
Eh, some of the asserts were doing useful work and affecting control flow.

5 years agoAdded assert wrapper that is turned on/off with --enable-debug configure option.
Ulya Trofimovich [Sun, 30 Dec 2018 19:53:46 +0000 (19:53 +0000)]
Added assert wrapper that is turned on/off with --enable-debug configure option.

5 years agoFixed errors in packing of signed integers.
Ulya Trofimovich [Sun, 30 Dec 2018 17:21:39 +0000 (17:21 +0000)]
Fixed errors in packing of signed integers.

5 years agoReduce boilerplate in option parser with a few macros.
Ulya Trofimovich [Sun, 30 Dec 2018 11:42:38 +0000 (11:42 +0000)]
Reduce boilerplate in option parser with a few macros.

5 years agoUse a couple of helper functions to make string construction easier.
Ulya Trofimovich [Sun, 30 Dec 2018 10:59:28 +0000 (10:59 +0000)]
Use a couple of helper functions to make string construction easier.

5 years agoCorrectly parse -I option with or without space before the argument.
Ulya Trofimovich [Sun, 30 Dec 2018 10:30:19 +0000 (10:30 +0000)]
Correctly parse -I option with or without space before the argument.

5 years agorun_tests.sh: use paths relative to build directory, not to source directory.
Ulya Trofimovich [Sat, 29 Dec 2018 21:40:08 +0000 (21:40 +0000)]
run_tests.sh: use paths relative to build directory, not to source directory.

Otherwise test results aren't reproducible: they depend on the
location of build directory relative to source directory.

5 years agoAdding forgotten files to git.
Ulya Trofimovich [Sat, 29 Dec 2018 14:24:32 +0000 (14:24 +0000)]
Adding forgotten files to git.

5 years agoMore tests for include directive.
Ulya Trofimovich [Sat, 29 Dec 2018 14:17:31 +0000 (14:17 +0000)]
More tests for include directive.

5 years agoResolve names of included files relative to including file, not to the main file.
Ulya Trofimovich [Sat, 29 Dec 2018 00:16:53 +0000 (00:16 +0000)]
Resolve names of included files relative to including file, not to the main file.

5 years agoUse correct order when unreading files from lexer buffer.
Ulya Trofimovich [Sat, 29 Dec 2018 00:06:28 +0000 (00:06 +0000)]
Use correct order when unreading files from lexer buffer.

In lexer buffer nested files come before outer files. In lexer file
stack, however, outer files go before nested files (nested are at the
top). We want to break from the unreading cycle early, therefore we
proceed in reverse order of file offsets in buffer and break as soon
as the end offset is less than cursor (current position).

5 years agoSimplified lexing of include directive.
Ulya Trofimovich [Thu, 27 Dec 2018 22:49:25 +0000 (22:49 +0000)]
Simplified lexing of include directive.

5 years agoTweaking a couple of labels in lexer to simplify updating of token pointer.
Ulya Trofimovich [Thu, 27 Dec 2018 22:38:59 +0000 (22:38 +0000)]
Tweaking a couple of labels in lexer to simplify updating of token pointer.

5 years agoRemoved unused struct field.
Ulya Trofimovich [Thu, 27 Dec 2018 22:17:52 +0000 (22:17 +0000)]
Removed unused struct field.