hi,

attached a patch for languages/PIR, fixing:

* changed PIRGrammar into PIR::Grammar (changes many files)
* updated pirgrammar.pod
* updates to ASTGrammar.tg

regards,
kjs
Index: languages/PIR/docs/pirgrammar.pod
===================================================================
--- languages/PIR/docs/pirgrammar.pod	(revision 17008)
+++ languages/PIR/docs/pirgrammar.pod	(working copy)
@@ -308,7 +308,7 @@
 	  .param num nParam
 	  .param pmc argv :slurpy
 	  .param string sParam :named('foo')
-	  .param $P0 :named('bar')
+	  .param $P0 :named('bar')	  
 	  # body
 	.end
 
@@ -327,8 +327,16 @@
 
  :named('x')
 
-The parameter is known in the called sub by name C<'x'>.
+The parameter is known in the called sub by name C<'x'>. The C<:named> flag can also be used B<without> an 
+identifier, in combination with the C<:flat> or C<:slurpy> flag, i.e. on a container holding several values:
 
+	.param pmc args :slurpy :named
+
+and
+
+	.arg args :flat :named
+	
+
 =item *
 
  :optional
@@ -453,6 +461,15 @@
 	.local pmc p
 	.lex 'i', p
 
+The same is true when a parameter should be stored as a lexical:
+
+	.param pmc p
+	.lex 'i', p
+	
+So, now it is also clear why C<.lex 'i', p> is B<not> a declaration of p:
+it needs a separate declaration, because it may either be a C<.local> or a C<.param>.
+The C<.lex> directive merely is a shortcut for saving and retrieving lexical variables.
+
 =head2 Global definitions
 
   global_def:
@@ -795,8 +812,14 @@
 
 Pass the denoted argument into the named parameter that is denoted by 'x', like so:
 
- .param <type> <identifier> :named('x')
+ .param int myX :named('x')   # the type 'int' is just an example
 
+As was mentioned at the parameter declaration section, the C<:named> section can be used
+on an aggregate value in combination with the C<:flat> flag.
+
+ .arg pmc myArgs :flat :named
+ 
+
 =back
 
 	.local pmc arr
@@ -840,6 +863,7 @@
 	obj.'toString'() # call the method 'toString'
 	obj.x() # call the method whose name is stored in 'x'.
 
+Note that no spaces are allowed between the invocant and the dot; "obj . 'toString'" is not valid.
 IMCC also allows the "->" instead of a dot, to make it readable for C++ programmers:
 
 	obj->'toString'()
@@ -929,7 +953,14 @@
 	foo() # returns 42
 	foo() # returns 43
 
+NOTE: IMCC allows for writing:
 
+	.pcc_begin_yield
+	...
+	.pcc_end_return
+
+which is of course not consistent; languages/PIR does B<not> allow this.
+
 =head2 Short yield statements
 
   short_yield_stat:
@@ -956,8 +987,11 @@
 	.return(results)
 
 The call to C<foo> can be considered a normal function call with respect to parameters: it can take the exact
-same format using argument flags.
+same format using argument flags. The tail call can also be a method call, like so:
 
+	.return obj.'foo'()
+	
+
 =head2 Symbol namespaces
 
   open_namespace:
@@ -1132,8 +1166,11 @@
 =head2 Tokens, types and targets
 
   string_constant:
-    charset_specifier?  quoted_string
+    [ encoding_specifier? charset_specifier ]?  quoted_string
 
+  encoding_specifier:
+    "utf8:"
+    
   charset_specifier:
       "ascii:"
     | "binary:"
@@ -1161,7 +1198,11 @@
 but if desirable, the character set can be specified:
 
 	unicode:"Hello world"
+	
+When using the "unicode" character set, one can also specify an encoding specifier; currently only C<utf8> is allowed:
 
+	utf8:unicode:"hello world"
+
 IMCC currently allows identifiers to be used as types. During the parse, the identifier
 is checked whether it is a defined class. The built-in types int, num, pmc and string are
 always available.
Index: languages/PIR/examples/test.pir
===================================================================
--- languages/PIR/examples/test.pir	(revision 17008)
+++ languages/PIR/examples/test.pir	(working copy)
@@ -1,3 +1,4 @@
+.include 'HELLO'
 
 
 .sub 'main' :main
Index: languages/PIR/lib/ASTGrammar.tg
===================================================================
--- languages/PIR/lib/ASTGrammar.tg	(revision 17008)
+++ languages/PIR/lib/ASTGrammar.tg	(working copy)
@@ -10,21 +10,21 @@
     .local pmc past
 		past = new 'PAST::Block'
 		#past.'init'('node'=>node)
-		past.'init'('node'=>node, 'name'=>'anon')            
+		past.'init'('node'=>node, 'blocktype'=>'immediate', 'name'=>'anon')            
         
     .local pmc childnode, childpast
     childnode = node['program']
-    childpast = tree.'get'('past', childnode, 'PIRGrammar::program')
+    childpast = tree.'get'('past', childnode, 'PIR::Grammar::program')
 		past.'push'(childpast)    
     .return (past)  
     #.return (childpast)
 }
 
-# past (PIRGrammar::program)
+# past (PIR::Grammar::program)
 #
 # Store each of the compilation units into a PAST::Stmts node.
 #
