On Tue, Jul 04, 2006 at 12:57:16PM -0700, Allison Randal wrote:
> ------
> 
> token start { ^<emptyline>*$ }
> 
> regex emptyline { ^^ $$ \n }
> 
> token ws { [<sp> | \t]* }
> 
> ------

The above grammar doesn't have a "grammar" statement; as a result
the regexes are being installed into the '' namespace.

> If I match this against a string of 7 newlines, it returns 7 <emptyline>
> matches, and each match is a single newline. This is the behavior I want
> for newlines.

I tried it with a grammar statement and it seems to work:

----

$ cat ar.pg
grammar XYZ;

token start { ^<emptyline>*$ }

rule emptyline { ^^ $$ \n }

token ws { [<sp> | \t]* }

$ ./parrot compilers/pge/pgc.pir ar.pg >ar.pir
$ cat xyz.pir
.sub main :main
    load_bytecode 'PGE.pbc'
    load_bytecode 'ar.pir'
    load_bytecode 'dumper.pbc'
    load_bytecode 'PGE/Dumper.pbc'

    $P0 = find_global 'XYZ', 'start'
    $P1 = $P0("\n\n\n\n\n\n\n", 'grammar' => 'XYZ')

    '_dumper'($P1)
.end
$ ./parrot xyz.pir
"VAR1" => PMC 'XYZ' => "\n\n\n\n\n\n\n" @ 0 {
    <emptyline> => ResizablePMCArray (size:7) [
        PMC 'XYZ' => "\n" @ 0,
        PMC 'XYZ' => "\n" @ 1,
        PMC 'XYZ' => "\n" @ 2,
        PMC 'XYZ' => "\n" @ 3,
        PMC 'XYZ' => "\n" @ 4,
        PMC 'XYZ' => "\n" @ 5,
        PMC 'XYZ' => "\n" @ 6
    ]
}
$ 

-----

Pm

Reply via email to