Author: julianalbo
Date: Sun Jan 25 07:53:53 2009
New Revision: 35996

Modified:
   trunk/examples/pir/pirric.pir

Log:
[pirric] added GETPARROTINTERP function and -p command line option

Modified: trunk/examples/pir/pirric.pir
==============================================================================
--- trunk/examples/pir/pirric.pir       (original)
+++ trunk/examples/pir/pirric.pir       Sun Jan 25 07:53:53 2009
@@ -31,10 +31,13 @@
 # - Predefined string functions: CHR$, ASC, LEN, LEFT$, RIGHT$, MID$
 # - Parenthesis
 # - Indexing with [ ]
-# - Special functions: NEW, ISA, COMPREG
+# - Special functions: NEW, ISA, COMPREG, GETPARROTINTERP
 # - Calls to methods in foreign objects
 # - Calls to functions in foreign namespaces
-
+#
+# Command line options:
+# -t Trace on. Same as the TRON instruction
+# -p all remaining arguments are executed as PRINT instructions
 #-----------------------------------------------------------------------
 
 .include 'iterator.pasm'
@@ -126,6 +129,7 @@
     predefs = new 'Hash'
     setpredef(predefs, 'NEW')
     setpredef(predefs, 'ISA')
+    setpredef(predefs, 'GETPARROTINTERP')
     setpredef(predefs, 'CHR$', 'CHR_S')
     setpredef(predefs, 'ASC')
     setpredef(predefs, 'LEN')
@@ -204,6 +208,7 @@
     .local string arg
     arg = args[$I1]
     if arg == '-t' goto opt_tron
+    if arg == '-p' goto print_items
 
     #say arg
     program.'load'(arg)
@@ -216,6 +221,18 @@
     inc $I1
     goto read_args
 
+print_items:
+    .local pmc tokenizer
+    inc $I1
+    le $I0, $I1, print_end
+    $S9 = args [$I1]
+    tokenizer = newTokenizer($S9)
+    runner.'func_PRINT'(tokenizer)
+    null tokenizer
+    goto print_items
+print_end:
+    exit 0
+
 no_prog:
     $I0 = 0
 start:
@@ -606,6 +623,15 @@
 .end
 
 #-----------------------------------------------------------------------
+
+.sub predef_GETPARROTINTERP :method
+    .param pmc tokenizer
+
+    $P0 = getinterp
+    .return($P0)
+.end
+
+#-----------------------------------------------------------------------
 .sub predef_CHR_S :method
     .param pmc tokenizer
 

Reply via email to