summaryrefslogtreecommitdiffstats
Commit message (Collapse)AuthorAgeFilesLines
* * txr.1: Fix accidental .b, which should have been .B.Kaz Kylheku2010-01-142-9/+127
| | | | | | Revised description of regex operators. Added section on intersection and complement, which may not be familiar to regex users.
* * regex.c (reg_derivative): Bugfix: remove invalidKaz Kylheku2010-01-142-9/+6
| | | | algebraic reductions in the derivative for the operator.
* Bugfix: allow unescaped / to be used in regex character classes.Kaz Kylheku2010-01-134-7/+36
|
* * parser.y (precedence): bugfix: character classes like this [^*]Kaz Kylheku2010-01-132-1/+7
| | | | being treated as a non-complemented set of two characters.
* Dynamically determine which regex implementation to use:Kaz Kylheku2010-01-133-2/+51
| | | | | | | NFA or derivatives. The default behavior is NFA, with derivatives used if the regular expression contains uses of complement or intersection. The --dv-regex option forces derivatives always.
* * lib.h (c_num): Remove redundant declaration.Kaz Kylheku2010-01-132-2/+5
|
* Impelement derivative-based regular expressions.Kaz Kylheku2010-01-139-282/+627
|
* Remove incorrect implementation of extendedKaz Kylheku2010-01-062-273/+50
| | | | | regex operations (complement, intersection). The syntax extensions documentation are retained.
* Some fine tuning in regex grammar.Kaz Kylheku2010-01-062-2/+14
|
* Merge branch 'master' of ssh://git.sv.gnu.org/srv/git/txrKaz Kylheku2010-01-053-13/+24
|\ | | | | | | | | Conflicts: ChangeLog
| * * lib.c (make_package, find_package): Eliminate declarationKaz Kylheku2009-12-173-13/+24
| | | | | | | | | | | | | | | | in the middle of statement block. * lib.h (TAG_MASK): Becomes type cnum rather than long. (nao): Based off 1 rather than -1 to avoid left shift of negative number.
* | Implemented the regular expression ~ and & operators.Kaz Kylheku2010-01-057-51/+372
|/ | | | | | | | | | | | | | | This turns out to be easy to do in NFA land. The complement of an NFA has exactly the same number and configuration of states and transitions, except that the states have an inverted meaning; and furthermore, failed character transitions are routed to an extra state (which in this impelmentation is permanently allocated and shared by all regexes). The regex & is implemented trivially using DeMorgan's. Also, bugfix: regular expressions like A|B|C are allowed now by the syntax, rather than constituting syntax error. Previously, this would have been entered as (A|B)|C.
* Remove unnecessary cast.Kaz Kylheku2009-12-091-1/+1
|
* * parser.l (YYINPUT): Fix signed/unsigned comparison.Kaz Kylheku2009-12-092-2/+7
|
* * hash.c (sethash): New function.Kaz Kylheku2009-12-095-0/+25
| | | | | | | | * hash.h (sethash): Declared. * lib.c (cobj_handle): New function. * lib.h (cobj_handle): Declared.
* All COBJ operations have default implementations now;Kaz Kylheku2009-12-087-43/+95
| | | | | | no null pointer check over struct cobj_ops operations. New typechecking function for COBJ objects.
* More void * to mem_t * conversion.Kaz Kylheku2009-12-054-10/+22
|
* Eliminate the void * disease. Generic pointers are of mem_t *Kaz Kylheku2009-12-047-31/+57
| | | | | from now on, which is compatible with unsigned char *. No implicit conversion to or from this type, in C or C++.
* * gc.c (heap_min_bound, heap_max_bound): New static globals.Kaz Kylheku2009-12-032-0/+21
| | | | | | | (more): Update heap_min_bound and heap_max_bound. (in_heap): Do early rejection tests on the pointer. If it's not aligned, or it's completely outside of the bounding box of the heap area, short circuit to false.
* Version 027.txr-027Kaz Kylheku2009-12-034-3/+20
|
* Merge.Kaz Kylheku2009-12-032-2/+8
|\
| * * parser.l (YY_NO_UNPUT): Removed superfluous #define. This is notKaz Kylheku2009-12-032-2/+8
| | | | | | | | | | | | | | needed because suppressing generation of unput is requested via the %option. In scanners generated by the legacy version of flex, 2.5.4, still widely in use. this redundancy leads to a multiple #define YY_NO_UNPUT and a compiler warning.
* | * Makefile (CFLAGS): Better test for g++, when removingKaz Kylheku2009-12-032-1/+8
|/ | | | | | warning options not appropriate for g++. Sometimes g++ may be called something that dosn't end in g++, like g++4.
* Fix for failing test suite on MIPS machine, due toKaz Kylheku2009-12-032-2/+14
| | | | gc failing to mark a local variable in txr_main.
* * Makefile (tests): Don't depend on the executable. Otherwise,Kaz Kylheku2009-12-022-7/+20
| | | | | | | | | during make install-tests, if it doesn't exist in the install directory, a gcc compile command gets deposited into the run.sh generated script. (install-tests): Fixes to make this work when using a separate build directory. Split the cpio -p job into a cpio -i piping into cpio -o.
* * Makefile (install-tests): New target. Provides a way to make theKaz Kylheku2009-12-022-0/+18
| | | | | test cases part of the installation, and a generated script to run the commands on the installation host.
* Fix annoyances with dependency generation, such as picking up localKaz Kylheku2009-12-024-14/+24
| | | | files that are not in the project.
* * Makefile (CFLAGS): If the compiler matches the pattern %g++,Kaz Kylheku2009-11-282-0/+10
| | | | | then remove some C-front-end-specific warnings from CFLAGS, which the g++ front end will complain about.
* * Makefile (CFLAGS): add -Dlint to CFLAGS when compiling y.tab.o.Kaz Kylheku2009-11-282-0/+11
| | | | | | This suppresses some warnings from a byacc-generated parser, and gets rid of a useless static sccsid array. May help with Bison-generated parser also.
* * parser.l: Use flex options to suppress generation of theKaz Kylheku2009-11-282-0/+8
| | | | | unused functons yyunput and yyinput, thus getting rid of some compiler diagnostics.
* Code cleanup. All private functions static. Private stuffKaz Kylheku2009-11-2814-231/+261
| | | | in regex module not exposed in header. Etc.
* * configure: Workaround in banner code for coreutils printf %.*s bug.Kaz Kylheku2009-11-282-1/+5
|
* Switching to DESTDIR convention for install.Kaz Kylheku2009-11-273-13/+40
| | | | | Make install step does some things more correctly now, without relying on the install program.
* Version 026.txr-026Kaz Kylheku2009-11-264-3/+27
|
* Add comments to generated files.Kaz Kylheku2009-11-261-1/+15
|
* Expand yacc command without quotes.Kaz Kylheku2009-11-261-1/+1
|
* Check for user's specified yacc program.Kaz Kylheku2009-11-261-0/+4
|
* Not all systems have a yacc alias for the yacc program.Kaz Kylheku2009-11-263-8/+89
| | | | | txr is known to work with two yacc implementations: GNU Bison and Berkeley yacc. Let's add some auto-detection for yacc.
* * gc.c (mark_mem_region): Bugfix: do not mess with the valgrindKaz Kylheku2009-11-262-2/+9
| | | | accessibility of the heap object if valgrind debugging is not enabled.
* * parser.y (grammar): Fixes for bison 2.4.1. Remove superfluous actionKaz Kylheku2009-11-262-2/+6
| | | | in chrlit. Include <stdlib.h> for abort.
* Refinements to Valgrind support.Kaz Kylheku2009-11-252-2/+40
|
* More Valgrind support. New option --vg-debug which turns onKaz Kylheku2009-11-254-11/+78
| | | | | Valgrind protection of free blocks. This works independently of --gc-debug.
* Fix a build breakage that may happen on some platforms.Kaz Kylheku2009-11-252-0/+14
| | | | | | | | | The parser.y file includes "utf8.h", which uses the the type wint_t. It also includes "lib.h" which uses "wchar_t". But it fails to include any headers which define these types. The generated y.tab.c picks up wchar_t by the Bison-inserted inclusion of <stdlib.h>, so that's how we got that. But wint_t does not come from any of the headers---if they are standard-conforming.
* Clean up properly.Kaz Kylheku2009-11-251-2/+2
|
* More valgrind integration. Vector objects keep displaced pointersKaz Kylheku2009-11-253-0/+22
| | | | | | | | to vector data; they point to element 0 which is actually the third element of the vector. If an object is only referenced by interior pointers, Valgrind reports it as possibly leaked. This change conditionally adds a pointer to the true start of the vector, if Valgrind support is enabled.
* First stab at Valgrind integration. First goal: eliminate falseKaz Kylheku2009-11-253-11/+71
| | | | positives when gc is accessing uninitialized parts of the stack.
* Fix uninitialized memory locations.Kaz Kylheku2009-11-243-1/+16
|
* Switching to keyword symbols for :args and :nothrow.Kaz Kylheku2009-11-246-29/+50
|
* Whitespace.Kaz Kylheku2009-11-242-3/+3
|
* utf8.c (utf8_from_uc): Fix bug introduced several commits ago (portingtxr-025Kaz Kylheku2009-11-242-0/+8
| | | | to C++). Caught by regression test suite. Found using git bisect.