<div dir="ltr">You&#39;d have to ask Ryan to be sure, but I think they&#39;re pretty stable.  I&#39;ve been using them for some time.<br></div><div class="gmail_extra"><br clear="all"><div>Carl Eastlund</div>
<br><br><div class="gmail_quote">On Fri, Aug 23, 2013 at 12:53 PM, Stephen Chang <span dir="ltr">&lt;<a href="mailto:stchang@ccs.neu.edu" target="_blank">stchang@ccs.neu.edu</a>&gt;</span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">

Ah, thanks. That&#39;s exactly what I wanted.<br>
<br>
How stable are these features? Shall I add them to the docs?<br>
<div class="HOEnZb"><div class="h5"><br>
On Fri, Aug 23, 2013 at 12:54 AM, Carl Eastlund &lt;<a href="mailto:cce@ccs.neu.edu">cce@ccs.neu.edu</a>&gt; wrote:<br>
&gt; Here&#39;s how you want to define AorB:<br>
&gt;<br>
&gt; (define-syntax-class AorB #:auto-nested-attributes<br>
&gt;   (pattern :A)<br>
&gt;   (pattern :B))<br>
&gt;<br>
&gt; There&#39;s two things going on here, both of which I believe are undocumented,<br>
&gt; sadly.<br>
&gt;<br>
&gt; One is #:auto-nested-attributes, an option that tells AorB that anything<br>
&gt; bound as an attribute by nested sub-patterns in its clauses should<br>
&gt; automatically become an attribute of AorB.<br>
&gt;<br>
&gt; The other is that empty identifier does not add &quot;.&quot; to its attribute names.<br>
&gt; When you bind a with the attribute X, you get A.X, and when you bind b, you<br>
&gt; get b.X, but when you bind the empty identifier, you just get X.<br>
&gt;<br>
&gt; So now you just have X bound in both clauses, and that&#39;s automatically made<br>
&gt; an attribute of AorB, and it all works like you want.<br>
&gt;<br>
&gt; Carl Eastlund<br>
&gt;<br>
&gt;<br>
&gt; On Fri, Aug 23, 2013 at 12:22 AM, Stephen Chang &lt;<a href="mailto:stchang@ccs.neu.edu">stchang@ccs.neu.edu</a>&gt; wrote:<br>
&gt;&gt;<br>
&gt;&gt; Is there a way for a syntax-class to automatically inherit attributes?<br>
&gt;&gt;<br>
&gt;&gt; For example, the third class below combines the first two. Is there a<br>
&gt;&gt; way to automatically get the attributes from the first two classes in<br>
&gt;&gt; the third one (ie, I want to drop the &quot;#:attr X #&#39;a.X&quot; part in the<br>
&gt;&gt; third class)?<br>
&gt;&gt;<br>
&gt;&gt; #lang racket<br>
&gt;&gt; (require syntax/parse)<br>
&gt;&gt;<br>
&gt;&gt; (define-syntax-class A (pattern (a b) #:attr X #&#39;b))<br>
&gt;&gt; (define-syntax-class B (pattern (a b c) #:attr X #&#39;c))<br>
&gt;&gt; (define-syntax-class AorB<br>
&gt;&gt;   (pattern a:A #:attr X #&#39;a.X)<br>
&gt;&gt;   (pattern b:B #:attr X #&#39;b.X))<br>
&gt;&gt;<br>
&gt;&gt; (syntax-parse #&#39;(list 1) [ab:AorB (attribute ab.X)])<br>
&gt;&gt; _________________________<br>
&gt;&gt;   Racket Developers list:<br>
&gt;&gt;   <a href="http://lists.racket-lang.org/dev" target="_blank">http://lists.racket-lang.org/dev</a><br>
&gt;&gt;<br>
&gt;<br>
<br>
</div></div></blockquote></div><br></div>