On Sun, Mar 11, 2012 at 00:56, Andrej Mitrovic <andrej.mitrov...@gmail.com> wrote: > I see you are not the only one who started writing string array > literals like this: > > enum PEGCode = grammarCode!( > "Grammar <- S Definition+ EOI" > ,"Definition <- RuleName Arrow Expression" > ,"RuleName <- Identifier>(ParamList?)" > ,"Expression <- Sequence (OR Sequence)*" > ); > > IOW comma on the left side. I know it's not a style preference but > actually a (unfortunate but needed) technique for avoiding bugs. :)
Yes, I use what I call "Haskell-comma" (I saw it first on Haskell code). But in the previous sample, that's old code. Now, that should only be; enum code = grammar(" Grammar <- S Definition+ EOI Definition <- RuleName Arrow Expression RuleName <- Identifier>(ParamList?) Expression <- Sequence (OR Sequence)* "); I see I didn't update bootstrap.d, I'll do that. > So can you use this to actually parse D code, extract syntax trees and > stuff like that? I'm clueless about parsing but it looks very neat. I can partially parse D code, because I only wrote part of the D grammar (see the pegged.examples.dgrammar module), just enough to parse most of template constraints. I intend to complete it and see if that floats. Yes, it extracts syntax trees, at compile-time or runtime. > Nice work! Thanks!