Browse Source

Clean up parser error messages

Generally edit parser error messages for brevity and clarity.  Replace
the print_error() function with a a new macro for brevity and clarity in
the source.

Signed-off-by: David Gibson <david@gibson.dropbear.id.au>
main
David Gibson 11 years ago
parent
commit
fa3f3f0ebd
  1. 44
      dtc-parser.y

44
dtc-parser.y

@ -24,8 +24,12 @@ @@ -24,8 +24,12 @@
#include "srcpos.h"

extern int yylex(void);
extern void print_error(YYLTYPE *loc, char const *fmt, ...);
extern void yyerror(char const *s);
#define ERROR(loc, ...) \
do { \
srcpos_error((loc), "Error", __VA_ARGS__); \
treesource_error = true; \
} while (0)

extern struct boot_info *the_boot_info;
extern bool treesource_error;
@ -145,17 +149,18 @@ devicetree: @@ -145,17 +149,18 @@ devicetree:
if (target)
merge_nodes(target, $3);
else
print_error(&@2, "label or path, '%s', not found", $2);
ERROR(&@2, "Label or path %s not found", $2);
$$ = $1;
}
| devicetree DT_DEL_NODE DT_REF ';'
{
struct node *target = get_node_by_ref($1, $3);

if (!target)
print_error(&@3, "label or path, '%s', not found", $3);
else
if (target)
delete_node(target);
else
ERROR(&@3, "Label or path %s not found", $3);


$$ = $1;
}
@ -271,10 +276,9 @@ arrayprefix: @@ -271,10 +276,9 @@ arrayprefix:
bits = $2;

if ((bits != 8) && (bits != 16) &&
(bits != 32) && (bits != 64))
{
print_error(&@2, "Only 8, 16, 32 and 64-bit elements"
" are currently supported");
(bits != 32) && (bits != 64)) {
ERROR(&@2, "Array elements must be"
" 8, 16, 32 or 64-bits");
bits = 32;
}

@ -299,9 +303,8 @@ arrayprefix: @@ -299,9 +303,8 @@ arrayprefix:
* mask), all bits are one.
*/
if (($2 > mask) && (($2 | mask) != -1ULL))
print_error(&@2,
"integer value out of range "
"%016lx (%d bits)", $1.bits);
ERROR(&@2, "Value out of range for"
" %d-bit array element", $1.bits);
}

$$.data = data_append_integer($1.data, $2, $1.bits);
@ -315,7 +318,7 @@ arrayprefix: @@ -315,7 +318,7 @@ arrayprefix:
REF_PHANDLE,
$2);
else
print_error(&@2, "References are only allowed in "
ERROR(&@2, "References are only allowed in "
"arrays with 32-bit elements.");

$$.data = data_append_integer($1.data, val, $1.bits);
@ -435,7 +438,7 @@ subnodes: @@ -435,7 +438,7 @@ subnodes:
}
| subnode propdef
{
print_error(&@2, "syntax error: properties must precede subnodes");
ERROR(&@2, "Properties must precede subnodes");
YYERROR;
}
;
@ -458,18 +461,7 @@ subnode: @@ -458,18 +461,7 @@ subnode:

%%

void print_error(YYLTYPE *loc, char const *fmt, ...)
{
va_list va;

va_start(va, fmt);
srcpos_verror(loc, "Error", fmt, va);
va_end(va);

treesource_error = true;
}

void yyerror(char const *s)
{
print_error(&yylloc, "%s", s);
ERROR(&yylloc, "%s", s);
}

Loading…
Cancel
Save