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