[dtrace-discuss] dtrace keywords in postfix expressions

Mark Johnston markj at freebsd.org
Sat Oct 4 19:22:47 UTC 2014


On Sat, Oct 04, 2014 at 12:59:57AM -0700, Bryan Cantrill wrote:
> Nothing like cracking open dt_grammar.y to get the blood flowing! ;)

Made for a fun Friday evening. :)

> I
> don't think the change looks unreasonable; how does the test suite fare?
> If this is no way breaks extant D programs, I'm all for it...

I don't see any regressions in the test suite. In principle this
shouldn't break anything - it just increases the number of valid D
programs without affecting the parse trees of existing programs.

I updated the patch to handle the offsetof() rule (so that
"offsetof(struct g_consumer, provider)" now works), and the "stringof"
keyword. If there aren't any objections I'll commit it to FreeBSD in a
few days and submit a PR for illumos.

Thanks,
-Mark

> 
>         - Bryan
> 
> 
> On Fri, Oct 3, 2014 at 9:13 PM, Mark Johnston via dtrace-discuss <
> dtrace-discuss at lists.dtrace.org> wrote:
> 
> > Hello,
> >
> > DTrace has a few keywords which are not keywords in C/C++ (e.g.
> > "provider"). One annoyance which has come up a few times is the fact
> > that such keywords cannot be used in expressions which would be valid in
> > the code being traced. For example, FreeBSD's struct g_consumer contains
> > a field called "provider", and attempting to run the following snippet of
> > D results in a syntax error:
> >
> > fbt::g_vfs_done:entry {printf("%s",
> > stringof(args[0]->bio_from->provider->name));}
> >
> > I don't see any reason the D grammar can't support this, however. The
> > patch at [1] attempts to fix this problem by allowing certain keywords
> > to appear in the place of identifiers in postfix expressions. It's not a
> > complete solution since it doesn't handle types or probe names, but it's a
> > start. Any thoughts on this approach?
> >
> > Thanks!
> > -Mark
> >
> > [1] http://people.freebsd.org/~markj/patches/dtrace_keywords.diff
> >
> >
> > -------------------------------------------
> > dtrace-discuss
> > Archives: https://www.listbox.com/member/archive/184261/=now
> > RSS Feed:
> > https://www.listbox.com/member/archive/rss/184261/21484475-e7237b25
> > Modify Your Subscription:
> > https://www.listbox.com/member/?member_id=21484475&id_secret=21484475-2fcb7543
> > Powered by Listbox: http://www.listbox.com
> >


More information about the freebsd-dtrace mailing list