News for hackers. Stuff that matters.
Re:Oh Yes You Can Use Regexes to Parse HTML by qntm on Friday July 08, 2011 @12:28PM (#2743086)
Negative, a regular grammar which describes a regular language cannot be recursive. For recursion you need to be context-free at least.

Of course, most modern "regex" engines provide features which go beyond the strictly regular languages.

Re:Oh Yes You Can Use Regexes to Parse HTML by jhck on Friday July 08, 2011 @01:33PM (#2743333)
No, kd0amg is right. Here's a simple example of a recursive regular grammar:

    S → aS | ε
This grammar is right linear (see http://en.wikipedia.org/wiki/Regular_grammar).
Re:Oh Yes You Can Use Regexes to Parse HTML by burgerbrain on Friday July 08, 2011 @01:50PM (#2743397)
You can in fact do recursion with regular grammars as you've just demonstrated, but if you mix right regular grammars with left regular grammars (as you would need to do in order to, for example, match parenthesis) your grammar is no longer regular (not equivalent to regular expressions). I suspect that is what wisty meant.

Honestly though, this entire conversation is fuzzed by the blurred distinction between "parsing with regular expressions, and writing a parser that uses regular expressions to tokenize" by the original author. I'm not really sure where just about every other person in this discussion is coming from as a result..

Re:Oh Yes You Can Use Regexes to Parse HTML by qntm on Friday July 08, 2011 @04:33PM (#2743967)
I didn't know that a grammar featuring recursion can still be called a "regular" grammar if the language it describes is regular.

However, no regular grammar (not even a recursive regular grammar) can describe a recursive language.

Re:Oh Yes You Can Use Regexes to Parse HTML by nandemo on Friday July 08, 2011 @10:10PM (#2744802)
That's basically the standard definition of regular grammar: a grammar that describes a regular language.

All this subthread is fairly confusing because people are using the term "recursive" in a non-stardard way. Recursive languages are the languages decidable by a Turing machine. They're a strict superset of regular languages, i.e., not all regular languages can be described by regular grammars, but all regular grammars describe recursive languages.

Now, some regular grammars are left-recursive or right-recursive, which means sometimes the same symbol appears on both sides of a rule. It doesn't mean they the have the power of full recursion that we find in full-blown programming languages, since they don't have the equivalent of a stack.

Re:Oh Yes You Can Use Regexes to Parse HTML by nandemo on Saturday July 09, 2011 @01:10PM (#2745885)
Typo: I meant not all recursive languages can be described by regular grammars.