Improve error reporting
authorJo-Philipp Wich <jow@openwrt.org>
Wed, 18 Jun 2014 15:59:51 +0000 (17:59 +0200)
committerJo-Philipp Wich <jow@openwrt.org>
Wed, 18 Jun 2014 16:50:51 +0000 (18:50 +0200)
commitafa3a10096e6d3ad50dc9d8250f40d8f23a9ad42
treee6a84c25ea9a61e2f30b7937f504a8539b694422
parentc0e1d4495a8afe51cc1900269d6a6fcf0b51a761
Improve error reporting

Keep track of the exact location the error occured in and switch
the internal error description from a dynamic string buffer to an
integer which either holds negative values for lexer errors or
positives values for grammer violations.

In case of grammer violations the "error_code" member will hold
a bitfield describing the expected tokens.

Also rework the error messages emitted by the cli to be more
precise.

Examples:

$ jsonfilter -s '{}' -e '@.foo bar'
Syntax error: Expecting End of file
In expression @.foo bar
Near here ----------^

$ jsonfilter -s '{}' -e '@.foo\bar'
Syntax error: Unexpected character
In expression @.foo\bar
Near here ---------^

$ jsonfilter -s '{}' -e '@.foo..bar'
Syntax error: Expecting Label or '*'
In expression @.foo..bar
Near here ----------^

Signed-off-by: Jo-Philipp Wich <jow@openwrt.org>
ast.c
ast.h
lexer.c
main.c
parser.y