Re: Flex is the most powerful lexical analysis language in the world. True or False?

George Neuner <gneuner2@comcast.net>
Fri, 06 May 2022 11:00:16 -0400

          From comp.compilers

Related articles
| List of all articles for this month |

From: George Neuner <gneuner2@comcast.net>
Newsgroups: comp.compilers
Date: Fri, 06 May 2022 11:00:16 -0400
Organization: A noiseless patient Spider
References: 22-05-003
Injection-Info: gal.iecc.com; posting-host="news.iecc.com:2001:470:1f07:1126:0:676f:7373:6970"; logging-data="93123"; mail-complaints-to="abuse@iecc.com"
Keywords: lex
Posted-Date: 06 May 2022 12:14:51 EDT

On Wed, 4 May 2022 11:22:34 +0000, Roger L Costello
<costello@mitre.org> wrote:


>Hi Folks,
>1. A lexical analysis language that exclusively provides regular expressions
>for scanning input can only process regular languages.
>2. Flex provides, in addition to regular expressions, states and a pushdown
>stack. This greatly expands the set of languages that can be processed.
>3. Because Flex provides states and a pushdown stack, Flex lexers can process
>context-free languages.
>4. No other lexical analysis language provides states and a pushdown stack.
>5. Flex is the most powerful lexical analysis language in the world.


>[I think that you could easily graft a state stack into any lexer that has start states.
>Also, tools like Antlr combine the lexer and parser generators, so they're at least as
>powerful as flex. -John]


+1 John.


Roger, if you hadn't already asked some more interesting questions, I
would suspect this 'test' was homework.


Flex is powerful, but it certainly is not alone. As John's response
hinted, there are (plenty of other) tools that more or less are
equivalent. And not all of them are based on LR.
https://en.wikipedia.org/wiki/Comparison_of_parser_generators


Not to mention that programming languages which tend to actually be
used also tend to be [relatively] easily parsed using LL(k).


LR is useful AS AN IMPLEMENTATION TECHNIQUE, but in general if your
language is complex enough to really /require/ (G)LR or PEG parsing,
it probably is too complicated to be used by average programmers.


YMMV,
George


Post a followup to this message

Return to the comp.compilers page.
Search the comp.compilers archives again.