3 .namespace ['TokenStream']
7 class = newclass 'TokenStream'
9 addattribute class, '$code'
10 addattribute class, '$pos'
14 .sub '__new_from_string'
27 setattribute self, '$code', str
28 setattribute self, '$pos', pos
34 .sub 'get_bool' :vtable :method
37 pos = getattribute self, '$pos'
38 $P0 = getattribute self, '$code'
44 .include 'cclass.pasm'
46 $I0 = find_not_cclass .CCLASS_WHITESPACE, code, $I0, len
47 if $I0 == len goto false
56 .sub 'shift_pmc' :vtable :method
58 .local string code, str
60 pos = getattribute self, '$pos'
61 $P0 = getattribute self, '$code'
67 .include 'cclass.pasm'
69 $I0 = find_not_cclass .CCLASS_WHITESPACE, code, $I0, len
70 $I1 = find_cclass .CCLASS_WHITESPACE, code, $I0, len
71 if $I0 == len goto return
74 str = substr code, $I0, $I2
79 $I1 = find_not_cclass .CCLASS_NUMERIC, str, 0, $I0
80 if $I1 == $I0 goto numeric
96 .sub remove_upto :method
100 code = getattribute self, '$code'
101 pos = getattribute self, '$pos'
105 inc $I0 # skip a space
106 $I1 = index $S0, str, $I0
109 $S1 = substr $S0, $I0, $I2
121 # vim: expandtab shiftwidth=4 ft=pir: