hi

attached a patch for languages/PIR fixing:

* added optional "utf8:" encoding specifier (according to docs/imcc/syntax.pod)
* fixed support for binary and hex. numbers
* added test for these changes.

regards,
klaas-jan
Index: languages/PIR/lib/pir.pg
===================================================================
--- languages/PIR/lib/pir.pg	(revision 16923)
+++ languages/PIR/lib/pir.pg	(working copy)
@@ -703,19 +703,17 @@
 #
 
 token int_constant {
-    [-]? \d+
-  | <binary_constant>
+    <binary_constant>
   | <hex_constant>
+  | [-]? \d+
 }
 
-# FIXTHIS
-regex hex_constant {
-  \d+
+token hex_constant {
+  0x\d+
 }
 
-# FIXTHIS
-regex binary_constant {
-  \d+
+token binary_constant {
+  0b\d+
 }
 
 token float_constant {
@@ -724,10 +722,13 @@
 
 
 rule string_constant {
-  <charset_specifier>? 
+	[ <encoding_specifier>? <charset_specifier> ]?
   [ <stringdouble> | <stringsingle> ]
 }
 
+rule encoding_specifier {
+	<'utf8:'>
+}
 
 rule charset_specifier {
   [ <'ascii:'> | <'binary:'> | <'unicode:'> | <'iso-8859-1:'> ]  
Index: languages/PIR/t/assign.t
===================================================================
--- languages/PIR/t/assign.t	(revision 16923)
+++ languages/PIR/t/assign.t	(working copy)
@@ -3,7 +3,7 @@
 use strict;
 use warnings;
 use lib qw(t . lib ../lib ../../lib ../../../lib);
-use Parrot::Test tests => 6;
+use Parrot::Test tests => 7;
 use Test::More;
 
 language_output_is( 'PIR_PGE', <<'CODE', <<'OUT', 'simple assignments' );
@@ -18,6 +18,16 @@
 Parse successful!
 OUT
 
+language_output_is( 'PIR_PGE', <<'CODE', <<'OUT', 'int/hex/bin' );
+.sub main			
+	a = 10
+	b = 0b10
+	c = 0x10	
+.end
+CODE
+"parse" => PMC 'PIRGrammar' { ... }
+Parse successful!
+OUT
 
 language_output_is( 'PIR_PGE', <<'CODE', <<'OUT', 'get keyed assignments' );
 .sub main			
@@ -93,6 +103,7 @@
 	s = binary:"Hello WOrld"
 	s = unicode:"Hello world"
 	s = iso-8859-1:"Hello world"		 
+	s = utf8:unicode:"Hello World"
 .end
 CODE
 "parse" => PMC 'PIRGrammar' { ... }

Reply via email to