Nested templated data: Difference between revisions

add REXX version 2 (more general than version 1)
(add REXX version 2 (more general than version 1))
Line 314:
 
=={{header|REXX}}==
===version 1===
<lang rexx>/* REXX */
tok.=''
Line 433 ⟶ 434:
'Payload#5']]
Payload 2 not used</pre>
 
===version 2===
<lang>/* REXX */
tok.=''
Do i=0 To 6
tok.i="'Payload#"i"'"
End
t1='[[[1,2],[ 3,4,1],5]]'
t2='1[[[1,6]],[[3,4[7] 0],5]3]9 [8] 9'
Call transform t1
Call transform t2
Exit
 
transform:
Parse Arg t 1 tt
t=space(t,0)
lvl=0
t.=0
used.=0
undefined=''
Do While t<>''
Parse Var t c +1 t
Select
When c='[' Then
lvl=lvl+1
When c=']' Then
lvl=lvl-1
When c=',' Then
Nop
Otherwise Do
t=c||t
p1=pos(']',t)
p2=pos('[',t)
Select
When p2=0 Then p=p1
When p1=0 Then p=p2
Otherwise p=min(p1,p2)
End
If p=0 Then Do
Call mem lvl': >'t'<'
t=''
End
Else Do
Call mem lvl': >'left(t,p-1)'<'
t=substr(t,p)
End
End
End
End
Call show
Return
 
mem:
z=t.0+1
t.z=arg(1)
t.0=z
Return
 
show:
Say tt
Say 'lvl Element'
Do i=1 To t.0
Parse Var t.i lvl ':' '>' cont '<'
ol=right(lvl,3) copies(' ',lvl*3)cont(cont)
Say ol
End
Do i=0 To 6
If used.i=0 Then Say 'Payload' i 'not used'
End
Do While undefined>''
Parse Var undefined i undefined
Say 'Payload' i 'is not defined'
End
Call o ' '
Return
 
cont: Procedure Expose tok. used. undefined
Parse Arg list
list=translate(list,' ',',')
res=''
Do while list>''
Parse Var list i list
res= res tok(i)','
End
res=strip(res)
res=strip(res,'T',',')
Return res
 
tok: Procedure Expose tok. used. undefined
Parse Arg i
If tok.i<>'' Then Do
used.i=1
Return tok.i
End
Else Do
If wordpos(i,undefined)=0 Then
undefined=undefined i
Return "'Payload#"i "not defined'"
End
 
o: Say arg(1)
Return</lang>
{{out}}
<pre>[[[1,2],[ 3,4,1],5]]
lvl Element
3 'Payload#1', 'Payload#2'
3 'Payload#3', 'Payload#4', 'Payload#1'
2 'Payload#5'
Payload 0 not used
Payload 6 not used
 
1[[[1,6]],[[3,4[7] 0],5]3]9 [8] 9
lvl Element
0 'Payload#1'
3 'Payload#1', 'Payload#6'
3 'Payload#3', 'Payload#4'
4 'Payload#7 not defined'
3 'Payload#0'
2 'Payload#5'
1 'Payload#3'
0 'Payload#9 not defined'
1 'Payload#8 not defined'
0 'Payload#9 not defined'
Payload 2 not used
Payload 7 is not defined
Payload 9 is not defined
Payload 8 is not defined</pre>
 
 
 
=={{header|zkl}}==
2,295

edits