Author: bernhard
Date: Mon Oct 10 13:06:33 2005
New Revision: 9442
Modified:
trunk/languages/m4/src/input.pir
Log:
Start to use positional captures, PGE, in Parrot m4.
Modified: trunk/languages/m4/src/input.pir
==============================================================================
--- trunk/languages/m4/src/input.pir (original)
+++ trunk/languages/m4/src/input.pir Mon Oct 10 13:06:33 2005
@@ -72,13 +72,13 @@ TOOO: recognize nested quoted strings
rulesub_in_state = new Hash
state['rulesub'] = rulesub_in_state
.local pmc rulesub
- rulesub = p6rule( "^<[_a..zA..Z]><[_a..zA..Z0..9>]>*" )
+ rulesub = p6rule( "^(<[_a..zA..Z]><[_a..zA..Z0..9>]>*)" )
rulesub_in_state['word'] = rulesub
- rulesub = p6rule( "^`<-[`]>*'" )
+ rulesub = p6rule( "^(`<-[`]>*')" )
rulesub_in_state['string'] = rulesub
- rulesub = p6rule( "^<-[`#_a..zA..Z]>" )
+ rulesub = p6rule( "^(<-[`#_a..zA..Z]>)" )
rulesub_in_state['simple'] = rulesub
- rulesub = p6rule( "^\#\N*\n" )
+ rulesub = p6rule( "^(\#\N*\n)" )
rulesub_in_state['comment'] = rulesub
.end
@@ -200,20 +200,26 @@ Uses regular expressions for finding tok
MATCH:
# TODO: is there a method for extraction the matched string?
.local int token_from, token_to
- token_from = match.from()
- token_to = match.to()
- token_data = substr input_string, token_from, token_to, ''
+ .local pmc captures
+ ( captures ) = match."get_array"()
+ token_from = match.'from'()
+ token_to = match.'to'()
+ token_data = captures[0;0]
+ #token_data = substr input_string, token_from, token_to, '' # TODO
nibble at input without replacing input_string
+ substr input_string, token_from, token_to, '' # TODO nibble at input
without replacing input_string
+
goto SKIP_DEBUG_1
- print "\ntoken_type: "
- print token_type
- print "\ntoken_from: "
- print token_from
- print "\ntoken_to: "
- print token_to
- print "\ntoken_data: "
- print token_data
- print "\n"
+ print "\ntoken_type: "
+ print token_type
+ print "\ntoken_from: "
+ print token_from
+ print "\ntoken_to: "
+ print token_to
+ print "\ntoken_data: "
+ print token_data
+ print "\n"
SKIP_DEBUG_1:
+
ne token_type, 'TOKEN_STRING', NO_STRING_MATCH
substr token_data, 0, 1, ''
substr token_data, -1, 1, ''