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

Reply via email to