Commit graph

83 commits

Author SHA1 Message Date
River Tarnell 423b3d5cdd update 2008-08-17 19:01:24 +00:00
River Tarnell f8ed2d3b0e remove extraneous typename 2008-08-17 18:18:52 +00:00
River Tarnell 87871016a6 add missing file 2008-08-17 18:18:37 +00:00
River Tarnell 5e073fa2be move include files to include/ 2008-08-13 17:40:09 +00:00
River Tarnell 6ba4846e05 need type_name here too 2008-08-13 17:16:22 +00:00
River Tarnell 0834126abc provide nicer type names in error messages 2008-08-13 16:42:18 +00:00
River Tarnell 136d65bb51 add 'if <expr> then <iftrue> else <iffalse> end' as an alternative syntax to expr ? iftrue : iffalse 2008-08-12 16:40:51 +00:00
River Tarnell 4930f1121d don't use pool_allocator 2008-08-12 15:19:38 +00:00
River Tarnell dac72d2d9a - untemplatise parser and ast, force Unicode (UChar32) only
- set an svn:ignore
2008-08-12 14:02:33 +00:00
River Tarnell 4f6c4d886e - parser: support singular for time units as well as plural
- visitors: remove commented code
2008-08-12 12:17:56 +00:00
River Tarnell d4d3f27224 rewrote most of visitors.h, and split functors into functors.h. this implementation uses a metaprogram to determine valid operators at compile time, instead of requiring every exception to be specified seperately. 2008-08-12 12:11:31 +00:00
River Tarnell 4a4e3166cd initial support for dates and intervals 2008-08-11 22:09:34 +00:00
River Tarnell d6d13734ec add note that gmp is required 2008-08-11 01:03:51 +00:00
River Tarnell 41afd40801 change from double/float to GMP arbitrary precision types. as well as increased range, this means '1.3 + 20' no longer evaluates to '21.300000000000001' 2008-08-11 01:01:05 +00:00
River Tarnell 646ffc5a78 - fray::find(fray, size_type) was broken, caused infinite recursion in count()
- advance last_pos in count() by the size of the matched needle
- add tests for all built-in functions
2008-08-10 21:09:54 +00:00
River Tarnell d180cbaa2e re-fix tests on solaris too 2008-08-10 20:49:20 +00:00
River Tarnell f7a75a9852 fix tests on linux/gcc 4.3 2008-08-10 20:48:25 +00:00
River Tarnell aa982fce43 - using leaf_node_t includes the skip parser in the parsed token, causing expressions like (1 == ONE) to fail. use reduced_node_t instead
- add regression test framework and some basic tests
2008-08-10 20:38:52 +00:00
River Tarnell dc744d0299 trailing whitespace on expr should not be an error 2008-08-10 16:12:33 +00:00
River Tarnell 081b3524db add README. note that Boost < 1.35 won't work.
fix xml tool.
2008-08-10 16:02:35 +00:00
River Tarnell 63c4ef9830 cleanups 2008-08-10 15:36:48 +00:00
River Tarnell dc5e0e67ff fix match() prototypes for gcc 4.3.1 2008-08-10 15:19:24 +00:00
River Tarnell 10e89fda5c improved string literal parser. now \xHH works as expected (only matches two digits), and \uHHHH, \UHHHHHHHH are supported (16/32-bit Unicode characters) 2008-08-10 12:53:21 +00:00
River Tarnell 6ad335fbe9 cleanup: move ast_evaluator into its own module, move expr functions from parser to affunctions 2008-08-10 04:21:28 +00:00
River Tarnell bbf1737cc2 - convert parser to AST. while this is slower than the previous implementation, it's clearer, and more correct (lazy evaluation is supported)
- to compensate for the slower parser, optimised it a little
- change basic_string to fray, a refcounted immutable string
- add 'xml' tool, prints the parser tree in XML
2008-08-10 03:52:17 +00:00
River Tarnell 365234b95f - add 'evaluate' tool, evaluates a filter on the command line
- remove filter_evaluator.cpp, no longer used
2008-08-09 16:44:54 +00:00
River Tarnell 691b88b9b1 convert check to u32filter_evaluator, and use "" quotes instead of '' quotes 2008-08-09 16:38:39 +00:00
River Tarnell 337d39f713 - remove utf8.{cpp,h} which are no longer used
- convert request (and syntax_check) to use u32expressor
2008-08-09 16:34:34 +00:00
River Tarnell 4eda47daab add 'expr' tool 2008-08-09 16:22:21 +00:00
River Tarnell 5037acbd0d Unicode conversion: full Unicode support for parser, and 'expr' tool
add UTF-8/UTF-32 conversion functions for input/output
2008-08-09 16:18:04 +00:00
River Tarnell 04554a30de Unicode conversion: affunctions and filter_evaluator should be templated on character type 2008-08-09 15:07:07 +00:00
River Tarnell df6341487c Unicode conversion, phase 2: parser should be templated on char type 2008-08-09 14:34:17 +00:00
River Tarnell eb5586854e Unicode conversion, phase1: datum should be templated on char type.
added basic_datum<charT>, with typedefs datum and u32datum
2008-08-09 13:37:58 +00:00
River Tarnell dbc2da3177 remove cast / ctors for basic types from aftypes, too prone to error.
(side effect: time for the test case goes from 6:14 to 5:26)
2008-08-09 12:14:08 +00:00
River Tarnell a2ae14f3bb better checking for correct # of arguments 2008-08-09 11:16:45 +00:00
River Tarnell d3ce6a5973 support string escapes: \b \t \n \f \r \\ \" \' \xHH \OOO 2008-08-09 10:33:02 +00:00
River Tarnell d2e95116f0 - match value before variable, otherwise FFFF is matched as a variable and a parse error occurs
- support uppercase X, O, B for base indicators
2008-08-09 09:59:40 +00:00
River Tarnell d94fd3860b support hex (10x), oct (10o) and binary (10b) literals 2008-08-09 09:32:19 +00:00
River Tarnell 7bf795588e implement unary - + operators 2008-08-09 09:16:04 +00:00
River Tarnell 305efb0961 - implement 'rlike' and 'regex' operators
- copyright header for all files
2008-08-08 12:35:13 +00:00
River Tarnell 90afa30066 implement "a like b" operator (and alias "a matches b"). pattern matching code taken from NetBSD src/lib/libc/gen/fnmatch.c 2008-08-08 12:13:03 +00:00
River Tarnell 0042e5d4f5 add aliases: a = b (a == b); a /= b (a != b); a contains b (b in a) 2008-08-08 11:54:11 +00:00
River Tarnell 3501eac719 add built-in cast functions int(), float() and string() 2008-08-08 11:48:12 +00:00
River Tarnell 2da745687c when either operand of datum's operator+ is a string, treat the operation as a string concatenation instead of arith 2008-08-08 11:35:13 +00:00
River Tarnell 66b0cb4159 document the datum type 2008-08-08 10:53:46 +00:00
River Tarnell f278237aa7 define by default 'true' and 'false' variables 2008-08-08 10:39:23 +00:00
River Tarnell 52791b24f8 - document the parser some
- make pow_expr a seperate rule with higher precedence than mult_expr
- rename eq_expr/eq2_expr to ord_expr/eq_expr
- match strict_real_p instead of real_p, otherwise '1 / 2' is 0.5 instead of 0
2008-08-08 10:36:17 +00:00
River Tarnell 27a7e25d61 need to qualify std::pow() to avoid infinite recursion 2008-08-08 10:16:27 +00:00
Andrew Garrett af1cbfb759 Abuse Filter:
* Add power operator.
* Add filter builder (very simple, just a drop-down box with commonly-used constructs)
2008-08-08 09:37:05 +00:00
River Tarnell 984386e8c4 refactor 2008-08-08 07:25:10 +00:00