rexx parse for dummies
Posted: Sun Oct 09, 2016 4:41 pm
Code: Select all
#! /usr/bin/env rexx
Trace "O"
signal on novalue name novalue
str = " We have met the enemy, and he is us. "
v1 = ""; v2 = ""; v3 = ""; v4 = ""; v5 = ""; v6 = ""; v7 = ""; v8 = "";
Parse Var str v1 v2 v3 v4 v5 v6 v7 v8
say "Word Parsing (0)"
say "Parse Var str v1 v2 v3 v4 v5 v6 v7 v8"
say "V1 >"v1"<"; say "V2 >"v2"<"; say "V3 >"v3"<"; say "V4 >"v4"<";
say "V5 >"v5"<"; say "V6 >"v6"<"; say "V7 >"v7"<"; say "V8 >"v8"<";
say ""
v1 = ""; v2 = ""; v3 = ""; v4 = ""; v5 = ""; v6 = ""; v7 = ""; v8 = "";
Parse Var str v1 v2 v3 . v4 v5 . v6 v7 v8
say "Word Parsing (1)"
say "Parse Var str v1 v2 v3 . v4 v5 . v6 v7 v8"
say "V1 >"v1"<"; say "V2 >"v2"<"; say "V3 >"v3"<"; say "V4 >"v4"<";
say "V5 >"v5"<"; say "V6 >"v6"<"; say "V7 >"v7"<"; say "V8 >"v8"<";
say ""
v1 = ""; v2 = ""; v3 = ""; v4 = ""; v5 = ""; v6 = ""; v7 = ""; v8 = "";
Parse Var str v1 v2 v3 . v4 v5 v6
say "Word Parsing (2)"
say "Parse Var str v1 v2 v3 . v4 v5 v6"
say "V1 >"v1"<"; say "V2 >"v2"<"; say "V3 >"v3"<"; say "V4 >"v4"<";
say "V5 >"v5"<"; say "V6 >"v6"<"; say "V7 >"v7"<"; say "V8 >"v8"<";
say ""
v1 = ""; v2 = ""; v3 = ""; v4 = ""; v5 = ""; v6 = ""; v7 = ""; v8 = "";
Parse Var str v1
say "Word Parsing (3)"
say "Parse Var str v1"
say "V1 >"v1"<"; say "V2 >"v2"<"; say "V3 >"v3"<"; say "V4 >"v4"<";
say "V5 >"v5"<"; say "V6 >"v6"<"; say "V7 >"v7"<"; say "V8 >"v8"<";
say ""
v1 = ""; v2 = ""; v3 = ""; v4 = ""; v5 = ""; v6 = ""; v7 = ""; v8 = "";
Parse Var str 1 v1 =10 v2 v3 v4 17 v5 =25 v6
say "Absolute Position Patterns (1)"
say "Parse Var str 1 v1 =10 v2 v3 v4 17 v5 =25 v6"
say "V1 >"v1"<"; say "V2 >"v2"<"; say "V3 >"v3"<"; say "V4 >"v4"<";
say "V5 >"v5"<"; say "V6 >"v6"<"; say "V7 >"v7"<"; say "V8 >"v8"<";
say ""
v1 = ""; v2 = ""; v3 = ""; v4 = ""; v5 = ""; v6 = ""; v7 = ""; v8 = "";
Parse Var str 1 v1 +9 v2 v3 v4 +7 v5 +8 v6
say "Relative Position Patterns (1)"
say "Parse Var str 1 v1 +9 v2 v3 v4 +7 v5 +8 v6"
say "V1 >"v1"<"; say "V2 >"v2"<"; say "V3 >"v3"<"; say "V4 >"v4"<";
say "V5 >"v5"<"; say "V6 >"v6"<"; say "V7 >"v7"<"; say "V8 >"v8"<";
say ""
v1 = ""; v2 = ""; v3 = ""; v4 = ""; v5 = ""; v6 = ""; v7 = ""; v8 = "";
Parse Var str 1 v1 =10 v2 v3 v4 17 v5 =25 v6 1 v7 v8
say "Absolute Position Patterns (2)"
say "Parse Var str 1 v1 =10 v2 v3 v4 17 v5 =25 v6 1 v7 v8"
say "V1 >"v1"<"; say "V2 >"v2"<"; say "V3 >"v3"<"; say "V4 >"v4"<";
say "V5 >"v5"<"; say "V6 >"v6"<"; say "V7 >"v7"<"; say "V8 >"v8"<";
say ""
v1 = ""; v2 = ""; v3 = ""; v4 = ""; v5 = ""; v6 = ""; v7 = ""; v8 = "";
Parse Var str 1 v1 =25 v2 =15 . v3 =19 v4 =5 v5
say "Absolute Position Patterns (3)"
say "Parse Var str 1 v1 =25 v2 =15 . v3 =19 v4 =5 v5"
say "V1 >"v1"<"; say "V2 >"v2"<"; say "V3 >"v3"<"; say "V4 >"v4"<";
say "V5 >"v5"<"; say "V6 >"v6"<"; say "V7 >"v7"<"; say "V8 >"v8"<";
say ""
v1 = ""; v2 = ""; v3 = ""; v4 = ""; v5 = ""; v6 = ""; v7 = ""; v8 = "";
Parse Var str 1 v1 +24 v2 -10 . v3 +4 v4 -14 v5
say "Relative Position Patterns (3)"
say "Parse Var str 1 v1 +24 v2 -10 . v3 +4 v4 -14 v5"
say "V1 >"v1"<"; say "V2 >"v2"<"; say "V3 >"v3"<"; say "V4 >"v4"<";
say "V5 >"v5"<"; say "V6 >"v6"<"; say "V7 >"v7"<"; say "V8 >"v8"<";
say ""
v1 = ""; v2 = ""; v3 = ""; v4 = ""; v5 = ""; v6 = ""; v7 = ""; v8 = "";
Parse Var str =2 v1 +2,
=5 v2 +4 ,
=11 v3 +3 ,
=15 v4 +3 ,
=19 v5 +5 ,
=26 v6 +3 ,
=31 v7
say "Fields - Absolute"
say "Parse Var str =2 v1 +2 =5 v2 +4 ... ... ... "
say "V1 >"v1"<"; say "V2 >"v2"<"; say "V3 >"v3"<"; say "V4 >"v4"<";
say "V5 >"v5"<"; say "V6 >"v6"<"; say "V7 >"v7"<"; say "V8 >"v8"<";
say ""
exit
/*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
*/
novalue:
say "** "copies("- ",35)
say "** Novalue trapped, at line("sigl") var('"condition("D")"') "
exit
Code: Select all
Word Parsing (1)
Parse Var str v1 v2 v3 . v4 v5 . v6 v7 v8
V1 >We<
V2 >have<
V3 >met<
V4 >enemy,<
V5 >and<
V6 >is<
V7 >us.<
V8 ><
Word Parsing (2)
Parse Var str v1 v2 v3 . v4 v5 v6
V1 >We<
V2 >have<
V3 >met<
V4 >enemy,<
V5 >and<
V6 >he is us. <
V7 ><
V8 ><
Word Parsing (3)
Parse Var str v1
V1 > We have met the enemy, and he is us. <
V2 ><
V3 ><
V4 ><
V5 ><
V6 ><
V7 ><
V8 ><
Absolute Position Patterns (1)
Parse Var str 1 v1 =10 v2 v3 v4 17 v5 =25 v6
V1 > We have <
V2 >met<
V3 >the<
V4 ><
V5 > enemy, <
V6 >and he is us. <
V7 ><
V8 ><
Relative Position Patterns (1)
Parse Var str 1 v1 +9 v2 v3 v4 +7 v5 +8 v6
V1 > We have <
V2 >met<
V3 >the<
V4 ><
V5 > enemy, <
V6 >and he is us. <
V7 ><
V8 ><
Absolute Position Patterns (2)
Parse Var str 1 v1 =10 v2 v3 v4 17 v5 =25 v6 1 v7 v8
V1 > We have <
V2 >met<
V3 >the<
V4 ><
V5 > enemy, <
V6 >and he is us. <
V7 >We<
V8 >have met the enemy, and he is us. <
Absolute Position Patterns (3)
Parse Var str 1 v1 =25 v2 =15 . v3 =19 v4 =5 v5
V1 > We have met the enemy, <
V2 >and he is us. <
V3 >e<
V4 >nemy, and he is us. <
V5 >have met the enemy, and he is us. <
V6 ><
V7 ><
V8 ><
Relative Position Patterns (3)
Parse Var str 1 v1 +24 v2 -10 . v3 +4 v4 -14 v5
V1 > We have met the enemy, <
V2 >and he is us. <
V3 >e<
V4 >nemy, and he is us. <
V5 >have met the enemy, and he is us. <
V6 ><
V7 ><
V8 ><
Fields - Absolute
Parse Var str =2 v1 +2 =5 v2 +4 ... ... ...
V1 >We<
V2 >have<
V3 >et <
V4 >he <
V5 >nemy,<
V6 >nd <
V7 > is us. <
V8 ><
Code: Select all
#! /usr/bin/env rexx
Trace "O"
signal on novalue name novalue
str = " We have met the enemy, and he is us. "
parse.1 = "Parse Var str v1 v2 v3 v4 v5 v6 v7 v8"
parse.2 = "Parse Var str v1 v2 v3 . v4 v5 . v6 v7 v8"
parse.3 = "Parse Var str v1 v2 v3 . v4 v5 v6"
parse.4 = "Parse Var str v1"
parse.5 = "Parse Var str 1 v1 =10 v2 v3 v4 17 v5 =25 v6"
parse.6 = "Parse Var str 1 v1 +9 v2 v3 v4 +7 v5 +8 v6"
parse.7 = "Parse Var str 1 v1 =10 v2 v3 v4 17 v5 =25 v6 1 v7 v8"
parse.8 = "Parse Var str 1 v1 =25 v2 =15 . v3 =19 v4 =5 v5"
parse.9 = "Parse Var str 1 v1 +24 v2 -10 . v3 +4 v4 -14 v5"
parse.10 = "Parse Var str =2 v1 +2 =5 v2 +4 =11 v3 +3 =15 v4 +3 =19 v5 +5 =26 v6 +3 =31 v7"
parse.11 = ""
parse.12 = ""
descr.1 = "parse everything ( not in the slides ) "
descr.2 = "Word Parsing (1)"
descr.3 = "Word Parsing (2)"
descr.4 = "Word Parsing (3)"
descr.5 = "Absolute Position Patterns (1)"
descr.6 = "Relative Position Patterns (1)"
descr.7 = "Absolute Position Patterns (2)"
descr.8 = "Absolute Position Patterns (3)"
descr.9 = "Relative Position Patterns (3)"
descr.10 = "Fields - Absolute"
descr.11 = ""
descr.12 = ""
parse.0 = 10
do p = 1 to parse.0
v1 = ""; v2 = ""; v3 = ""; v4 = ""; v5 = ""; v6 = ""; v7 = ""; v8 = "";
interpret parse.p
say ""
say descr.p
say parse.p
say "V1 >"v1"<"; say "V2 >"v2"<"; say "V3 >"v3"<"; say "V4 >"v4"<";
say "V5 >"v5"<"; say "V6 >"v6"<"; say "V7 >"v7"<"; say "V8 >"v8"<";
say ""
end
say ""
exit
/*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
*/
novalue:
say "** "copies("- ",35)
say "** Novalue trapped, at line("sigl") var('"condition("D")"') "
exit