::CLASS rexxprogram PUBLIC
the rexxprogram class
Definition at line
82 of
rexxprogram.cls
Public Methods
|
- string list of arguments (commas removed)
|
getarglist
(clauses)
|
|
get first use of {parse|use} arg in a feature
|
Queue of source
|
getclausecode
(fc)
|
|
return clause source corresponding to filechunk
|
Queue of clauses
|
getclausesat
(lineno)
|
|
return all the clauses at lineno
|
Queue of source
|
getcode
(fc)
|
|
return source corresponding to filechunk
|
Queue - filechunks of contained features
|
getcontained
(feature)
|
|
return contained features
|
- string list of exposed variables
|
getexposelist
(clauses)
|
|
get list of exposed variables for a
|
Queue of clauses
|
getfeature
(feature)
|
|
return all clauses in feature
|
String or .nil
|
getlinecomment
(filechunk)
|
|
return any line comment associated with filechunk
|
Queue of source
|
getnoppedsource
(fc)
|
|
return source of a filechunk with literals set to 'o'
|
a comment feature or .nil if no block comment
|
getprevcomment
(feature)
|
|
get any block comment between this feature
|
Queue of source
|
getsource
(fc)
|
|
return source corresponding to filechunk
|
String of clause
|
getwholeclause
(fc)
|
|
return a (possibly continued) clause
|
|
init
(programname)
|
|
parse the rexx program
|
|
nextfeature
(current, goodlist)
|
|
return next interesting feature
|
an array of zero or more items
|
safeallat
(r, index)
|
|
circumvent 4.20 beta bug
|
Public Attributes
|
|
blockcomments
|
|
queue of filechunks of block comments
|
|
classes
|
|
queue of filechunks of classes
|
|
clausemap
|
|
relation map to clauses by line number
|
|
clauses
|
|
queue of filechunks of all clauses
|
|
cleansrc
|
|
queue of source minus comments
|
|
codefeaturemap
|
|
relation map to code features by line number
|
|
codefeatures
|
|
queue of filechunks of code features (no comments)
|
|
commentmap
|
|
relation map to comments by line number
|
|
comments
|
|
queue of filechunks of comments (line and block)
|
|
features
|
|
queue of filechunks of all features (code and block comments)
|
|
hashbang
|
|
string Unix magic string or ''
|
|
labels
|
|
queue of filechunks of labels
|
|
linecomments
|
|
queue of filechunks of line comments
|
|
methods
|
|
queue of filechunks of methods
|
|
mixedclauses
|
|
queue of filechunks of all clauses, including features
|
|
procedural
|
|
boolean when true the program has no oo features
|
|
procedures
|
|
queue of filechunks of procedures
|
|
quotemap
|
|
relation map to quotes by line number
|
|
quotes
|
|
queue of filechunks of quoted strings
|
|
rconstants
|
|
queue of filechunks of constants
|
|
requires
|
|
queue of filechunks of requires
|
|
roptions
|
|
queue of filechunks of options
|
|
routines
|
|
queue of filechunks of routines
|
|
src
|
|
queue of the whole source
|
|
user
|
|
user field: any use by client
|
Private Methods
|
|
classsetup
(fc)
|
|
complete class filechunk
|
|
delimitclauses
()
|
|
delimit clauses into the clause list
|
|
getcodefeatures
()
|
|
distinguish clauses into interesting features
|
|
iscomment
(line, col)
|
|
quoted = self~quotemap~allat(line)
|
.true - character is in a quoted string
|
isinquote
(line, col)
|
|
returns Boolean indicating whether character position is
|
|
mapquotes
()
|
|
map quotes so we can detect real ';' clause ends
|
|
mergefeatures
()
|
|
merge codefeatures and block comments into features
|
|
methodsetup
(fc)
|
|
complete method filechunk
|
|
parsesource
()
|
|
parse the source into comments, quotes and code
|
|
procsetup
(fc)
|
|
complete proc filechunk
|
|
quotestate
(c, lineno, colno)
|
|
subroutine to set quote state
|
|
requiressetup
(fc)
|
|
complete requires filechunk
|
|
routinesetup
(fc)
|
|
complete routine filechunk
|
|
sanity
(chunks)
|
|
ensure chunks make approximate sense
|
|
sortcomments
()
|
|
sort comments into line and block, and merge contiguous blocks
|
|
splitclause
(c, fc, splitpoints)
|
|
produce a queue of cloned clauses
|
a queue of one or more clauses derived from c
|
unsugar
(c)
|
|
deal with run-on clauses for IF and WHEN etc.
|
Exposed variables
inblock exposed by
|
|
parsesource
()
|
|
parse the source into comments, quotes and code
|
|
quotestate
(c, lineno, colno)
|
|
subroutine to set quote state
|
qblock exposed by
|
|
parsesource
()
|
|
parse the source into comments, quotes and code
|
|
quotestate
(c, lineno, colno)
|
|
subroutine to set quote state
|
quotechar exposed by
|
|
parsesource
()
|
|
parse the source into comments, quotes and code
|
|
quotestate
(c, lineno, colno)
|
|
subroutine to set quote state
|
inquote exposed by
|
|
parsesource
()
|
|
parse the source into comments, quotes and code
|
|
quotestate
(c, lineno, colno)
|
|
subroutine to set quote state
|
inline exposed by
|
|
parsesource
()
|
|
parse the source into comments, quotes and code
|
|
quotestate
(c, lineno, colno)
|
|
subroutine to set quote state
|
Instantiated by
documents.cls line 132
Feature Detail
::ATTRIBUTE linecomments
|
queue of filechunks of line comments
Dynamically referenced by
rexxprogram.cls line 135 "
self~linecomments = .queue~new"
rexxprogram.cls line 1038 "
self~linecomments~queue(com)"
::ATTRIBUTE labels
|
queue of filechunks of labels
Dynamically referenced by
documents.cls line 159 "
globalix~labels~queue(rf)"
rexxprogram.cls line 142 "
self~labels = .queue~new"
rexxprogram.cls line 688 "
self~labels~queue(l)"
::ATTRIBUTE procedures
|
queue of filechunks of procedures
Dynamically referenced by
documents.cls line 183 "
globalix~procedures~queue(rf)"
htmlindex.cls line 70 "
self~emitprocedurei(global~procedures, htmlout, 'Index of procedures', 'petprocedures', 'procedures')"
rexxprogram.cls line 143 "
self~procedures = .queue~new"
rexxprogram.cls line 662 "
self~procedures~queue(p)"
rexxprogram.cls line 682 "
self~procedures~queue(p)"
rexxprogram.cls line 812 "
do i over self~procedures"
::ATTRIBUTE classes
|
queue of filechunks of classes
Dynamically referenced by
documents.cls line 174 "
globalix~classes~queue(rf)"
htmlindex.cls line 67 "
self~emitclassi(global~classes, htmlout, 'Index of classes', 'petclasses', 'classes')"
rexxprogram.cls line 145 "
self~classes = .queue~new"
rexxprogram.cls line 187 "
do i over self~classes"
rexxprogram.cls line 708 "
self~classes~queue(c)"
rexxprogram.cls line 818 "
do i over self~classes"
::ATTRIBUTE routines
|
queue of filechunks of routines
Dynamically referenced by
documents.cls line 217 "
globalix~routines~queue(rf)"
htmlindex.cls line 71 "
self~emitroutinei(global~routines, htmlout, 'Index of routines', 'petroutines', 'routines')"
rexxprogram.cls line 147 "
self~routines = .queue~new"
rexxprogram.cls line 754 "
self~routines~queue(t)"
rexxprogram.cls line 824 "
do i over self~routines"
::ATTRIBUTE roptions
|
queue of filechunks of options
Dynamically referenced by
rexxprogram.cls line 148 "
self~roptions = .queue~new"
rexxprogram.cls line 763 "
self~roptions~queue(t)"
::ATTRIBUTE rconstants
|
queue of filechunks of constants
Dynamically referenced by
rexxprogram.cls line 149 "
self~rconstants = .queue~new"
rexxprogram.cls line 743 "
self~rconstants~queue(m)"
::ATTRIBUTE hashbang
|
string Unix magic string or ''
Dynamically referenced by
rexxprogram.cls line 155 "
self~hashbang = ''"
rexxprogram.cls line 409 "
self~hashbang = line"
::ATTRIBUTE quotemap
|
relation map to quotes by line number
Dynamically referenced by
documents.cls line 346 "
fcq = self~rxprogram~safeallat(self~rxprogram~quotemap, lineno)"
rexxprogram.cls line 372 "
self~quotemap = .relation~new"
rexxprogram.cls line 378 "
self~quotemap~put(i, j)"
rexxprogram.cls line 380 "
else self~quotemap~put(i, sl)"
rexxprogram.cls line 1320 "
quoted = self~safeallat(self~quotemap, j)"
rexxprogram.cls line 1348 "
if \self~quotemap~hasindex(line)"
rexxprogram.cls line 1352 "
quoted = self~safeallat(self~quotemap, line)"
::ATTRIBUTE clausemap
|
relation map to clauses by line number
Dynamically referenced by
rexxprogram.cls line 389 "
self~clausemap = .relation~new"
rexxprogram.cls line 466 "
self~clausemap~put(s, s~startline)"
rexxprogram.cls line 1036 "
aclause = self~safeallat(self~clausemap, com~startline)"
rexxprogram.cls line 1048 "
zclause = self~safeallat(self~clausemap, next~startline)"
rexxprogram.cls line 1145 "
clauses = self~safeallat(self~clausemap, lineno)"
::ATTRIBUTE commentmap
|
relation map to comments by line number
Dynamically referenced by
documents.cls line 333 "
fcq = self~rxprogram~safeallat(self~rxprogram~commentmap, lineno)"
rexxprogram.cls line 231 "
self~commentmap = .relation~new"
rexxprogram.cls line 311 "
self~commentmap[bcomment~startline] = bcomment"
rexxprogram.cls line 322 "
self~commentmap[lcomment~startline] = lcomment"
rexxprogram.cls line 1189 "
return self~commentmap[filechunk~startline]"
::ATTRIBUTE codefeaturemap
|
relation map to code features by line number
Dynamically referenced by
documents.cls line 367 "
return self~rxproram~safeallat(self~rxprogram~codefeaturemap~allat(lineno))"
rexxprogram.cls line 151 "
self~codefeaturemap = .relation~new"
rexxprogram.cls line 830 "
self~codefeaturemap~put(i, i~startline)"
::ATTRIBUTE user
|
user field: any use by client
Dynamically referenced by
documents.cls line 133 "
self~rxprogram~user = self"
documents.cls line 165 "
prevmethod~feature~ownerclass~user~methods~queue(rf)"
documents.cls line 196 "
c~ownerclass~user~methods~queue(rf)"
documents.cls line 209 "
c~ownerclass~user~methods~queue(rf)"
documents.cls line 241 "
c~ownerclass~user~methods~queue(rf)"
documents.cls line 450 "
f~document~reqrefs~queue(.reference~new(c~user, f~document, .nil, 'REQ'))"
documents.cls line 477 "
currowner = c~user"
documents.cls line 905 "
feature~user = self"
documents.cls line 1235 "
return self~feature~ownerclass~user"
documents.cls line 1363 "
return self~feature~ownerclass~user"
htmlindex.cls line 381 "
owner = i~feature~ownerclass~user"
htmlrexxsource.cls line 140 "
anchordoc = rdc~feature~ownerclass~user~hdocurl"
htmlrexxsource.cls line 146 "
anchordoc = rdc~feature~ownerclass~user~hdocurl"
::METHOD init
|
parse the rexx program
Parameters
programname - path to the program source
::METHOD sanity PRIVATE
|
ensure chunks make approximate sense
Parameters
chunks - array of chunks to review and fix up A list of chunks is scanned and any zero values are set to defaults
Dynamically referenced by
rexxprogram.cls line 161 "
self~sanity(self~comments)"
rexxprogram.cls line 162 "
self~sanity(self~quotes)"
::METHOD parsesource PRIVATE
|
parse the source into comments, quotes and code
precondition: none
Exposes
inblock inquote inline quotechar qblock
Dynamically referenced by
rexxprogram.cls line 158 "
self~parsesource"
::METHOD quotestate PRIVATE
|
subroutine to set quote state
Exposes
inblock inquote inline quotechar qblock
Parameters
c not documented
lineno not documented
colno not documented
Dynamically referenced by
rexxprogram.cls line 249 "
self~quotestate(c, lineno, colno)"
rexxprogram.cls line 262 "
self~quotestate(c, lineno, colno)"
::METHOD mapquotes PRIVATE
|
map quotes so we can detect real ';' clause ends
precondition: parsesource has run
Dynamically referenced by
rexxprogram.cls line 165 "
self~mapquotes"
::METHOD delimitclauses PRIVATE
|
delimit clauses into the clause list
precondition: mapquotes has run
now we can tell for any character position
whether it's in a quote or not
Dynamically referenced by
rexxprogram.cls line 168 "
self~delimitclauses"
::METHOD unsugar PRIVATE
|
deal with run-on clauses for IF and WHEN etc.
Rexx has some syntactic sugar to let people write things like
if a=1 then do
call a1
end
where there are implied semicolons before and after the
'then' keyword
Parameters
c - a possibly sugared clause
Returns
a queue of one or more clauses derived from c
Dynamically referenced by
rexxprogram.cls line 463 "
sour = self~unsugar(c)"
::METHOD splitclause PRIVATE
|
produce a queue of cloned clauses
Parameters
c not documented
fc not documented
splitpoints not documented
Dynamically referenced by
rexxprogram.cls line 553 "
ret = self~splitclause(c, fc, dpos)"
rexxprogram.cls line 558 "
ret = self~splitclause(c, fc, dpos)"
rexxprogram.cls line 563 "
ret = self~splitclause(c, fc, tpos dpos)"
rexxprogram.cls line 568 "
ret = self~splitclause(c, fc, opos dpos)"
rexxprogram.cls line 573 "
ret = self~splitclause(c, fc, dpos)"
rexxprogram.cls line 582 "
ret = self~splitclause(c, fc, tpos)"
rexxprogram.cls line 587 "
ret = self~splitclause(c, fc, tpos+'THEN'~length+1)"
rexxprogram.cls line 591 "
ret = self~splitclause(c, fc, tpos tpos+'THEN'~length+1)"
rexxprogram.cls line 602 "
ret = self~splitclause(c, fc, opos)"
rexxprogram.cls line 607 "
ret = self~splitclause(c, fc, opos+'OTHERWISE'~length+1)"
rexxprogram.cls line 611 "
ret = self~splitclause(c, fc, opos tpos+'OTHERWISE'~length+1)"
::METHOD getcodefeatures PRIVATE
|
distinguish clauses into interesting features
precondition: delimitclauses has run
Dynamically referenced by
rexxprogram.cls line 176 "
self~getcodefeatures"
::METHOD nextfeature
|
return next interesting feature
Parameters
current - the current feature
goodlist - object names of features we're looking for
Dynamically referenced by
documents.cls line 418 "
return self~rxprogram~nextfeature(f, goodlist)"
htmltree.cls line 348 "
nf = rexxd~nextfeature(rdc~feature, 'CLAS ROUT')"
rexxprogram.cls line 788 "
nf = self~nextfeature(curfeat, 'CLAS ROUT')"
rexxprogram.cls line 795 "
nf = self~nextfeature(curfeat, 'CLAS ROUT METH ATTR PROC REQU')"
::METHOD procsetup PRIVATE
|
complete proc filechunk
Parameters
fc - filechunk of the proc
Dynamically referenced by
rexxprogram.cls line 813 "
self~procsetup(i)"
::METHOD requiressetup PRIVATE
|
complete requires filechunk
Parameters
fc - filechunk of the requires
Dynamically referenced by
rexxprogram.cls line 816 "
self~requiressetup(i)"
::METHOD classsetup PRIVATE
|
complete class filechunk
Parameters
fc - filechunk of the requires
Dynamically referenced by
rexxprogram.cls line 819 "
self~classsetup(i)"
::METHOD methodsetup PRIVATE
|
complete method filechunk
Parameters
fc - filechunk of the method
Dynamically referenced by
rexxprogram.cls line 822 "
self~methodsetup(i)"
::METHOD routinesetup PRIVATE
|
complete routine filechunk
Parameters
fc - filechunk of the routine
Dynamically referenced by
rexxprogram.cls line 825 "
self~routinesetup(i)"
::METHOD getexposelist
|
get list of exposed variables for a
procedure, method or routine
Parameters
clauses - queue of clauses in the feature
Returns
- string list of exposed variables
Dynamically referenced by
rexxprogram.cls line 861 "
fc~exposelist = self~getexposelist(proc)"
rexxprogram.cls line 916 "
fc~exposelist = self~getexposelist(meth)"
rexxprogram.cls line 948 "
fc~exposelist = self~getexposelist(rout)"
::METHOD getarglist
|
get first use of {parse|use} arg in a feature
in the feature
Parameters
clauses - queue of clauses in the feature
Returns
- string list of arguments (commas removed)
Dynamically referenced by
rexxprogram.cls line 863 "
fc~arglist = self~getarglist(proc)"
rexxprogram.cls line 917 "
fc~arglist = self~getarglist(meth)"
rexxprogram.cls line 949 "
fc~arglist = self~getarglist(rout)"
::METHOD sortcomments PRIVATE
|
sort comments into line and block, and merge contiguous blocks
a block comment is any comment line or contiguous comment lines with
no executable clause on them
a line comment is any comment line or contiguous comment lines with
one or more executable clauses on them
Dynamically referenced by
rexxprogram.cls line 180 "
self~sortcomments"
::METHOD safeallat
|
circumvent 4.20 beta bug
Parameters
r - a relation
index - an index
Returns
an array of zero or more items
Dynamically referenced by
documents.cls line 333 "
fcq = self~rxprogram~safeallat(self~rxprogram~commentmap, lineno)"
documents.cls line 346 "
fcq = self~rxprogram~safeallat(self~rxprogram~quotemap, lineno)"
documents.cls line 367 "
return self~rxproram~safeallat(self~rxprogram~codefeaturemap~allat(lineno))"
rexxprogram.cls line 1036 "
aclause = self~safeallat(self~clausemap, com~startline)"
rexxprogram.cls line 1048 "
zclause = self~safeallat(self~clausemap, next~startline)"
rexxprogram.cls line 1145 "
clauses = self~safeallat(self~clausemap, lineno)"
rexxprogram.cls line 1320 "
quoted = self~safeallat(self~quotemap, j)"
rexxprogram.cls line 1352 "
quoted = self~safeallat(self~quotemap, line)"
rexxprogram.cls line 1363 "
commented = self~safeallat(self~commentemap, line)"
::METHOD mergefeatures PRIVATE
|
merge codefeatures and block comments into features
retaining startline order
Dynamically referenced by
rexxprogram.cls line 184 "
self~mergefeatures"
::METHOD getclausesat
|
return all the clauses at lineno
Parameters
lineno - the line number for which to get clauses
Returns
Queue of clauses
Dynamically referenced by
documents.cls line 373 "
return self~rxprogram~getclausesat(lineno)"
documents.cls line 397 "
clauses = self~rxprogram~getclausesat(feature~startline)"
::METHOD getfeature
|
return all clauses in feature
Parameters
feature - the feature for which to get clauses
Returns
Queue of clauses
Dynamically referenced by
rexxprogram.cls line 880 "
clauses = self~getfeature(fc)"
rexxprogram.cls line 1278 "
clauses = self~getfeature(fc)"
::METHOD getlinecomment
|
return any line comment associated with filechunk
Parameters
filechunk - the filechunk for which to get line comment
Returns
String or .nil
Dynamically referenced by
documents.cls line 297 "
lc = self~rxprogram~getlinecomment(feature)"
::METHOD getprevcomment
|
get any block comment between this feature
and the preceding feature
Parameters
feature - for which to find preceding block comment
Returns
a comment feature or .nil if no block comment
Dynamically referenced by
documents.cls line 280 "
prev = self~rxprogram~getprevcomment(feature)"
::METHOD getwholeclause
|
return a (possibly continued) clause
as a single clause
Parameters
fc - filechunk of clause for which to get source
Returns
String of clause
Dynamically referenced by
rexxprogram.cls line 649 "
uclause = self~getwholeclause(clause)~translate"
rexxprogram.cls line 671 "
mclause = self~getwholeclause(clause)"
::METHOD getcode
|
return source corresponding to filechunk
with no comments, but not parsed into clauses
Parameters
fc - filechunk for which to get code
Returns
Queue of source
Dynamically referenced by
rexxprogram.cls line 883 "
definer = self~getcode(clauses[1])[1]"
rexxprogram.cls line 1234 "
stack = self~getcode(fc)"
rexxprogram.cls line 1280 "
clausecode~queue(self~getcode(clause)[1])"
::METHOD getclausecode
|
return clause source corresponding to filechunk
each clause in a separate item
Parameters
fc - filechunk for which to get code
Returns
Queue of source
Dynamically referenced by
rexxprogram.cls line 857 "
proc = self~getclausecode(fc)"
rexxprogram.cls line 911 "
meth = self~getclausecode(fc)"
rexxprogram.cls line 945 "
rout = self~getclausecode(fc)"
::METHOD getsource
|
return source corresponding to filechunk
including comments
Parameters
fc - filechunk for which to get code
Returns
Queue of source
Dynamically referenced by
documents.cls line 268 "
bc = self~rxprogram~getsource(self~rxprogram~blockcomments[1])"
documents.cls line 283 "
else src = self~rxprogram~getsource(prev)"
documents.cls line 300 "
src = self~rxprogram~getsource(lc)"
documents.cls line 311 "
return self~rxprogram~getsource(clause)"
htmlrexxclass.cls line 78 "
src = rdc~document~getsource(clause)[1]"
htmlrexxclass.cls line 161 "
src = m~document~getsource(clause)[1]"
htmlrexxprogram.cls line 203 "
clauseq = i~document~getsource(clause)"
htmlrexxsource.cls line 123 "
src = rxdoc~getsource(clause)"
htmlrexxsource.cls line 260 "
src = rxdoc~getsource(i)"
htmlutil.cls line 169 "
src = r~rdatom~document~getsource(r~rdatom~feature)"
htmlutil.cls line 193 "
src = r~rdatom~document~getsource(r~rdatom~feature)"
htmlutil.cls line 206 "
src = r~rdatom~document~getsource(r~rdatom~feature)"
::METHOD getnoppedsource
|
return source of a filechunk with literals set to 'o'
including comments
Parameters
fc - filechunk for which to get literal nopped code
Returns
Queue of source
Dynamically referenced by
documents.cls line 316 "
return self~rxprogram~getnoppedsource(clause)"
documents.cls line 585 "
src = self~document~getnoppedsource(self~feature)"
rexxprogram.cls line 486 "
src = self~getnoppedsource(c)"
::METHOD isinquote PRIVATE
|
returns Boolean indicating whether character position is
in a quoted string
Parameters
line - line number of character
col - column number of character
Returns
.true - character is in a quoted string
.false - character is not in a quoted string
::METHOD iscomment PRIVATE
|
quoted = self~quotemap~allat(line)
Parameters
line not documented
col not documented
::METHOD getcontained
|
return contained features
Parameters
feature - filechunk of feature
Returns
Queue - filechunks of contained features
Dynamically referenced by
rexxprogram.cls line 188 "
meths = self~getcontained(i)"
|
Generated on 31 Aug 2010 05:20:33 for RexxLiterate by
0.0.1
|