Interpreting the D grammar

cym13 via Digitalmars-d digitalmars-d at puremagic.com
Sun Aug 2 10:40:24 PDT 2015


On Sunday, 2 August 2015 at 17:29:57 UTC, Jacob Carlborg wrote:
> On 02/08/15 18:08, cym13 wrote:
>
>> You can't build a regular expression for any grammar. You can 
>> for some
>> grammars but those are only a simple subset. For example, 
>> checking
>> parens balance is impossible with common (not recursive) 
>> regular
>> expressions only, and even with recursion it soon reaches its 
>> limitations.
>
> TextMate grammars support recursion, it's possible to define a 
> grammar with balanced parentheses [1].
>
> [1] https://manual.macromates.com/en/language_grammars

Yes, that will work for this simple example, but what of 
interleaved parentheses ? Say you want (), [] and "" to match, 
how can you do ?

     [[("]("), "])(", ")"]]

There are constructs that aren't possibly doable using even 
extend regular expressions. That's why grammars were invented 
after all.

Reading your documentation, it seems that you are not expected to 
reduce the grammar to a regular expression, rather it uses many 
regular expressions to describes parts of the language grammar, 
so that should work.


More information about the Digitalmars-d mailing list