about summary refs log tree commit diff
path: root/src/libexpr/parser.y
diff options
context:
space:
mode:
authorEelco Dolstra <e.dolstra@tudelft.nl>2011-07-06T12·28+0000
committerEelco Dolstra <e.dolstra@tudelft.nl>2011-07-06T12·28+0000
commit2b9e29b1c8b6b8e4884a46a3ba71ee795f1f97cd (patch)
tree9b4dd1efce2222e6fdf29ceaaca1f477b77e532b /src/libexpr/parser.y
parent5580f3817c37135dcc633d84d1360a17a8878a58 (diff)
* Change the right-hand side of the ‘.’ operator from an attribute to
  an attribute path.  This is a refactoring to support default values.

Diffstat (limited to 'src/libexpr/parser.y')
-rw-r--r--src/libexpr/parser.y6
1 files changed, 3 insertions, 3 deletions
diff --git a/src/libexpr/parser.y b/src/libexpr/parser.y
index 073fac1bee..49bd7bfa5f 100644
--- a/src/libexpr/parser.y
+++ b/src/libexpr/parser.y
@@ -325,8 +325,8 @@ expr_app
   ;
 
 expr_select
-  : expr_select '.' ID
-    { $$ = new ExprSelect($1, data->symbols.create($3)); }
+  : expr_simple '.' attrpath
+    { $$ = new ExprSelect($1, *$3); }
   | expr_simple { $$ = $1; }
   ;
 
@@ -382,7 +382,7 @@ binds
   | binds INHERIT '(' expr ')' ids ';'
     { $$ = $1;
       /* !!! Should ensure sharing of the expression in $4. */
-      foreach (AttrPath::iterator, i, *$6) {
+      foreach (vector<Symbol>::iterator, i, *$6) {
           if ($$->attrs.find(*i) != $$->attrs.end())
               dupAttr(*i, makeCurPos(@6, data), $$->attrs[*i].pos);
           $$->attrs[*i] = ExprAttrs::AttrDef(new ExprSelect($4, *i), makeCurPos(@6, data));