

The first release of pacc certainly had some rough edges. Now begins the work of smoothing some of those off.
For a start, I've updated the todo list to reflect targets for the next release. The first one I've tackled is character classes in pacc0.c.. As a result of this work, these three rules:
Name :: char *
← n:(NameStart NameCont*) _ { ref_dup(n) }
NameStart :: void
← c:. &{ isalpha(ref_0(c)) || ref_0(c) == '_' }
NameCont
← c:. &{ isalnum(ref_0(c)) || ref_0(c) == '_' }
have now been replaced by the rather more succinct:
Name :: char *
← n:([_A-Za-z] [_A-Za-z0-9]*) _ { ref_dup(n) }
Last updated: 2012-07-03 23:04:46 UTC
Support the development of pacc with a donation! We accept donations in BitCoin or via PayPal who handle almost any other form of payment.
I'm starting to implement what I'm calling “new-rep”. To begin with, we can gloss over the details of exactly how it will be expressed in pacc, but we will need to decide how it will look in the AST. My first test case will be the unary counting grammar, which might look a bit like this: Read More...
With the help of Dale Schumacher, I have cracked left recursion. At least, I have a paper design that I believe I can implement. I think I will attempt to do this before the next release, as really without it pacc is very hard to use for a number of important cases. It should also make it possible to implement arbitrary counted repetitions, such as {2,4}. As a bonus, this should make certain error messages less opaque. Finally, I believe it to be an original piece of work. Read More...