[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: Parsing a language with optional spaces
From: |
Akim Demaille |
Subject: |
Re: Parsing a language with optional spaces |
Date: |
Wed, 8 Jul 2020 06:24:13 +0200 |
Hi John,
> Le 7 juil. 2020 à 10:55, John P. Hartmann <jphartmann@gmail.com> a écrit :
>
> On 7/7/20 05:35, Akim Demaille wrote:
>> I believe you need to read again the documentation of /
>> 'r/s'
>
> It is not as simple as that.
Actually the message you are quoting was really just an answer to Maury,
for BASIC.
> As I don't speak BASIC, let me rephrase this problem in FORTRAN IV which is
> also "blank agnostic":
>
> DO <number> <variable> = <expression> , <expression> [, <expression>]
>
> It is not until you reach the comma after the first expression that you know
> whether the statement is the beginning of a loop or it is an assignment. And
> the expression can contain commas in function calls, which defeats any
> trivial lookahead scanning. E.g.,
>
> D O 17 6PQ R=FUN X(1 4, V 8)
>
> is an assignment to variable DO176PQR. The function arguments can also be
> expressions that contain function calls.
>
> As you can see, this more or less defeats any attempt to write a lex scanner.
> And you cannot just squeeze out all blanks in a front end because "Hollerith
> fields" can contain blanks that are significant (must remain).
I still think you can address this case with Flex, but I agree it's
going to be painful. I would go for something like
sp [ \t]*
do D{sp}O
id [a-zA-Z]({sp}[a-zA-Z_0-9]+)*
etc.
This is tedious. In Vcsn I had implemented the "shuffle" operator
which would have been helpful
(https://www.lrde.epita.fr/dload/vcsn/latest/notebooks/expression.shuffle.html).
"Shuffle" is definitely a valid operator: the shuffling of rational
languages is a rational language, so it is mathematically sound.
Cheers!
- Parsing a language with optional spaces, (continued)
- Parsing a language with optional spaces, Maury Markowitz, 2020/07/06
- Re: Parsing a language with optional spaces, Christian Schoenebeck, 2020/07/06
- Re: Parsing a language with optional spaces, Maury Markowitz, 2020/07/06
- Re: Parsing a language with optional spaces, Christian Schoenebeck, 2020/07/06
- Re: Parsing a language with optional spaces, Akim Demaille, 2020/07/08
- Re: Parsing a language with optional spaces, Akim Demaille, 2020/07/06
- Re: Parsing a language with optional spaces, Maury Markowitz, 2020/07/06
- Re: Parsing a language with optional spaces, Akim Demaille, 2020/07/06
- Re: Parsing a language with optional spaces, John P. Hartmann, 2020/07/07
- Re: Parsing a language with optional spaces, uxio prego, 2020/07/07
- Re: Parsing a language with optional spaces,
Akim Demaille <=
- Re: Parsing a language with optional spaces, Christian Schoenebeck, 2020/07/08
- Re: Parsing a language with optional spaces, Akim Demaille, 2020/07/08
- Re: Parsing a language with optional spaces, Christian Schoenebeck, 2020/07/08
- Re: Parsing a language with optional spaces, Daniele Nicolodi, 2020/07/08
- Re: Parsing a language with optional spaces, Akim Demaille, 2020/07/09
- Re: Parsing a language with optional spaces, Akim Demaille, 2020/07/09
- Re: Parsing a language with optional spaces, uxio prego, 2020/07/11
- Re: Parsing a language with optional spaces, Christian Schoenebeck, 2020/07/12
- Re: Parsing a language with optional spaces, Akim Demaille, 2020/07/13
- Re: Parsing a language with optional spaces, Akim Demaille, 2020/07/14