QMI IDL compiler
Go to file
Alex Elder 28c48a5e18 parser: report input read errors
In qmi_parse(), the main loop accepts tokens until it sees one with
id 0.  If an unrecognized (or unexpected) token is encountered, it
reports an error and exits using yyerror().

Normally, input() returns the next character to be processed while
parsing.  If the read() call in input() encounters an error, input()
will return -1 instead (which happens to be EOF).

The only caller of input() is yylex().  It recognizes tokens
comprised of alphanumeric characters and '_'.  If input() returns
any other value, it uses that value as the token identifier.  And in
particular, if input() returns -1, that will be the value stored in
the id field of the token structure yylex() returns.

So, back to the top, qmi_parse() will not consider -1 a valid token
id, and will report the read error as an "unexpected symbol".

Instead, report a read error immediately when it occurs and exit.
Move the definition of yyerror() earlier in the source file so it
can be called from yylex() (and all other functions) without needing
a declaration.

Signed-off-by: Alex Elder <elder@linaro.org>
Message-Id: <20211001232338.769309-8-elder@linaro.org>
Signed-off-by: Bjorn Andersson <bjorn.andersson@linaro.org>
2021-10-04 12:17:46 -05:00
.gitignore qmic: Add .gitignore 2016-06-02 10:27:42 -07:00
accessor.c kernel: Introduce kernel-style generator 2018-01-31 13:00:02 -08:00
kernel.c kernel: Support having strings in structs 2018-06-29 14:12:50 -07:00
LICENSE qmic: Add the missing LICENSE file 2016-06-02 10:26:43 -07:00
list.h qmic: Adopt common list implementation 2018-01-30 15:55:49 -08:00
Makefile Makefile: Allow compiler/linker flags to be overridden 2018-03-05 21:54:21 -08:00
parser.c parser: report input read errors 2021-10-04 12:17:46 -05:00
qmi_tlv.c qmic: Initial basic implementation 2016-02-07 09:27:50 -08:00
qmic.c kernel: Introduce kernel-style generator 2018-01-31 13:00:02 -08:00
qmic.h kernel: Introduce kernel-style generator 2018-01-31 13:00:02 -08:00