Stephen Dolan
49cf2e67fe
Recursive functions + bugfix for stack reallocation.
2012-09-17 22:32:06 +01:00
Stephen Dolan
830610cef8
Make "not" a builtin function rather than syntax.
...
Fixes a really awkward grammar issue.
2012-09-17 21:08:43 +01:00
Stephen Dolan
3db27b01a1
First pass at string interpolation.
...
Requires a lexer hack, but a surprisingly un-hideous one. The lexer
maintains a stack of bracket characters so that it can match
parens/brackets/braces to tell where a subexp nested in a string
actually ends.
2012-09-17 20:41:57 +01:00
Stephen Dolan
df195b3187
Add update operators (+=, -=, *=, /= and //=)
2012-09-11 23:55:59 +01:00
Stephen Dolan
062a6aa6d7
More error handling - locations of refs to undefined symbols.
2012-09-11 12:24:54 +01:00
Stephen Dolan
0ce437ea97
More error handling in the parser.
...
Add a special case in the lexer to detect unterminated strings.
Add some error recovery in the parser for more copious error spam.
2012-09-11 10:18:18 +01:00
Stephen Dolan
ac3f8bcc52
Proper error messages from lexer errors (e.g. bad characters).
2012-09-11 09:13:20 +01:00
Stephen Dolan
95dd64b0f0
Much, much better error reporting from the parser.
...
Getting proper locations through flex/bison was more effort than
was advertised.
2012-09-11 00:04:47 +01:00
Stephen Dolan
4d47f8f1e1
'==' operator, tests for equality and operator precedence.
2012-09-10 18:08:00 +01:00
Stephen Dolan
aa3ebdfe9b
Multiplication and division operators.
...
It is an error to use these on anything but numbers. Maybe later
implementing python/ruby-style ("a" * 100) might be handy.
2012-09-10 16:57:17 +01:00
Stephen Dolan
6f3abbac62
Subtraction - as expected for numbers, ruby-style set diff for arrays.
2012-09-10 16:49:25 +01:00
Stephen Dolan
da5d653de8
Add a Boolean "not" operator.
...
Not wholly convinced this is a good idea, maybe "not" should be a
builtin function instead? 'not (.a == .b)' vs. '.a == .b | not'
2012-09-04 20:43:40 +01:00
Stephen Dolan
6e6ea50763
Short-circuiting Boolean "and" and "or" operators.
2012-09-04 20:38:59 +01:00
Stephen Dolan
328c4a13f1
Add "elif" to if-then-else constructs.
2012-09-04 16:05:24 +01:00
Stephen Dolan
5add2c2ceb
if-then-else and defined-or operators
2012-09-04 15:34:34 +01:00
Stephen Dolan
6041fd7661
Literal strings and better literal numbers.
2012-09-03 13:57:47 +01:00
Stephen Dolan
2cb9a6e61d
Move from Jansson to JV - everything but the interpreter loop
...
Passes valgrind --leak-check=full.
2012-09-02 16:31:59 +01:00
Stephen Dolan
dc6cf2fb58
Remove syntax distinction between builtin and user calls
2012-08-27 11:19:42 +01:00
Stephen Dolan
6c8b55793a
first pass at assignment
2012-08-27 10:12:02 +01:00
Stephen Dolan
a847d2250f
2nd order functions
2012-08-26 14:25:56 +01:00
Stephen Dolan
c128c2029e
First pass at functions + tests
2012-08-21 18:14:13 +01:00
Stephen
fd738bface
an addition operator, of sorts
2012-08-16 01:16:08 +01:00
Stephen
2002dc1a2f
Most of a C implementation of jq
2012-08-16 01:00:30 +01:00