Tokenize a string: Difference between revisions

Content added Content deleted
(added MMIX)
Line 440: Line 440:
)
)
format "%\n" output</lang>
format "%\n" output</lang>

=={{header|MMIX}}==
<lang mmix>sep IS ','
EOS IS 0
NL IS 10

// main registers
p IS $255
tp GREG
c GREG
t GREG

LOC Data_Segment
GREG @
Text BYTE "Hello,How,Are,You,Today",EOS
token BYTE 0
eot IS @+255

LOC #100 % main () {
Main LDA p,Text %
LDA tp,token % initialize pointers
2H LDBU c,p % DO get char
BZ c,5F % break if char == EOS
CMP t,c,sep % if char != sep then
PBNZ t,3F % store char
SET t,NL % terminate token with NL,EOS
STBU t,tp
SET t,EOS
INCL tp,1
STBU t,tp
JMP 4F % continue

3H STBU c,tp % store char
4H INCL tp,1 % update pointers
INCL p,1
JMP 2B % LOOP

5H SET t,NL % terminate last token and buffer
STBU t,tp
SET t,EOS
INCL tp,1
STBU t,tp
% next part is not really necessary
% program runs only once
% INCL tp,1 % terminate buffer
% STBU t,tp

LDA tp,token % reset token pointer
% REPEAT
2H ADD p,tp,0 % start of token
TRAP 0,Fputs,StdOut % output token
ADD tp,tp,p
INCL tp,1 % step to next token
LDBU t,tp
PBNZ t,2B % UNTIL EOB(uffer)
TRAP 0,Halt,0</lang>
Output:
<pre>~/MIX/MMIX/Progs> mmix tokenizing
Hello
How
Are
You
Today</pre>


=={{header|Modula-3}}==
=={{header|Modula-3}}==