After staring at these two rules for a bit, and not quite groking them, I rewrote them into something I think is a bit clearer. With any luck, it's the same language still.
Signed-off-by: Jon Loeliger <[EMAIL PROTECTED]> --- You be the judge too! dtc-parser.y | 31 ++++++++++++++----------------- 1 files changed, 14 insertions(+), 17 deletions(-) diff --git a/dtc-parser.y b/dtc-parser.y index 61ed250..f0b0178 100644 --- a/dtc-parser.y +++ b/dtc-parser.y @@ -59,7 +59,6 @@ extern struct boot_info *the_boot_info; %token <str> DT_REF %type <data> propdata -%type <data> propdataprefix %type <re> memreserve %type <re> memreserves %type <cbase> opt_cell_base @@ -143,37 +142,35 @@ propdef: ; propdata: - propdataprefix DT_STRING + DT_STRING { - $$ = data_merge($1, $2); + $$ = data_merge(empty_data, $1); } - | propdataprefix '<' celllist '>' + | '<' celllist '>' { - $$ = data_merge(data_append_align($1, - sizeof(cell_t)), $3); + $$ = data_merge(data_append_align(empty_data, + sizeof(cell_t)), $2); } - | propdataprefix '[' bytestring ']' + | '[' bytestring ']' { - $$ = data_merge($1, $3); + $$ = data_merge(empty_data, $2); } | propdata DT_LABEL { $$ = data_add_label($1, $2); } - ; - -propdataprefix: - /* empty */ + | propdata ',' DT_STRING { - $$ = empty_data; + $$ = data_merge($1, $3); } - | propdata ',' + | propdata ',' '<' celllist '>' { - $$ = $1; + $$ = data_merge(data_append_align($1, + sizeof(cell_t)), $4); } - | propdataprefix DT_LABEL + | propdata ',' '[' bytestring ']' { - $$ = data_add_label($1, $2); + $$ = data_merge($1, $4); } ; -- 1.5.3.1.139.g9346b _______________________________________________ Linuxppc-dev mailing list Linuxppc-dev@ozlabs.org https://ozlabs.org/mailman/listinfo/linuxppc-dev