-transform past (PIRGrammar::program) :language('PIR') {
+transform past (PIR::Grammar::program) :language('PIR') {
     .local pmc past
     past = new 'PAST::Stmts'
     past.'init'('node'=>node)
@@ -37,53 +37,53 @@
     unless iter goto iter_end
     .local pmc cnode, cpast
     cnode = shift iter
-    cpast = tree.'get'('past', cnode, 'PIRGrammar::compilation_unit')
+    cpast = tree.'get'('past', cnode, 'PIR::Grammar::compilation_unit')
     past.'push'(cpast)
     goto iter_loop
   iter_end:
     .return (past)
 }
 
-# past (PIRGrammar::compilation_unit)
+# past (PIR::Grammar::compilation_unit)
 #
 # Call the appropiate transform rule depending on the type of compilation unit.
 #
-transform past (PIRGrammar::compilation_unit) :language('PIR') {
+transform past (PIR::Grammar::compilation_unit) :language('PIR') {
   global_def:
     $P0 = node['global_def']
     if null $P0 goto sub_def
-    .return tree.'get'('past', $P0, 'PIRGrammar::global_def')
+    .return tree.'get'('past', $P0, 'PIR::Grammar::global_def')
   sub_def:
     $P0 = node['sub_def']
     if null $P0 goto const_def
-    .return tree.'get'('past', $P0, 'PIRGrammar::sub_def')
+    .return tree.'get'('past', $P0, 'PIR::Grammar::sub_def')
   const_def:
     $P0 = node['const_def']
     if null $P0 goto macro_def
-    .return tree.'get'('past', $P0, 'PIRGrammar::const_def')
+    .return tree.'get'('past', $P0, 'PIR::Grammar::const_def')
   macro_def:
     $P0 = node['macro_def']
     if null $P0 goto pragma
-    .return tree.'get'('past', $P0, 'PIRGrammar::macro_def')
+    .return tree.'get'('past', $P0, 'PIR::Grammar::macro_def')
   pragma:
   	$P0 = node['pragma']
     if null $P0 goto emit
-    .return tree.'get'('past', $P0, 'PIRGrammar::pragma')
+    .return tree.'get'('past', $P0, 'PIR::Grammar::pragma')
   emit:  
     $P0 = node['emit']
     if null $P0 goto const_def
-    .return tree.'get'('past', $P0, 'PIRGrammar::emit') 
+    .return tree.'get'('past', $P0, 'PIR::Grammar::emit') 
 }
 
-transform past (PIRGrammar::global_def) :language('PIR') {
+transform past (PIR::Grammar::global_def) :language('PIR') {
 
 }
 
-# past (PIRGrammar::sub_def)
+# past (PIR::Grammar::sub_def)
 #
 # Transform a sub_def into a PAST::Block node.
 #
-transform past (PIRGrammar::sub_def) :language('PIR') {		
+transform past (PIR::Grammar::sub_def) :language('PIR') {		
 		
 		.local pmc past
   	past = new 'PAST::Block'
@@ -95,22 +95,22 @@
     .local pmc pnode, pragma
     pnode = node['sub_pragmas']
     if null pnode goto skip_pragma
- 		pragma = tree.'get'('past', pnode, 'PIRGrammar::sub_pragma') 		
+ 		pragma = tree.'get'('past', pnode, 'PIR::Grammar::sub_pragma') 		
     past.'pragma'(pragma)
   skip_pragma:
     
     .local pmc child           
     $P1 = node['body']
-    child = tree.'get'('past', $P1, 'PIRGrammar::body')
+    child = tree.'get'('past', $P1, 'PIR::Grammar::body')
     past.'push'(child)
     .return (past)
 }
 
-#transform past (PIRGrammar::sub_pragmas) {
+#transform past (PIR::Grammar::sub_pragmas) {
 #		
 #}
 
-transform past (PIRGrammar::sub_pragma) {
+transform past (PIR::Grammar::sub_pragma) {
 		.local pmc past		
 		past = node[':main'] ### mmm why does *this* work for all pragmas??
 		if null past goto skip
@@ -119,7 +119,7 @@
 		.return ()
 }
 
-transform past (PIRGrammar::const_def) :language('PIR') {
+transform past (PIR::Grammar::const_def) :language('PIR') {
 	.local pmc past
 	past = new 'PASM::Op'
 	# FIX:
@@ -127,56 +127,87 @@
 	.return (past)
 }
 
-transform past (PIRGrammar::macro_def) :language('PIR') {
+transform past (PIR::Grammar::macro_def) :language('PIR') {
 
 }
 
-transform past (PIRGrammar::pragma) :language('PIR') {
+transform past (PIR::Grammar::pragma) :language('PIR') {
 		.local pmc past
 		
 	include_pragma:
-		$P0 = node['.include']
+		$P0 = node['include']
 		if null $P0 goto n_op_pragma
-		past = new 'PASM::Op'	
-		past.'init'('node'=>node, 'pasttype'=>'pirop', 'pirop'=>'.include')	
-		.return (past)
+		#past = new 'PAST::Op'	
+		#past.'init'('node'=>node, 'pasttype'=>'pirop', 'pirop'=>'.include')	
+		.return tree.'get'('past', $P0, 'PIR::Grammar::include')
+		#.return (past)
 	n_op_pragma:
+		$P0 = node['new_operators']
 		if null $P0 goto loadlib_pragma
-		past = new 'PASM::Op'	
+		past = new 'PAST::Op'	
 		past.'init'('node'=>node, 'pasttype'=>'pirop', 'pirop'=>'.include')	
 		.return (past)
 	loadlib_pragma:
+		$P0 = node['loadlib']
 		if null $P0 goto namespace_pragma
-		past = new 'PASM::Op'	
+		past = new 'PAST::Op'	
 		past.'init'('node'=>node, 'pasttype'=>'pirop', 'pirop'=>'.include')	
 		.return (past)
 	namespace_pragma:
+		$P0 = node['namespace']
 		if null $P0 goto hll_map_pragma
-		past = new 'PASM::Op'	
+		past = new 'PAST::Op'	
 		past.'init'('node'=>node, 'pasttype'=>'pirop', 'pirop'=>'.include')	
 		.return (past)
 	hll_map_pragma:
+		$P0 = node['hll_mapping']
 		if null $P0 goto hll_spec_pragma
-		past = new 'PASM::Op'	
+		past = new 'PAST::Op'	
 		past.'init'('node'=>node, 'pasttype'=>'pirop', 'pirop'=>'.include')	
 		.return (past)
 	hll_spec_pragma:
+		$P0 = node['hll_specifier']
 		if null $P0 goto source_pragma
-		past = new 'PASM::Op'	
+		past = new 'PAST::Op'	
 		past.'init'('node'=>node, 'pasttype'=>'pirop', 'pirop'=>'.include')	
 		.return (past)
 	source_pragma:
+		$P0 = node['source_info']
 		if null $P0 goto unknown
-		past = new 'PASM::Op'	
+		past = new 'PAST::Op'	
 		past.'init'('node'=>node, 'pasttype'=>'pirop', 'pirop'=>'.include')	
 		.return (past)
+	
 	unknown:
 		printerr "unknown pragma in tree transformation\n"
+		.local pmc iter, obj
+		iter = new .Iterator, node
+	loop:		
+		unless iter goto endloop
+		obj = shift iter
+		printerr obj	
+		printerr "\n"
+		goto loop
+	endloop:	
+		
 		end
 	
 }
 
-transform past (PIRGrammar::emit) :language('PIR') {
+transform past (PIR::Grammar::include) :language('PIR') {
+		.local pmc past
+		
+		.local pmc strn, strp
+		strn = node['string_constant']
+		strp = tree.'get'('past', strn, 'PIR::Grammar::string_constant')
+				
+		past = new 'PAST::Op'
+		past.'init'('node'=>node, 'pasttype'=>'inline', 'inline'=>".include %0")
+		past.'push'(strp)
+		.return (past)
+}
+
+transform past (PIR::Grammar::emit) :language('PIR') {
 		.local pmc past, startop, endop
 		past = new 'PAST::Block'
 		past.'init'('node'=>node)
@@ -193,11 +224,11 @@
 }
 
 
-# past (PIRGrammar::body)
+# past (PIR::Grammar::body)
 #
 # Store each of the instructions in a body node in a PAST::Stmts node.
 #
-transform past (PIRGrammar::body) :language('PIR') {		
+transform past (PIR::Grammar::body) :language('PIR') {		
     .local pmc past
     past = new 'PAST::Stmts'
     past.'init'('node'=>node)		
@@ -212,7 +243,7 @@
   iter_param_loop:
   	unless iter goto iter_param_end
   	cnode = shift iter
-    cpast = tree.'get'('past', cnode, 'PIRGrammar::param_decl')
+    cpast = tree.'get'('past', cnode, 'PIR::Grammar::param_decl')
     past.'push'(cpast)
     goto iter_param_loop
   iter_param_end:  
@@ -225,58 +256,68 @@
     unless iter goto iter_instr_end
     
     cnode = shift iter
-    cpast = tree.'get'('past', cnode, 'PIRGrammar::labeled_pir_instr')
+    cpast = tree.'get'('past', cnode, 'PIR::Grammar::labeled_pir_instr')
     past.'push'(cpast)
     goto iter_instr_loop
   iter_instr_end:
     .return (past)	
 }
 
-transform past (PIRGrammar::param_decl) :language('PIR') {
-		.local pmc past, name
-		past = new 'PAST::Var'
-		name = node['id']
-		unless null name goto done			
-		name = node['reg']		
-	done:
+transform past (PIR::Grammar::param_decl) :language('PIR') {
+		.local pmc past
+		past = new 'PAST::Op'
 		
-		past.'init'('node'=>node, 'scope'=>'parameter', 'name'=>name)	
+		$P0 = node['id']		
+		if null $P0 goto get_reg
+		.local pmc idpast, typepast, typenode
+		idpast = tree.'get'('past', $P0, 'PIR::Grammar::id')
+		typenode = node['type']
+		typepast = tree.'get'('past', typenode, 'PIR::Grammar::type')
+		
+		past.'init'('node'=>node, 'pasttype'=>'inline', 'inline'=>".param %0 %1")	
+		past.'push'(typepast)
+		past.'push'(idpast)
+		goto done
+		
+	get_reg:		
+		.local pmc regnode, regpast
+		regnode = node['reg']		
+		regpast = tree.'get'('past', regnode, 'PIR::Grammar::reg')		
+		past.'init'('node'=>node, 'pasttype'=>'inline', 'inline'=>".param %0")	
+		past.'push'(regpast)
+		
+	done:					
 		.return (past)
 }
 
   
-transform past (PIRGrammar::local_decl) :language('PIR') {
+transform past (PIR::Grammar::local_decl) :language('PIR') {
 		.local pmc past, cnode
 		past = new 'PAST::Op'
 		$P0 = node['type']
-		cnode = tree.'get'('past', $P0, 'PIRGrammar::type')
+		cnode = tree.'get'('past', $P0, 'PIR::Grammar::type')
 		past.'push'(cnode)
 		past.'init'('node'=>node, 'pasttype'=>'pirop', 'pirop'=>'.local')
 		.return (past)	
 }
 
-transform past (PIRGrammar::type) :language('PIR') {
-		.local pmc past
-		past = new 'PAST::Val'				
-	 	past.'init'('node'=>node, 'vtype'=>'.String', 'ctype'=>'s')
-		.return (past)
-}
 
-transform past (PIRGrammar::lexical_decl) :language('PIR') {
+
+transform past (PIR::Grammar::lexical_decl) :language('PIR') {
 		.local pmc past
 		past = new 'PAST::Op'
 		past.'init'('node'=>node, 'pasttype'=>'pirop', 'pirop'=>'.lex')
 		.return (past)	
 }
 
-transform past (PIRGrammar::const_def) :language('PIR') {
+transform past (PIR::Grammar::const_def) :language('PIR') {
 		.local pmc past
 		past = new 'PAST::Op'
 		past.'init'('node'=>node, 'pasttype'=>'pirop', 'pirop'=>'.const')
 		.return (past)	
 }
 
-transform past (PIRGrammar::assignment_stat) :language('PIR') {
+transform past (PIR::Grammar::assignment_stat) :language('PIR') {
 		.local pmc past, lhs
 		past = new 'PAST::Var'
 		lhs = node['target']
@@ -287,21 +328,21 @@
 	others:
 }
 
-transform past (PIRGrammar::open_namespace) :language('PIR') {
+transform past (PIR::Grammar::open_namespace) :language('PIR') {
 		.local pmc past	
 		past = new 'PAST::Op'	
 		past.'init'('node'=>node, 'pasttype'=>'pirop', 'pirop'=>'.namespace')		
 		.return (past)
 }
 
-transform past (PIRGrammar::close_namespace) :language('PIR') {
+transform past (PIR::Grammar::close_namespace) :language('PIR') {
 		.local pmc past
 		past = new 'PAST::Op'
 		past.'init'('node'=>node, 'pasttype'=>'pirop', 'pirop'=>'.endnamespace')	
 		.return (past)
 }
   
-transform past (PIRGrammar::return_stat) :language('PIR') {
+transform past (PIR::Grammar::return_stat) :language('PIR') {
 		.local pmc past, begin_ret, end_ret
 		past = new 'PAST::Stmts'
 		
@@ -315,7 +356,7 @@
 		.return (past)	
 }
 
-transform past (PIRGrammar::sub_invocation) :language('PIR') {
+transform past (PIR::Grammar::sub_invocation) :language('PIR') {
 		.local pmc past, op_begin, op_call, op_end
 		past = new 'PAST::Stmts'
 		op_begin = new 'PAST::Op'
@@ -334,18 +375,18 @@
 	
 }
 
-transform past (PIRGrammar::macro_invocation) :language('PIR') {
+transform past (PIR::Grammar::macro_invocation) :language('PIR') {
 	
 }
 
-transform past (PIRGrammar::globalconst_def) :language('PIR') {
+transform past (PIR::Grammar::globalconst_def) :language('PIR') {
 		.local pmc past
 		past = new 'PAST::Op'
 		past.'init'('node'=>node, 'pasttype'=>'pirop', 'pirop'=>'.globalconst')
 		.return (past)
 }
 
-transform past (PIRGrammar::conditional_stat) :language('PIR') {
+transform past (PIR::Grammar::conditional_stat) :language('PIR') {
 		.local pmc past, expr, exprnode, gotolabel, block
 		expr = node['conditional_expr']
 		gotolabel = node['id']
@@ -363,26 +404,26 @@
 	
 		# now handle common stuff
 	do_body:	
-		#exprnode = tree.'get'('past', expr, 'PIRGrammar::conditional_expr')
+		#exprnode = tree.'get'('past', expr, 'PIR::Grammar::conditional_expr')
 		#past.'push'(exprnode)
 		#past.'push'(gotolabel)
 		.return (past)		
 }
 
-transform past (PIRGrammar::conditional_expr) :language('PIR') {
+transform past (PIR::Grammar::conditional_expr) :language('PIR') {
 		.local pmc past
 		past = node['simple_expr']
 		.return (past)
 }
 
-transform past (PIRGrammar::jump_stat) :language('PIR') {
+transform past (PIR::Grammar::jump_stat) :language('PIR') {
 	.local pmc past
 	past = new 'PAST::Op'
 	past.'init'('node'=>node, 'pasttype'=>'pirop', 'pirop'=>'goto')	
 	.return (past)
 }
 
-transform past (PIRGrammar::source_info) :language('PIR') {
+transform past (PIR::Grammar::source_info) :language('PIR') {
 		.local pmc past
 		past = new 'PAST::Op'
 		past.'init'('node'=>node, 'pasttype'=>'pirop', 'pirop'=>'#line')
@@ -390,83 +431,83 @@
 }       
         
         
-transform past (PIRGrammar::instr) :language('PIR') {		
+transform past (PIR::Grammar::instr) :language('PIR') {		
 		$P0 = node['pir_instr']
 		if null $P0 goto pasm_instr
 	pir_instr:
-		.return tree.'get'('past', $P0, 'PIRGrammar::pir_instr')
+		.return tree.'get'('past', $P0, 'PIR::Grammar::pir_instr')
 	pasm_instr:	
 		$P0 = node['pasm_instr']
-		.return tree.'get'('past', $P0, 'PIRGrammar::pasm_instr')
+		.return tree.'get'('past', $P0, 'PIR::Grammar::pasm_instr')
 }
 
-transform past (PIRGrammar::labeled_pir_instr) :language('PIR') {
+transform past (PIR::Grammar::labeled_pir_instr) :language('PIR') {
 		$P0 = node['instr']
 		if null $P0 goto end
-		.return tree.'get'('past', $P0, 'PIRGrammar::instr')
+		.return tree.'get'('past', $P0, 'PIR::Grammar::instr')
 	end:
 }
 
 
-# past (PIRGrammar::pir_instr)
+# past (PIR::Grammar::pir_instr)
 #
 # Return the transformed tree of a PIR instruction.
 #
-transform past (PIRGrammar::pir_instr) :language('PIR') {
+transform past (PIR::Grammar::pir_instr) :language('PIR') {
 	local_decl:
 		$P0 = node['local_decl']
 		if null $P0 goto lexical_decl
-		.return tree.'get'('past', $P0, 'PIRGrammar::local_decl')
+		.return tree.'get'('past', $P0, 'PIR::Grammar::local_decl')
 	lexical_decl:
 		$P0 = node['lexical_decl']
 		if null $P0 goto const_def
-		.return tree.'get'('past', $P0, 'PIRGrammar::lexical_decl')
+		.return tree.'get'('past', $P0, 'PIR::Grammar::lexical_decl')
 	const_def:
 		$P0 = node['const_def']
 		if null $P0 goto globalconst_def
-		.return tree.'get'('past', $P0, 'PIRGrammar::const_def')	
+		.return tree.'get'('past', $P0, 'PIR::Grammar::const_def')	
 	globalconst_def:
 		$P0 = node['globalconst_def']
 		if null $P0 goto conditional_stat
-		.return tree.'get'('past', $P0, 'PIRGrammar::globalconst_def')	
+		.return tree.'get'('past', $P0, 'PIR::Grammar::globalconst_def')	
 	conditional_stat:	
 		$P0 = node['conditional_stat']
 		if null $P0 goto assignment_stat
-		.return tree.'get'('past', $P0, 'PIRGrammar::conditional_stat')	
+		.return tree.'get'('past', $P0, 'PIR::Grammar::conditional_stat')	
 	assignment_stat:
 		$P0 = node['assignment_stat']
 		if null $P0 goto open_namespace
-		.return tree.'get'('past', $P0, 'PIRGrammar::assignment_stat')
+		.return tree.'get'('past', $P0, 'PIR::Grammar::assignment_stat')
 	open_namespace:
 		$P0 = node['open_namespace']
 		if null $P0 goto close_namespace
-		.return tree.'get'('past', $P0, 'PIRGrammar::open_namespace')
+		.return tree.'get'('past', $P0, 'PIR::Grammar::open_namespace')
 	close_namespace:
 		$P0 = node['close_namespace']
 		if null $P0 goto return_stat
-		.return tree.'get'('past', $P0, 'PIRGrammar::close_namespace')	
+		.return tree.'get'('past', $P0, 'PIR::Grammar::close_namespace')	
 	return_stat:
 		$P0 = node['return_stat']
 		if null $P0 goto sub_invocation
-		.return tree.'get'('past', $P0, 'PIRGrammar::return_stat')		
+		.return tree.'get'('past', $P0, 'PIR::Grammar::return_stat')		
 	sub_invocation:
 		$P0 = node['sub_invocation']
 		if null $P0 goto macro_invocation
-		.return tree.'get'('past', $P0, 'PIRGrammar::sub_invocation')
+		.return tree.'get'('past', $P0, 'PIR::Grammar::sub_invocation')
 	macro_invocation:
 		$P0 = node['macro_invocation']
 		if null $P0 goto unknown
-		.return tree.'get'('past', $P0, 'PIRGrammar::macro_invocation')
+		.return tree.'get'('past', $P0, 'PIR::Grammar::macro_invocation')
 	unknown:
 		printerr "Error in Tree Transform!\n"
 }
 
 
-# past (PIRGrammar::pasm_instr)
+# past (PIR::Grammar::pasm_instr)
 #
 # Create a PAST::Op node that represents the PASM instruction
 #
-transform past (PIRGrammar::pasm_instr) :language('PIR') {
+transform past (PIR::Grammar::pasm_instr) :language('PIR') {
 	.local pmc past	
 	past = new 'PAST::Op'
 	# FIX: set the correct pirop
@@ -476,7 +517,7 @@
 
 
 
-transform past (PIRGrammar::simple_expr) :language('PIR') {   
+transform past (PIR::Grammar::simple_expr) :language('PIR') {   
 		.local pmc past
   int_constant:
    	$P0 = node['int_constant']
@@ -493,28 +534,41 @@
   string_constant:
   	$P0 = node['string_constant']
     if null $P0 goto target
-		.return tree.'get'('past', $P0, 'PIRGrammar::string_constant')
+		.return tree.'get'('past', $P0, 'PIR::Grammar::string_constant')
   target:    
     $P0 = node['target']
-    .return tree.'get'('past', $P0, 'PIRGrammar::target')     
+    .return tree.'get'('past', $P0, 'PIR::Grammar::target')     
 }
 
-transform past (PIRGrammar::target) :language('PIR') {
+transform past (PIR::Grammar::target) :language('PIR') {
 
 }
 
+transform past (PIR::Grammar::id) :language('PIR') {
+		.local pmc past	
+		past = new 'PAST::Val'
+		past.'init'('node'=>node, 'name'=>node, 'ctype'=>'~')
+		.return (past)
+}
 
-transform past (PIRGrammar::string_constant) :language('PIR') {
+transform past (PIR::Grammar::type) :language('PIR') {
+		.local pmc past
+		past = new 'PAST::Val'
+		past.'init'('node'=>node, 'name'=>node)
+		.return (past)
+}
+
+transform past (PIR::Grammar::string_constant) :language('PIR') {
 	stringsingle:
 		$P0 = node['stringsingle']
 		if null $P0 goto stringdouble
-		.return tree.'get'('past', $P0, 'PIRGrammar::stringsingle')
+		.return tree.'get'('past', $P0, 'PIR::Grammar::stringsingle')
  	stringdouble:
  		$P0 = node['stringsingle']		
-		.return tree.'get'('past', $P0, 'PIRGrammar::stringsingle')
+		.return tree.'get'('past', $P0, 'PIR::Grammar::stringdouble')
 }
 
-transform past (PIRGrammar::stringdouble) :language('PIR') {
+transform past (PIR::Grammar::stringdouble) :language('PIR') {
     .local pmc result
     result = new 'PAST::Val'
     
@@ -535,20 +589,19 @@
     .return (result)
 }
 
-transform past (PIRGrammar::stringsingle) :language('PIR') {
-    .local pmc result
+transform past (PIR::Grammar::stringsingle) :language('PIR') {
+    .local pmc result  		
     result = new 'PAST::Val'
-
+ 
     .local string value
     # Check if this is a string match
     $I0 = defined node["PGE::Text::bracketed"]
-    if $I0 goto bracketed_value
+    if $I0 goto bracketed_value 
     value = node
     goto no_bracketed_value
   bracketed_value:
-    value = node["PGE::Text::bracketed"]
-  no_bracketed_value:
-
-    result.'init'('node'=>node, 'vtype'=>'.String', 'name'=>value)
-    .return (result)
+    value = node["PGE::Text::bracketed"] 		
+  no_bracketed_value: 
+    result.'init'('node'=>node, 'vtype'=>'.String', 'name'=>value) 
+ 		.return (result)
 }
Index: languages/PIR/lib/pasm.pg
===================================================================
--- languages/PIR/lib/pasm.pg	(revision 17008)
+++ languages/PIR/lib/pasm.pg	(working copy)
@@ -1,4 +1,4 @@
-grammar PIRGrammar;
+grammar PIR::Grammar;
 
 
 #
Index: languages/PIR/lib/pasm_core.pg
===================================================================
--- languages/PIR/lib/pasm_core.pg	(revision 17008)
+++ languages/PIR/lib/pasm_core.pg	(working copy)
@@ -1,4 +1,4 @@
-grammar PIRGrammar;
+grammar PIR::Grammar;
   
   
 rule core_op {
Index: languages/PIR/lib/pasm_instr.pg
===================================================================
--- languages/PIR/lib/pasm_instr.pg	(revision 17008)
+++ languages/PIR/lib/pasm_instr.pg	(working copy)
@@ -1,4 +1,4 @@
-grammar PIRGrammar;
+grammar PIR::Grammar;
 
 # This file lists all PASM instructions, the rule
 # <id> uses this rule as an assertion, so that no
Index: languages/PIR/lib/pasm_io.pg
===================================================================
--- languages/PIR/lib/pasm_io.pg	(revision 17008)
+++ languages/PIR/lib/pasm_io.pg	(working copy)
@@ -1,4 +1,4 @@
-grammar PIRGrammar;
+grammar PIR::Grammar;
 
 rule io_op {
   #                   
Index: languages/PIR/lib/pasm_pmc.pg
===================================================================
--- languages/PIR/lib/pasm_pmc.pg	(revision 17008)
+++ languages/PIR/lib/pasm_pmc.pg	(working copy)
@@ -1,4 +1,4 @@
-grammar PIRGrammar;
+grammar PIR::Grammar;
 
 rule pmc_op { 
   callmethodcc        <arg_hack> #
Index: languages/PIR/lib/pir.pg
===================================================================
--- languages/PIR/lib/pir.pg	(revision 17008)
+++ languages/PIR/lib/pir.pg	(working copy)
@@ -1,4 +1,4 @@
-grammar PIRGrammar;
+grammar PIR::Grammar;
 
 # TO DO:
 # 1. fix Heredocs parsing
Index: languages/PIR/pirc.pir
===================================================================
--- languages/PIR/pirc.pir	(revision 17008)
+++ languages/PIR/pirc.pir	(working copy)
@@ -16,7 +16,7 @@
 
     $P0 = new [ 'HLLCompiler' ]
     $P0.'language'('languages-PIR')
-    $P0.'parsegrammar'('PIRGrammar')
+    $P0.'parsegrammar'('PIR::Grammar')
     $P0.'astgrammar'('ASTGrammar')
 
 .end
@@ -136,14 +136,14 @@
 .end
 
 
-.namespace [ 'PIRGrammar' ]
+.namespace [ 'PIR::Grammar' ]
 
 .sub _load :load :init
     load_bytecode 'PGE.pbc'
     load_bytecode 'PGE/Text.pbc'
 
     $P0 = getclass 'PGE::Grammar'
-    $P1 = subclass $P0, 'PIRGrammar'
+    $P1 = subclass $P0, 'PIR::Grammar'
 
     # The parser is split up into several files
     # for faster edit-compile-test cycles.
@@ -158,7 +158,37 @@
     load_bytecode 'languages/PIR/lib/pasm_core_gen.pbc'
 .end
 
+.sub parenthesized_args_2
+	.param pmc mob	
+	.param pmc adverbs :slurpy :named
+	.local pmc match
+	.local string target
+	.local int cpos, mfrom, mpos	
+	
+	(mob, target, mfrom, mpos) = mob.'newfrom'(mob)    
+	printerr "Target: ["
+	printerr target
+	printerr "]"
+	printerr "\n"
+	$S0 = mob.'text'()
+	printerr $S0
+	mob.'next'()
+	$S0 = mob.'text'()
+	printerr $S0      
+ 
+	#
+	#printerr match
+	#printerr "\n"
+	#
+	#printerr cpos
+	#printerr "\n"
+	#printerr target
+	#printerr "\n"
+	.return(mob)
+.end
 
+
+
 .sub warning
 	  .param pmc self
 	  .param string message
Index: languages/PIR/PROPOSALS
===================================================================
--- languages/PIR/PROPOSALS	(revision 17008)
+++ languages/PIR/PROPOSALS	(working copy)
@@ -99,26 +99,9 @@
 	 which line is being parsed/assembled. It'd be more consistent with respect to
 	 other PIR directives ('.include' etc.). The current spelling seems rather arbitrary.
 
-8. Parameter and argument flags
 
-	 :named without a parameter does not seem to work - ever.
-	 
-	 Proposal: require :named to take a parenthesized identifier.
-	 
-9. .lex + .local
 
-	 When declaring a .lexical like:
-	 
-	 .lex "a", b
-	 
-	 one also needs the declaration:
-	 
-	 .local pmc b
-	 
-	 Proposal: remove the need for .local declaration. Parsing the .lex declaration
-	 expands to including the .local declaration.
 
-
 NEW FEATURE PROPOSALS GO HERE:	 
 	 
 	 
Index: languages/PIR/t/assign.t
===================================================================
--- languages/PIR/t/assign.t	(revision 17008)
+++ languages/PIR/t/assign.t	(working copy)
@@ -14,7 +14,7 @@
 	d = e
 .end
 CODE
-"parse" => PMC 'PIRGrammar' { ... }
+"parse" => PMC 'PIR::Grammar' { ... }
 Parse successful!
 OUT
 
@@ -25,7 +25,7 @@
 	c = 0x10	
 .end
 CODE
-"parse" => PMC 'PIRGrammar' { ... }
+"parse" => PMC 'PIR::Grammar' { ... }
 Parse successful!
 OUT
 
@@ -37,7 +37,7 @@
 	h = x[e]	
 .end
 CODE
-"parse" => PMC 'PIRGrammar' { ... }
+"parse" => PMC 'PIR::Grammar' { ... }
 Parse successful!
 OUT
 
@@ -49,7 +49,7 @@
 	x[e]				= f
 .end
 CODE
-"parse" => PMC 'PIRGrammar' { ... }
+"parse" => PMC 'PIR::Grammar' { ... }
 Parse successful!
 OUT
 
@@ -74,7 +74,7 @@
 	a = ~ x
 .end
 CODE
-"parse" => PMC 'PIRGrammar' { ... }
+"parse" => PMC 'PIR::Grammar' { ... }
 Parse successful!
 OUT
 
@@ -92,7 +92,7 @@
 	x >>>= 1
 .end
 CODE
-"parse" => PMC 'PIRGrammar' { ... }
+"parse" => PMC 'PIR::Grammar' { ... }
 Parse successful!
 OUT
 
@@ -106,7 +106,7 @@
 	s = utf8:unicode:"Hello World"
 .end
 CODE
-"parse" => PMC 'PIRGrammar' { ... }
+"parse" => PMC 'PIR::Grammar' { ... }
 Parse successful!
 OUT
 
Index: languages/PIR/t/branch.t
===================================================================
--- languages/PIR/t/branch.t	(revision 17008)
+++ languages/PIR/t/branch.t	(working copy)
@@ -24,7 +24,7 @@
 
 .end
 CODE
-"parse" => PMC 'PIRGrammar' { ... }
+"parse" => PMC 'PIR::Grammar' { ... }
 Parse successful!
 OUT
 
@@ -47,7 +47,7 @@
 
 .end
 CODE
-"parse" => PMC 'PIRGrammar' { ... }
+"parse" => PMC 'PIR::Grammar' { ... }
 Parse successful!
 OUT
 
@@ -59,6 +59,6 @@
 
 .end
 CODE
-"parse" => PMC 'PIRGrammar' { ... }
+"parse" => PMC 'PIR::Grammar' { ... }
 Parse successful!
 OUT
Index: languages/PIR/t/call.t
===================================================================
--- languages/PIR/t/call.t	(revision 17008)
+++ languages/PIR/t/call.t	(working copy)
@@ -31,7 +31,7 @@
 .end
 
 CODE
-"parse" => PMC 'PIRGrammar' { ... }
+"parse" => PMC 'PIR::Grammar' { ... }
 Parse successful!
 OUT
 
@@ -49,7 +49,7 @@
 .end
 
 CODE
-"parse" => PMC 'PIRGrammar' { ... }
+"parse" => PMC 'PIR::Grammar' { ... }
 Parse successful!
 OUT
 
@@ -68,7 +68,7 @@
 .end
 
 CODE
-"parse" => PMC 'PIRGrammar' { ... }
+"parse" => PMC 'PIR::Grammar' { ... }
 Parse successful!
 OUT
 
@@ -81,7 +81,7 @@
 
 
 CODE
-"parse" => PMC 'PIRGrammar' { ... }
+"parse" => PMC 'PIR::Grammar' { ... }
 Parse successful!
 OUT
 
@@ -96,7 +96,7 @@
 .end
 
 CODE
-"parse" => PMC 'PIRGrammar' { ... }
+"parse" => PMC 'PIR::Grammar' { ... }
 Parse successful!
 OUT
 
@@ -116,7 +116,7 @@
 .end
 
 CODE
-"parse" => PMC 'PIRGrammar' { ... }
+"parse" => PMC 'PIR::Grammar' { ... }
 Parse successful!
 OUT
 
@@ -135,7 +135,7 @@
 .end
 
 CODE
-"parse" => PMC 'PIRGrammar' { ... }
+"parse" => PMC 'PIR::Grammar' { ... }
 Parse successful!
 OUT
 
@@ -149,7 +149,7 @@
 .end
 
 CODE
-"parse" => PMC 'PIRGrammar' { ... }
+"parse" => PMC 'PIR::Grammar' { ... }
 Parse successful!
 OUT
 
@@ -164,7 +164,7 @@
 .end
 
 CODE
-"parse" => PMC 'PIRGrammar' { ... }
+"parse" => PMC 'PIR::Grammar' { ... }
 Parse successful!
 OUT
 
@@ -189,7 +189,7 @@
 .end
 
 CODE
-"parse" => PMC 'PIRGrammar' { ... }
+"parse" => PMC 'PIR::Grammar' { ... }
 Parse successful!
 OUT
 
Index: languages/PIR/t/compunit.t
===================================================================
--- languages/PIR/t/compunit.t	(revision 17008)
+++ languages/PIR/t/compunit.t	(working copy)
@@ -13,7 +13,7 @@
 .global g_Y
 
 CODE
-"parse" => PMC 'PIRGrammar' { ... }
+"parse" => PMC 'PIR::Grammar' { ... }
 Parse successful!
 OUT
 
@@ -28,7 +28,7 @@
 .const pmc pConst = "is a PMC const a string?"
 
 CODE
-"parse" => PMC 'PIRGrammar' { ... }
+"parse" => PMC 'PIR::Grammar' { ... }
 Parse successful!
 OUT
 
@@ -38,7 +38,7 @@
 .endm
 
 CODE
-"parse" => PMC 'PIRGrammar' { ... }
+"parse" => PMC 'PIR::Grammar' { ... }
 Parse successful!
 OUT
 
@@ -48,7 +48,7 @@
 .endm
 
 CODE
-"parse" => PMC 'PIRGrammar' { ... }
+"parse" => PMC 'PIR::Grammar' { ... }
 Parse successful!
 OUT
 
@@ -58,7 +58,7 @@
 .include "Hitchhikers.pir"
 
 CODE
-"parse" => PMC 'PIRGrammar' { ... }
+"parse" => PMC 'PIR::Grammar' { ... }
 Parse successful!
 OUT
 
@@ -67,7 +67,7 @@
 .loadlib "Hitchhikers"
 
 CODE
-"parse" => PMC 'PIRGrammar' { ... }
+"parse" => PMC 'PIR::Grammar' { ... }
 Parse successful!
 OUT
 
@@ -76,7 +76,7 @@
 .pragma n_operators 1
 
 CODE
-"parse" => PMC 'PIRGrammar' { ... }
+"parse" => PMC 'PIR::Grammar' { ... }
 Parse successful!
 OUT
 
@@ -87,7 +87,7 @@
 .namespace [""]
 
 CODE
-"parse" => PMC 'PIRGrammar' { ... }
+"parse" => PMC 'PIR::Grammar' { ... }
 Parse successful!
 OUT
 
@@ -98,7 +98,7 @@
 .namespace ["PIR"]
 
 CODE
-"parse" => PMC 'PIRGrammar' { ... }
+"parse" => PMC 'PIR::Grammar' { ... }
 Parse successful!
 OUT
 
@@ -109,7 +109,7 @@
 .namespace ["PIR";"Grammar"]
 
 CODE
-"parse" => PMC 'PIRGrammar' { ... }
+"parse" => PMC 'PIR::Grammar' { ... }
 Parse successful!
 OUT
 
@@ -118,7 +118,7 @@
 .namespace
 
 CODE
-"parse" => PMC 'PIRGrammar' { ... }
+"parse" => PMC 'PIR::Grammar' { ... }
 Parse successful!
 OUT
 
@@ -128,7 +128,7 @@
 .HLL "PIR", "PIRlib"
 
 CODE
-"parse" => PMC 'PIRGrammar' { ... }
+"parse" => PMC 'PIR::Grammar' { ... }
 Parse successful!
 OUT
 
@@ -137,7 +137,7 @@
 .HLL_map 42, 10
 
 CODE
-"parse" => PMC 'PIRGrammar' { ... }
+"parse" => PMC 'PIR::Grammar' { ... }
 Parse successful!
 OUT
 
@@ -148,7 +148,7 @@
 .line 42, "Hitchhikers.pir"
 
 CODE
-"parse" => PMC 'PIRGrammar' { ... }
+"parse" => PMC 'PIR::Grammar' { ... }
 Parse successful!
 OUT
 
@@ -160,7 +160,7 @@
 .eom
 
 CODE
-"parse" => PMC 'PIRGrammar' { ... }
+"parse" => PMC 'PIR::Grammar' { ... }
 Parse successful!
 OUT
 
Index: languages/PIR/t/exotic.t
===================================================================
--- languages/PIR/t/exotic.t	(revision 17008)
+++ languages/PIR/t/exotic.t	(working copy)
@@ -21,7 +21,7 @@
 
 .end
 CODE
-"parse" => PMC 'PIRGrammar' { ... }
+"parse" => PMC 'PIR::Grammar' { ... }
 Parse successful!
 OUT
 
@@ -33,7 +33,7 @@
 .end
 
 CODE
-"parse" => PMC 'PIRGrammar' { ... }
+"parse" => PMC 'PIR::Grammar' { ... }
 Parse successful!
 OUT
 
@@ -43,7 +43,7 @@
 
 .end
 CODE
-"parse" => PMC 'PIRGrammar' { ... }
+"parse" => PMC 'PIR::Grammar' { ... }
 Parse successful!
 OUT
 
@@ -53,6 +53,6 @@
 
 .end
 CODE
-"parse" => PMC 'PIRGrammar' { ... }
+"parse" => PMC 'PIR::Grammar' { ... }
 Parse successful!
 OUT
Index: languages/PIR/t/pirstat.t
===================================================================
--- languages/PIR/t/pirstat.t	(revision 17008)
+++ languages/PIR/t/pirstat.t	(working copy)
@@ -15,7 +15,7 @@
 .end
 
 CODE
-"parse" => PMC 'PIRGrammar' { ... }
+"parse" => PMC 'PIR::Grammar' { ... }
 Parse successful!
 OUT
 
@@ -29,7 +29,7 @@
 .end
 
 CODE
-"parse" => PMC 'PIRGrammar' { ... }
+"parse" => PMC 'PIR::Grammar' { ... }
 Parse successful!
 OUT
 
@@ -42,7 +42,7 @@
 .end
 
 CODE
-"parse" => PMC 'PIRGrammar' { ... }
+"parse" => PMC 'PIR::Grammar' { ... }
 Parse successful!
 OUT
 
Index: languages/PIR/t/sub.t
===================================================================
--- languages/PIR/t/sub.t	(revision 17008)
+++ languages/PIR/t/sub.t	(working copy)
@@ -10,7 +10,7 @@
 .sub main			
 .end
 CODE
-"parse" => PMC 'PIRGrammar' { ... }
+"parse" => PMC 'PIR::Grammar' { ... }
 Parse successful!
 OUT
 
@@ -18,7 +18,7 @@
 .sub main :main	
 .end
 CODE
-"parse" => PMC 'PIRGrammar' { ... }
+"parse" => PMC 'PIR::Grammar' { ... }
 Parse successful!
 OUT
 
@@ -26,7 +26,7 @@
 .sub main :load
 .end
 CODE
-"parse" => PMC 'PIRGrammar' { ... }
+"parse" => PMC 'PIR::Grammar' { ... }
 Parse successful!
 OUT
 
@@ -34,7 +34,7 @@
 .sub main :init
 .end
 CODE
-"parse" => PMC 'PIRGrammar' { ... }
+"parse" => PMC 'PIR::Grammar' { ... }
 Parse successful!
 OUT
 
@@ -42,7 +42,7 @@
 .sub main :immediate
 .end
 CODE
-"parse" => PMC 'PIRGrammar' { ... }
+"parse" => PMC 'PIR::Grammar' { ... }
 Parse successful!
 OUT
 
@@ -50,7 +50,7 @@
 .sub main :lex
 .end
 CODE
-"parse" => PMC 'PIRGrammar' { ... }
+"parse" => PMC 'PIR::Grammar' { ... }
 Parse successful!
 OUT
 
@@ -58,7 +58,7 @@
 .sub main :anon
 .end
 CODE
-"parse" => PMC 'PIRGrammar' { ... }
+"parse" => PMC 'PIR::Grammar' { ... }
 Parse successful!
 OUT
 
@@ -74,7 +74,7 @@
 .end
 
 CODE
-"parse" => PMC 'PIRGrammar' { ... }
+"parse" => PMC 'PIR::Grammar' { ... }
 Parse successful!
 OUT
 
@@ -82,7 +82,7 @@
 .sub main :multi(int)
 .end
 CODE
-"parse" => PMC 'PIRGrammar' { ... }
+"parse" => PMC 'PIR::Grammar' { ... }
 Parse successful!
 OUT
 
@@ -90,7 +90,7 @@
 .sub main :multi(int, num)
 .end
 CODE
-"parse" => PMC 'PIRGrammar' { ... }
+"parse" => PMC 'PIR::Grammar' { ... }
 Parse successful!
 OUT
 
@@ -98,7 +98,7 @@
 .sub main :multi(_, int, num, string, pmc)
 .end
 CODE
-"parse" => PMC 'PIRGrammar' { ... }
+"parse" => PMC 'PIR::Grammar' { ... }
 Parse successful!
 OUT
 
@@ -106,7 +106,7 @@
 .sub main :multi(int, _, num, string, _)
 .end
 CODE
-"parse" => PMC 'PIRGrammar' { ... }
+"parse" => PMC 'PIR::Grammar' { ... }
 Parse successful!
 OUT
 
@@ -114,7 +114,7 @@
 .sub main :multi(_)
 .end
 CODE
-"parse" => PMC 'PIRGrammar' { ... }
+"parse" => PMC 'PIR::Grammar' { ... }
 Parse successful!
 OUT
 
@@ -122,7 +122,7 @@
 .sub main :multi(int, int, int, int)
 .end
 CODE
-"parse" => PMC 'PIRGrammar' { ... }
+"parse" => PMC 'PIR::Grammar' { ... }
 Parse successful!
 OUT
 
@@ -130,7 +130,7 @@
 .sub main :multi(_, _, _, _, _, _)
 .end
 CODE
-"parse" => PMC 'PIRGrammar' { ... }
+"parse" => PMC 'PIR::Grammar' { ... }
 Parse successful!
 OUT
 
@@ -138,7 +138,7 @@
 .sub main :vtable('__set_int')
 .end
 CODE
-"parse" => PMC 'PIRGrammar' { ... }
+"parse" => PMC 'PIR::Grammar' { ... }
 Parse successful!
 OUT
 
@@ -146,7 +146,7 @@
 .sub main :main :load :immediate :init
 .end
 CODE
-"parse" => PMC 'PIRGrammar' { ... }
+"parse" => PMC 'PIR::Grammar' { ... }
 Parse successful!
 OUT
 
@@ -156,7 +156,7 @@
 .sub main :main, :load, :immediate, :init
 .end
 CODE
-"parse" => PMC 'PIRGrammar' { ... }
+"parse" => PMC 'PIR::Grammar' { ... }
 Parse successful!
 OUT
 
@@ -169,7 +169,7 @@
 	.param object oargs
 .end
 CODE
-"parse" => PMC 'PIRGrammar' { ... }
+"parse" => PMC 'PIR::Grammar' { ... }
 Parse successful!
 OUT
 
@@ -181,7 +181,7 @@
 	.param int arg3  :opt_flag
 .end
 CODE
-"parse" => PMC 'PIRGrammar' { ... }
+"parse" => PMC 'PIR::Grammar' { ... }
 Parse successful!
 OUT
 
@@ -195,7 +195,7 @@
   .param pmc kw :slurpy :named    # slurpy hash
 .end
 CODE
-"parse" => PMC 'PIRGrammar' { ... }
+"parse" => PMC 'PIR::Grammar' { ... }
 Parse successful!
 OUT
 
@@ -209,7 +209,7 @@
 
 
 CODE
-"parse" => PMC 'PIRGrammar' { ... }
+"parse" => PMC 'PIR::Grammar' { ... }
 Parse successful!
 OUT
 
Index: languages/PIR/t/sym.t
===================================================================
--- languages/PIR/t/sym.t	(revision 17008)
+++ languages/PIR/t/sym.t	(working copy)
@@ -16,7 +16,7 @@
 .end
 
 CODE
-"parse" => PMC 'PIRGrammar' { ... }
+"parse" => PMC 'PIR::Grammar' { ... }
 Parse successful!
 OUT
 
@@ -30,7 +30,7 @@
 .end
 
 CODE
-"parse" => PMC 'PIRGrammar' { ... }
+"parse" => PMC 'PIR::Grammar' { ... }
 Parse successful!
 OUT
 
@@ -44,7 +44,7 @@
 .end
 
 CODE
-"parse" => PMC 'PIRGrammar' { ... }
+"parse" => PMC 'PIR::Grammar' { ... }
 Parse successful!
 OUT
 
@@ -57,7 +57,7 @@
 .end
 
 CODE
-"parse" => PMC 'PIRGrammar' { ... }
+"parse" => PMC 'PIR::Grammar' { ... }
 Parse successful!
 OUT
 
@@ -71,7 +71,7 @@
 .end
 
 CODE
-"parse" => PMC 'PIRGrammar' { ... }
+"parse" => PMC 'PIR::Grammar' { ... }
 Parse successful!
 OUT
 
Index: languages/PIR/t/whitespace.t
===================================================================
--- languages/PIR/t/whitespace.t	(revision 17008)
+++ languages/PIR/t/whitespace.t	(working copy)
@@ -13,7 +13,7 @@
 .sub main			
 .end
 CODE
-"parse" => PMC 'PIRGrammar' { ... }
+"parse" => PMC 'PIR::Grammar' { ... }
 Parse successful!
 OUT
 
@@ -24,7 +24,7 @@
 # comments after code
 #
 CODE
-"parse" => PMC 'PIRGrammar' { ... }
+"parse" => PMC 'PIR::Grammar' { ... }
 Parse successful!
 OUT
 
@@ -35,7 +35,7 @@
 #
 .end
 CODE
-"parse" => PMC 'PIRGrammar' { ... }
+"parse" => PMC 'PIR::Grammar' { ... }
 Parse successful!
 OUT
 
@@ -48,7 +48,7 @@
 	
 .end
 CODE
-"parse" => PMC 'PIRGrammar' { ... }
+"parse" => PMC 'PIR::Grammar' { ... }
 Parse successful!
 OUT
 
@@ -163,7 +163,7 @@
 .sub main			
 .end
 CODE
-"parse" => PMC 'PIRGrammar' { ... }
+"parse" => PMC 'PIR::Grammar' { ... }
 Parse successful!
 OUT
 
@@ -346,7 +346,7 @@
 
 .end
 CODE
-"parse" => PMC 'PIRGrammar' { ... }
+"parse" => PMC 'PIR::Grammar' { ... }
 Parse successful!
 OUT
 
@@ -460,7 +460,7 @@
 
 
 CODE
-"parse" => PMC 'PIRGrammar' { ... }
+"parse" => PMC 'PIR::Grammar' { ... }
 Parse successful!
 OUT
 
@@ -486,7 +486,7 @@
 .sub main			
 .end
 CODE
-"parse" => PMC 'PIRGrammar' { ... }
+"parse" => PMC 'PIR::Grammar' { ... }
 Parse successful!
 OUT
 
@@ -502,7 +502,7 @@
 =cut
 .end
 CODE
-"parse" => PMC 'PIRGrammar' { ... }
+"parse" => PMC 'PIR::Grammar' { ... }
 Parse successful!
 OUT
 
@@ -518,7 +518,7 @@
 =cut
 
 CODE
-"parse" => PMC 'PIRGrammar' { ... }
+"parse" => PMC 'PIR::Grammar' { ... }
 Parse successful!
 OUT
 

Reply via email to