Thank-you.  My analysis went wrong at step #12.  In step #12, I determined
that the choice I made in step #3 was wrong.  However, in step #11, I had
determined that #3 was correct.  Step #12 (which is a continuation of the
decision in #2) can't go back and tell #3 to try a different choice because
#3 will always choose "aAa" over just plain "a".  Step #2 has the choice of
"aAa" or "a", but it can't choose "aAa" on the condition that the next parse
of "A" choose the second choice over the first.

Thanks for the help.

Cheers,

David

-----Original Message-----
From: [EMAIL PROTECTED]
[mailto:[EMAIL PROTECTED] On Behalf Of Christophe Grand
Sent: Monday, October 15, 2007 14:15
Cc: peg@lists.csail.mit.edu
Subject: Re: [PEG] A first test for PEG equivalence (was Equivalence of
PEGand APG 5.0)

You must not forget that each rule is a function depending _only_ of the 
current position (for a given input string).
We can write a result matrix. First, the easy  cells:

    a a a a a $
a   1 1 1 1 1 X
aAa           X
A             X

Then you can fill the other cells using a spreadsheet-like formulas:
- A(n) := if aAa(n) != X then aAa(n) else a(n)
- aAa(n) := if a(n) != X and A(n + a(n)) != X and a(n + 1 + A(n + 1)) != 
X then A(n + 1) + 2 else X
(given that if a(n) != X then a(n) = 1, it can be simplified to:
- aAa(n) := if a(n) != X and A(n + 1) != X and a(n + A(n + 1)) != X then 
a(n) + A(n + a(n)) + a(n + A(n + a(n))) else X)
(n is the position in the input string)

Now we can fill the matrix:
    a a a a a $
a   1 1 1 1 1 X
aAa 3 X 3 X X X
A   3 1 3 1 1 X

Hence with the input a^5 only a^3 is matched.

On a longer matrix:
    a a a a a a a $
a   1 1 1 1 1 1 1 X
aAa 7 5 3 X 3 X X X
A   7 5 3 1 3 1 1 X

a^7 is totally matched.

Christophe Grand

David Mercer a écrit :
> I do not understand why the test grammar offered by Sylvain should not
> recognize aaaaa (a^5).
>
>    A <- a A a / a
>
> Here's my thinking:
>
> a a a a a                  input
>
> A                          0. start symbol
>
> a A a                      1. try first choice
> ^
> a(a A a)a                  2. try first choice
>   ^
> a(a(a A a)a)a              3. try first choice
>     ^
> a(a(a(a A a)a)a)a          4. try first choice
>       ^
> a(a(a(a(a A a)a)a)a)a      5. try first choice
>         ^
> a(a(a(a(a(a A a)a)a)a)a)a  6. try first choice: fail
>           ^
> a(a(a(a(a(a)a)a)a)a)a      7. try second choice: fail
>           ^
> a(a(a(a(a)a)a)a)a          8. back up to choice in #5 and try second
choice
>         ^
> a(a(a(a(a)a)a)a)a          9. turns out our choice in #4 was wrong
>           ^
> a(a(a(a)a)a)a              10. back up to choice in #4 and try second
choice
>       ^
> a(a(a(a)a)a)a              11.
>         ^
> a(a(a(a)a)a)a              12. Looks like our choice in #3 was wrong
>           ^
> a(a(a)a)a                  13. back up to choice #3 and try second choice
>     ^
> a(a(a)a)a                  14.
>       ^
> a(a(a)a)a                  15. End of parse: success
>         ^
>
> Please advise.  Thank-you.
>
> Cheers,
>
> David
>
> -----Original Message-----
> From: [EMAIL PROTECTED]
> [mailto:[EMAIL PROTECTED] On Behalf Of Sylvain Schmitz
> Sent: Monday, October 08, 2007 02:50
> To: Lowell Thomas
> Cc: peg@lists.csail.mit.edu
> Subject: [PEG] A first test for PEG equivalence (was Equivalence of PEG
and
> APG 5.0)
>
> Hi Lowell,
>
> Lowell Thomas wrote:
>   
>> I am about to release version 5.0, and in
>> that release I am claiming that APG 5.0 parsers and PEG recognize the
same
>> set of languages. This result, if true, is surprising to me, since APG
>> starts with a context-free grammar formalism and PEG makes a point of
not.
>> The argument is heuristic, not mathematical, but the result looks almost
>> obvious on the face of it.
>>     
>
> Equivalences of PEGs with other formalisms haven't been much discussed 
> on the list.  Overall, backtracking top-down parsing methods with strict 
> priorities and greediness are good candidates---the TDPL formalism, upon 
> which PEGs were constructed, was defined in order to study such parsers 
> after all.
>
> A good first test to check whether (a rather strong) equivalence might 
> hold would be to verify that the grammar corresponding to the PEG
>
>    A <- a A a / a
>
> recognizes the same language as the PEG, namely {a^(2^n - 1) | n > 0} 
> (i.e. 2^n-1 consecutive `a' symbols, starting with 1, 3, 7, 15, etc.). 
> This example of a non context-free language seems to me like a good 
> start---if your parser recognizes any odd number of `a' tokens instead, 
> then it's not a PEG parser.
>
>   


_______________________________________________
PEG mailing list
PEG@lists.csail.mit.edu
https://lists.csail.mit.edu/mailman/listinfo/peg


_______________________________________________
PEG mailing list
PEG@lists.csail.mit.edu
https://lists.csail.mit.edu/mailman/listinfo/peg

Reply via email to