From: David Gibson <david-xT8FGy+AXnRB3Ne2BGzF6laj5H9X9Tb+@public.gmane.org>
To: devicetree-compiler-u79uwXL29TY76Z2rM5mHXA@public.gmane.org
Cc: jdl-CYoMK+44s/E@public.gmane.org,
3fa55604225d40864c30a8b17d0dac60b2384cbe-mnsaURCQ41sdnm+yROfE0A@public.gmane.org,
David Gibson
<david-xT8FGy+AXnRB3Ne2BGzF6laj5H9X9Tb+@public.gmane.org>
Subject: [PATCH 07/10] Implement labels within property values as bytestring expressions
Date: Mon, 17 Feb 2014 00:19:38 +1100 [thread overview]
Message-ID: <1392556781-7743-8-git-send-email-david@gibson.dropbear.id.au> (raw)
In-Reply-To: <1392556781-7743-1-git-send-email-david-xT8FGy+AXnRB3Ne2BGzF6laj5H9X9Tb+@public.gmane.org>
This re-implements labels within property values as a form of bytestring
expression. The grammar gets a little hairy to handle the fact that
labels are allowed both at the beginning and end of property values without
introducing parser conflicts.
Signed-off-by: David Gibson <david-xT8FGy+AXnRB3Ne2BGzF6laj5H9X9Tb+@public.gmane.org>
---
dtc-parser.y | 38 ++++++++++++++++++++++++++++----------
1 file changed, 28 insertions(+), 10 deletions(-)
diff --git a/dtc-parser.y b/dtc-parser.y
index fcc3b4d..bff22d9 100644
--- a/dtc-parser.y
+++ b/dtc-parser.y
@@ -93,6 +93,7 @@ static struct data expr_bytestring(struct expression *expr);
%type <expr> expr_incbin
%type <expr> expr_prim
+%type <expr> expr_prelabel
%type <expr> expr_unary
%type <expr> expr_mul
%type <expr> expr_add
@@ -105,6 +106,7 @@ static struct data expr_bytestring(struct expression *expr);
%type <expr> expr_and
%type <expr> expr_or
%type <expr> expr_conditional
+%type <expr> expr_postlabel
%type <expr> expr
%%
@@ -221,10 +223,6 @@ propdata:
{
$$ = data_add_marker($1, REF_PATH, $2);
}
- | propdata DT_LABEL
- {
- $$ = data_add_marker($1, LABEL, $2);
- }
;
propdataprefix:
@@ -236,10 +234,6 @@ propdataprefix:
{
$$ = $1;
}
- | propdataprefix DT_LABEL
- {
- $$ = data_add_marker($1, LABEL, $2);
- }
;
array:
@@ -338,7 +332,19 @@ expr_prim:
;
expr:
- expr_conditional
+ expr_postlabel
+ ;
+
+expr_postlabel:
+ expr_conditional
+ | expr_conditional DT_LABEL
+ {
+ struct data d = data_add_marker(empty_data, LABEL, $2);
+ struct expression *label;
+
+ label = expression_bytestring_constant(&@2, d);
+ $$ = expression_join(&@$, $1, label);
+ }
;
expr_conditional:
@@ -408,12 +414,24 @@ expr_mul:
;
expr_unary:
- expr_prim
+ expr_prelabel
| '-' expr_unary { $$ = UNOP(@$, negate, $2); }
| '~' expr_unary { $$ = UNOP(@$, bit_not, $2); }
| '!' expr_unary { $$ = UNOP(@$, logic_not, $2); }
;
+expr_prelabel:
+ expr_prim
+ | DT_LABEL expr_prelabel
+ {
+ struct data d = data_add_marker(empty_data, LABEL, $1);
+ struct expression *label;
+
+ label = expression_bytestring_constant(&@1, d);
+ $$ = expression_join(&@$, label, $2);
+ }
+ ;
+
bytestring_literal:
/* empty */
{
--
1.8.5.3
--
To unsubscribe from this list: send the line "unsubscribe devicetree-compiler" in
the body of a message to majordomo-u79uwXL29TY76Z2rM5mHXA@public.gmane.org
More majordomo info at http://vger.kernel.org/majordomo-info.html
next prev parent reply other threads:[~2014-02-16 13:19 UTC|newest]
Thread overview: 11+ messages / expand[flat|nested] mbox.gz Atom feed top
2014-02-16 13:19 [0/10] RFC: A new start on richer dtc expression support David Gibson
[not found] ` <1392556781-7743-1-git-send-email-david-xT8FGy+AXnRB3Ne2BGzF6laj5H9X9Tb+@public.gmane.org>
2014-02-16 13:19 ` [PATCH 01/10] First cut at expression trees David Gibson
2014-02-16 13:19 ` [PATCH 02/10] Add srcpos information to expressions David Gibson
2014-02-16 13:19 ` [PATCH 03/10] Add type information to expression trees David Gibson
2014-02-16 13:19 ` [PATCH 04/10] Add string and bytestring expression types David Gibson
2014-02-16 13:19 ` [PATCH 05/10] Integrate /incbin/ with expanded expressions David Gibson
2014-02-16 13:19 ` [PATCH 06/10] Implement arrays as expressions David Gibson
2014-02-16 13:19 ` David Gibson [this message]
2014-02-16 13:19 ` [PATCH 08/10] Implement path references in terms of bytestring expressions David Gibson
2014-02-16 13:19 ` [PATCH 09/10] Re-implement "," in property definitions as a bytestring operator David Gibson
2014-02-16 13:19 ` [PATCH 10/10] Implement string concatenate and repeat operators David Gibson
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=1392556781-7743-8-git-send-email-david@gibson.dropbear.id.au \
--to=david-xt8fgy+axnrb3ne2bgzf6laj5h9x9tb+@public.gmane.org \
--cc=3fa55604225d40864c30a8b17d0dac60b2384cbe-mnsaURCQ41sdnm+yROfE0A@public.gmane.org \
--cc=devicetree-compiler-u79uwXL29TY76Z2rM5mHXA@public.gmane.org \
--cc=jdl-CYoMK+44s/E@public.gmane.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).