CA2011289A1 - "c" program source blocker - Google Patents
"c" program source blockerInfo
- Publication number
- CA2011289A1 CA2011289A1 CA 2011289 CA2011289A CA2011289A1 CA 2011289 A1 CA2011289 A1 CA 2011289A1 CA 2011289 CA2011289 CA 2011289 CA 2011289 A CA2011289 A CA 2011289A CA 2011289 A1 CA2011289 A1 CA 2011289A1
- Authority
- CA
- Canada
- Prior art keywords
- line
- character
- outbound
- inbound
- arrow
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Abandoned
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/70—Software maintenance or management
- G06F8/75—Structural analysis for program understanding
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- General Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Stored Programmes (AREA)
Abstract
ABSTRACT OF THE DISCLOSURE
A programming tool for providing a graphical representation of the relationships among a plurality of nested blocks integrated into a processed "C" source code listing is disclosed. For each line of code including a "(" character, an outbound arrow is appended. Similarly, for each line of code including a ")" character, an inbound arrow is appended, and the inbound and outbound arrows are tabbed into vertical alignment. A "depth number" is developed for each line now having arrows by performing an increment when a line having an outbound arrow is encountered and a decrement for the starting depth number value of the next line when a given line having an inbound arrow is encountered. The depth numbers, and also one or more (as indicated by the depth number for a given line) right justified vertical line segments, are appended to the lines having outbound or inbound arrows. Intermediate lines have appended the same number of vertical line segments as the last arrowed line if it was outbound or one less than the last arrowed line if it was inbound. Then, horizontal line segment characters are entered in the spaces between the depth number and the leftmost vertical line segment in a given line having an outbound or inbound arrow.
A programming tool for providing a graphical representation of the relationships among a plurality of nested blocks integrated into a processed "C" source code listing is disclosed. For each line of code including a "(" character, an outbound arrow is appended. Similarly, for each line of code including a ")" character, an inbound arrow is appended, and the inbound and outbound arrows are tabbed into vertical alignment. A "depth number" is developed for each line now having arrows by performing an increment when a line having an outbound arrow is encountered and a decrement for the starting depth number value of the next line when a given line having an inbound arrow is encountered. The depth numbers, and also one or more (as indicated by the depth number for a given line) right justified vertical line segments, are appended to the lines having outbound or inbound arrows. Intermediate lines have appended the same number of vertical line segments as the last arrowed line if it was outbound or one less than the last arrowed line if it was inbound. Then, horizontal line segment characters are entered in the spaces between the depth number and the leftmost vertical line segment in a given line having an outbound or inbound arrow.
Description
~o/~
r 2 0 1 1 2 8 ~
.
'IC1' PROGRAM ~LOCKER
.. . ._ . ..... . . .. .... .. . . .
Field of the Invent~~
This invention relates to the art of computer programming and, more particularly, to a programming annotation tool which improves the comprehensibility of the source code listing of a program written in '~C".
.
Background of the Invention As notoriously well known to those skilled in the art of computer programming, it is difficult to follow the structure and flow of a program from a study of the source code listing. Even in a review of one's own worX, difficulties may be encountered if the program was written in the past such that its "philosophy" is no~
~resh in mind. But, it is particularly difficult to undertake the study of a source code listing of a program written partly or wholly by another person or persons since each programmer has his or her own style and thought process in writing programs. Further, it is a perhaps unfortunate fact that (because of productivity demands or even because of poor discipline) programs are no longer routinely subject to higher level documentation, such as by the preparation o~ detailed flow charts; consequently, the difficulty of following one's own program, let alone the work of others, is additionally aggravated.
.-. , ... . . ~ .
~12~3 One highly regarded programming language in wide use among both prb~essional and amateur programmers is "C".
Well written "C" programs of~en ~re~uently employ code blocks which may be "nested" to several levels, and it is troublesome, ~hen examining a source code listing which may have been prepared in the past or by others, to determine the beginnings and ends of the code blocks and the levels of nesting. Those skilled in the art will appreciate that it would be highly desirable to provide, in a "C" source code listing, annotations which will assist the peruser of such in following the code blocking and nesting structure of the listed program, and it is to these ends that my invention is directed.
Objects of the Invention It is therefore a broad object of my invention to provide an annotation tool for source code listings to facilitate following the structure and sequence of a listed program.
It is another object of my invention to provide such a tool which is particularly applicable to employment in conjunction with listings in "C" source code.
It is a more specific object of my invention to provide an annotation tool for "C" source code listin~s which visually identifies each code block and the nesting relationship among all code blocks in a concise and easy to ~ollow presentation.
- . , . ,. , ,., ~.
r 2 0 1 1 2 8 ~
.
'IC1' PROGRAM ~LOCKER
.. . ._ . ..... . . .. .... .. . . .
Field of the Invent~~
This invention relates to the art of computer programming and, more particularly, to a programming annotation tool which improves the comprehensibility of the source code listing of a program written in '~C".
.
Background of the Invention As notoriously well known to those skilled in the art of computer programming, it is difficult to follow the structure and flow of a program from a study of the source code listing. Even in a review of one's own worX, difficulties may be encountered if the program was written in the past such that its "philosophy" is no~
~resh in mind. But, it is particularly difficult to undertake the study of a source code listing of a program written partly or wholly by another person or persons since each programmer has his or her own style and thought process in writing programs. Further, it is a perhaps unfortunate fact that (because of productivity demands or even because of poor discipline) programs are no longer routinely subject to higher level documentation, such as by the preparation o~ detailed flow charts; consequently, the difficulty of following one's own program, let alone the work of others, is additionally aggravated.
.-. , ... . . ~ .
~12~3 One highly regarded programming language in wide use among both prb~essional and amateur programmers is "C".
Well written "C" programs of~en ~re~uently employ code blocks which may be "nested" to several levels, and it is troublesome, ~hen examining a source code listing which may have been prepared in the past or by others, to determine the beginnings and ends of the code blocks and the levels of nesting. Those skilled in the art will appreciate that it would be highly desirable to provide, in a "C" source code listing, annotations which will assist the peruser of such in following the code blocking and nesting structure of the listed program, and it is to these ends that my invention is directed.
Objects of the Invention It is therefore a broad object of my invention to provide an annotation tool for source code listings to facilitate following the structure and sequence of a listed program.
It is another object of my invention to provide such a tool which is particularly applicable to employment in conjunction with listings in "C" source code.
It is a more specific object of my invention to provide an annotation tool for "C" source code listin~s which visually identifies each code block and the nesting relationship among all code blocks in a concise and easy to ~ollow presentation.
- . , . ,. , ,., ~.
- 2~11289 ..
Summary of the Invention Briefly, these and other objects of the invention are achieved by a programming tool for providing a graphical representation of the relationships among a plurality of nested blocks integrated into a processed "C" source code listing by first selecting a little used character (such as a tilde 11_11) in the source code language to be employed as a tabbing character and then substituting a dedicated string into the source code for the selected character selected. Next, for each line of code including a start of block "~" character, a tilde and an outbound arrow (~hich can be simulated by a hyphen followed by a "greater than" character) are appended.
Similarly, for each line of code including an end o~
block '')ll character, a tilde and an inbound arrow twhich can be simulated by a "less than" character followed by a hyphen) are appended. Using the tilde as a tabbing character, the inbound and outbound arrows are tabbed into vertical alignment. Next, while sequentially examining the partly processed source code from the first line, a "depth number" is developed for each line now having an inbound or outbound arrow by performing a depth number increment when a line having an outbound arrow is encountered and performing a depth number decrement for the starting depth num~er value of the next line when a given line having an inbound arrow is encountered. The ~, . ............... .. . . . . . . . ........ . . . . -- ~ , . . . . . .. . .
- - 2~112~
depth numbers, and also on~ or more (as indicated by the depth number for A given line~ right justified vertical line segments, are appended to the lines having outbound or inbound arrows. Intermediate lines have appended the same number of verti~al line segments as the last arrowed line if it was outbound or one less than the last arrowed line if it was inbound. Then, horizontal line segment characters are entered in the spaces between the depth number and the leftmost vertical line segment in a given line having an outbound or inbound arrow. Preferably, for best visual appearance and clarity, the horizontal - characters entered between the depth number and the -~ leftmost vertical line se~ment in lines having outbound arrows are hyphen characters, and the horizontal characters entered between the depth number and the leftmost vertical line segment in lines having outbound arrows are underscore characters.
Desç~iption o~he ~rawing The subject matter of the invention is particularly pointed out and distinctly claimed in the concluding portion of the specification. The invention, however, both as to organization and m~thod o~ operation, may best be understood by reference to the following description taken in conjunction with the subjoined claims and ~he.
accompanying drawing of which:
- FIG. 1 is an exemplary brief "C" source code listing . , . .
20~ 12~
as it normally appears;
FIG. 2 is a flow chart illustrating the sequence o~
processing the "C" program of FIG. 1 through a first phase of the subject blocker program, FIG. 3 is a flow chart illustrating th~ sequence of processing the "C" program of FIG. 1 through a second phase of the subject blocker program;
PIG. 4 is a flow chart illustrating the sequence of processing the "C" program of FIG. 1 through a third phase of the subject blocker program; and FIG. 5 is a listing of the "C" program of FIG. 1 after it has been processed by the subject blocker program to provide the sought a~ter code block identification and nesting annotations.
Detailed ~escription of the Invent~ion Referring to FIG. 1, a simple, exemplary "C'! program is listed in source code. While elementary, this program employs several code blocks and several layers of nesting such that it is not at all ~asy to follow upon ~irst inspection, particularly if the program has been written by another or sufficiently in the past that the peruser/programmer has forgotten his/her approach to writing the program. It is therefore desirable to process the exemplary program in accordance with the subject program blocker invention.
The program blocker invention, in its presently .. ;. ~ , , - : . ;. ., ~ . ;
, preferred embodiment, has a three pass structure, and FIG. 2 is a flow chart of Phase One. On beginning the blocker program, a query is presented for the full pathname of the "C" program to be blocked; i.e., its present location in storage. A working copy of the "C1' program is obtained tin read-only mode for safety) and stored in file ".rawc." in the current directory; i.e., the directory in which the subject blocker program is located. The file .rawc. is then loaded into random access memory ("RAM") to begin the actual processing, and a message "FORMATTING HAS STARTED" is displayed.
Each line of the "C" program source code is examined in turn. If a tilde " " is present in one or more instances, a unique string of characters (selected to represent the tilde) is substituted fox each occurrence.
This permits the tilde itself to be reserved for internal tabbing, etc. during execution of the blocker p~ogram as will become more clear below. Those s~illed in "C"
programming will understand that the tilde is one of the least used operators in "C" and was selected ~or that reason in the example; however, any other seldom used operator could be selected for the special purpose requirement in the subject blocker program.
Each line is then examined for the presence of the "~" character which indicates "star~ of block" in "C".
If the n ( 1l character is present in a given line, a tabbed outbound arrQw "-->" (i.e., a tilde followed by a hyphen .. : .:: , : . . : ~ .
- 2~1283 .
and a "greater than" character) is appended to that line.
Similarly, each line is next examined for the presence of the "}" character which indicates "end of block", and if present, a tabbed inbound arrow 11_<_11 (a tilde followed by a "less than" character and a hyphen) is appended to that line. Then, interpreting each tilde as a tab character, the inbound and outbound arrows are pushed to the current right mar~in to establish a "beach head" at the right side.
Next, a "depth number" is appended to each line now haYing inbound and outbound arrows at the right margin.
The depth number for each such line is obtained by performing a depth number increment when a line having an outbound arrow "-~" is encoun~ered and performing a depth number decrement ~or the starting depth number value of the next line when a given line having an inbound arrow "<-" is encountered. The depth numbers thus serve to denote the start, end and nesting depth of all the code blocks.
As a housekeeping function, the now unnecessary tildes are deleted. (It may be noted, however, that the tilde remains available for use in the blocker program since the selected unique string is still in place.) A
message "ARROWS ARE IN PLACE" is then displayed, and Phase Two of the blocker program may be entered.
Referring to Fig. 3, there is appended to each line of code sufficient "white space" to accom~odate the ~ ~ . .. . . ..
- .. ~
- ., .
.
- - 201~28~
vertical part of the blocker graphics and, for arrowed lines, as many vertical line segments as the depth number indicates are appended. Intermediate lines ha~e appended the same number o~` vertical line segments as the last arrowed line if it was outbound or one less than the last arrowed line if it was inbound. In the presently preferred embodiment, adjacent vertical lines are preferably separated by a blank space for aesthetic and clarity purposes For example, (assuming a maximum accommodation of seven deep nesting and at least two spaces between an arrow and a vertical line) if a line having an "->6" is examined, four spaces and six horizontally spaced vertical lines (separated by intervening single spaces) are appended. If the immediately following line has no arrow appended, it will also have four spaces and six horizontally spaced vertical lines appended. However, if the next line has an "<-5" entry, six spaces and five horizontally spa~ed vertical lines are appended. Thus, it is important to note that the group of vertical lines associated with e~ch line of source code are oriented by this operation so that they are appended in a right justified mamler whereby all vertical line segments are vertically aligned.. In ~his process, bloc~s which start and end sn the same line are ignored. In addition, for unusual}y long lines of source code which extend into the area of the vertical graphics, no vertical lines are entered ~ : . ~ , : . ~:
,,, .: ::- : ,::
- , 2~28~
since the eye can readily follow the vertical ~low of the graphics ~through~ such long lines.
At this point, the message "VERTICALS LINES DRAWNI' is displayed, the again unnecessary tildes are removed and Phase 3 of the blocker program is entered. The purpose of Phase 3, as will be apparent from Fig. 4, is to emplace the horizontal components of the blocker graphics. This task is readily achieved by employing a sufficient number of global replacement passes to equal twice the nesting depth accommodated (which is seven in the presently preferred embodiment). During the first series of global passes, the hyphen character is substituted for each space appearing between each outbound arrow and the first vertical line to its right.
Then, the second series of global passes serves to replace each space appearing between each inbound arrow and the firs. vertical line to its right .with an underscore character; i.e., " ". ~The selection of the underscore character for this purpose is simply for improved appearance and clarity.) The message "HORIZONTALS ARE FINISHED" is then displayed, the blocked source code is stored back to file ".rawc", and a message to that effect t'lOUTPUT IS WAITING I~ ~RAWC") is displayed.
The exemplary "C" source program illustrated in Fig.
1 may now be viewed as shown in Fig. 5 with the blocking graphics in place. Those skilled in the art will . - . . . ~
: , .: , ~.
- . - . ,~
~ .' ~ .- ., ~ , -2~11289 immediately recognize the dramatic improvement in clarity and comprehension which- processing the listing through the subject blocker tool has obtained. It will also be apparent from a study of Fig. 5 why the vertical lines are, in effect, right justified; i.e., a given block at a given depth wraps to the right of the next higher ; numbered block and to the left of the next lower numbered block such that the block with depth number 1 has vertical lines at the rightmost position. This configuration tends to follow the "mental picture" which "C" programmers intuitively try to form in following code block relationships.
Thus, while the principles of the invention have now been made clear in an illustrative embodiment, there will be immediately obvious to those skilled in the art many modifications of program s~ructure and arrangements used in the practice of the invention which are particularly adapted for specific environments and operating reguirements wi~hout departing from those principles.
., 1~
. .
- .. , ... .... ~
Summary of the Invention Briefly, these and other objects of the invention are achieved by a programming tool for providing a graphical representation of the relationships among a plurality of nested blocks integrated into a processed "C" source code listing by first selecting a little used character (such as a tilde 11_11) in the source code language to be employed as a tabbing character and then substituting a dedicated string into the source code for the selected character selected. Next, for each line of code including a start of block "~" character, a tilde and an outbound arrow (~hich can be simulated by a hyphen followed by a "greater than" character) are appended.
Similarly, for each line of code including an end o~
block '')ll character, a tilde and an inbound arrow twhich can be simulated by a "less than" character followed by a hyphen) are appended. Using the tilde as a tabbing character, the inbound and outbound arrows are tabbed into vertical alignment. Next, while sequentially examining the partly processed source code from the first line, a "depth number" is developed for each line now having an inbound or outbound arrow by performing a depth number increment when a line having an outbound arrow is encountered and performing a depth number decrement for the starting depth num~er value of the next line when a given line having an inbound arrow is encountered. The ~, . ............... .. . . . . . . . ........ . . . . -- ~ , . . . . . .. . .
- - 2~112~
depth numbers, and also on~ or more (as indicated by the depth number for A given line~ right justified vertical line segments, are appended to the lines having outbound or inbound arrows. Intermediate lines have appended the same number of verti~al line segments as the last arrowed line if it was outbound or one less than the last arrowed line if it was inbound. Then, horizontal line segment characters are entered in the spaces between the depth number and the leftmost vertical line segment in a given line having an outbound or inbound arrow. Preferably, for best visual appearance and clarity, the horizontal - characters entered between the depth number and the -~ leftmost vertical line se~ment in lines having outbound arrows are hyphen characters, and the horizontal characters entered between the depth number and the leftmost vertical line segment in lines having outbound arrows are underscore characters.
Desç~iption o~he ~rawing The subject matter of the invention is particularly pointed out and distinctly claimed in the concluding portion of the specification. The invention, however, both as to organization and m~thod o~ operation, may best be understood by reference to the following description taken in conjunction with the subjoined claims and ~he.
accompanying drawing of which:
- FIG. 1 is an exemplary brief "C" source code listing . , . .
20~ 12~
as it normally appears;
FIG. 2 is a flow chart illustrating the sequence o~
processing the "C" program of FIG. 1 through a first phase of the subject blocker program, FIG. 3 is a flow chart illustrating th~ sequence of processing the "C" program of FIG. 1 through a second phase of the subject blocker program;
PIG. 4 is a flow chart illustrating the sequence of processing the "C" program of FIG. 1 through a third phase of the subject blocker program; and FIG. 5 is a listing of the "C" program of FIG. 1 after it has been processed by the subject blocker program to provide the sought a~ter code block identification and nesting annotations.
Detailed ~escription of the Invent~ion Referring to FIG. 1, a simple, exemplary "C'! program is listed in source code. While elementary, this program employs several code blocks and several layers of nesting such that it is not at all ~asy to follow upon ~irst inspection, particularly if the program has been written by another or sufficiently in the past that the peruser/programmer has forgotten his/her approach to writing the program. It is therefore desirable to process the exemplary program in accordance with the subject program blocker invention.
The program blocker invention, in its presently .. ;. ~ , , - : . ;. ., ~ . ;
, preferred embodiment, has a three pass structure, and FIG. 2 is a flow chart of Phase One. On beginning the blocker program, a query is presented for the full pathname of the "C" program to be blocked; i.e., its present location in storage. A working copy of the "C1' program is obtained tin read-only mode for safety) and stored in file ".rawc." in the current directory; i.e., the directory in which the subject blocker program is located. The file .rawc. is then loaded into random access memory ("RAM") to begin the actual processing, and a message "FORMATTING HAS STARTED" is displayed.
Each line of the "C" program source code is examined in turn. If a tilde " " is present in one or more instances, a unique string of characters (selected to represent the tilde) is substituted fox each occurrence.
This permits the tilde itself to be reserved for internal tabbing, etc. during execution of the blocker p~ogram as will become more clear below. Those s~illed in "C"
programming will understand that the tilde is one of the least used operators in "C" and was selected ~or that reason in the example; however, any other seldom used operator could be selected for the special purpose requirement in the subject blocker program.
Each line is then examined for the presence of the "~" character which indicates "star~ of block" in "C".
If the n ( 1l character is present in a given line, a tabbed outbound arrQw "-->" (i.e., a tilde followed by a hyphen .. : .:: , : . . : ~ .
- 2~1283 .
and a "greater than" character) is appended to that line.
Similarly, each line is next examined for the presence of the "}" character which indicates "end of block", and if present, a tabbed inbound arrow 11_<_11 (a tilde followed by a "less than" character and a hyphen) is appended to that line. Then, interpreting each tilde as a tab character, the inbound and outbound arrows are pushed to the current right mar~in to establish a "beach head" at the right side.
Next, a "depth number" is appended to each line now haYing inbound and outbound arrows at the right margin.
The depth number for each such line is obtained by performing a depth number increment when a line having an outbound arrow "-~" is encoun~ered and performing a depth number decrement ~or the starting depth number value of the next line when a given line having an inbound arrow "<-" is encountered. The depth numbers thus serve to denote the start, end and nesting depth of all the code blocks.
As a housekeeping function, the now unnecessary tildes are deleted. (It may be noted, however, that the tilde remains available for use in the blocker program since the selected unique string is still in place.) A
message "ARROWS ARE IN PLACE" is then displayed, and Phase Two of the blocker program may be entered.
Referring to Fig. 3, there is appended to each line of code sufficient "white space" to accom~odate the ~ ~ . .. . . ..
- .. ~
- ., .
.
- - 201~28~
vertical part of the blocker graphics and, for arrowed lines, as many vertical line segments as the depth number indicates are appended. Intermediate lines ha~e appended the same number o~` vertical line segments as the last arrowed line if it was outbound or one less than the last arrowed line if it was inbound. In the presently preferred embodiment, adjacent vertical lines are preferably separated by a blank space for aesthetic and clarity purposes For example, (assuming a maximum accommodation of seven deep nesting and at least two spaces between an arrow and a vertical line) if a line having an "->6" is examined, four spaces and six horizontally spaced vertical lines (separated by intervening single spaces) are appended. If the immediately following line has no arrow appended, it will also have four spaces and six horizontally spaced vertical lines appended. However, if the next line has an "<-5" entry, six spaces and five horizontally spa~ed vertical lines are appended. Thus, it is important to note that the group of vertical lines associated with e~ch line of source code are oriented by this operation so that they are appended in a right justified mamler whereby all vertical line segments are vertically aligned.. In ~his process, bloc~s which start and end sn the same line are ignored. In addition, for unusual}y long lines of source code which extend into the area of the vertical graphics, no vertical lines are entered ~ : . ~ , : . ~:
,,, .: ::- : ,::
- , 2~28~
since the eye can readily follow the vertical ~low of the graphics ~through~ such long lines.
At this point, the message "VERTICALS LINES DRAWNI' is displayed, the again unnecessary tildes are removed and Phase 3 of the blocker program is entered. The purpose of Phase 3, as will be apparent from Fig. 4, is to emplace the horizontal components of the blocker graphics. This task is readily achieved by employing a sufficient number of global replacement passes to equal twice the nesting depth accommodated (which is seven in the presently preferred embodiment). During the first series of global passes, the hyphen character is substituted for each space appearing between each outbound arrow and the first vertical line to its right.
Then, the second series of global passes serves to replace each space appearing between each inbound arrow and the firs. vertical line to its right .with an underscore character; i.e., " ". ~The selection of the underscore character for this purpose is simply for improved appearance and clarity.) The message "HORIZONTALS ARE FINISHED" is then displayed, the blocked source code is stored back to file ".rawc", and a message to that effect t'lOUTPUT IS WAITING I~ ~RAWC") is displayed.
The exemplary "C" source program illustrated in Fig.
1 may now be viewed as shown in Fig. 5 with the blocking graphics in place. Those skilled in the art will . - . . . ~
: , .: , ~.
- . - . ,~
~ .' ~ .- ., ~ , -2~11289 immediately recognize the dramatic improvement in clarity and comprehension which- processing the listing through the subject blocker tool has obtained. It will also be apparent from a study of Fig. 5 why the vertical lines are, in effect, right justified; i.e., a given block at a given depth wraps to the right of the next higher ; numbered block and to the left of the next lower numbered block such that the block with depth number 1 has vertical lines at the rightmost position. This configuration tends to follow the "mental picture" which "C" programmers intuitively try to form in following code block relationships.
Thus, while the principles of the invention have now been made clear in an illustrative embodiment, there will be immediately obvious to those skilled in the art many modifications of program s~ructure and arrangements used in the practice of the invention which are particularly adapted for specific environments and operating reguirements wi~hout departing from those principles.
., 1~
. .
- .. , ... .... ~
Claims (8)
1. A computer-implemented method of generating a graphical representation of the relationships among a plurality of nested blocks for integration into a processed listing of a source code computer program, said method comprising the steps of:
A) obtaining an unprocessed source code listing;
B) select a character in the source code language to be employed as a tabbing character;
C) substitute a dedicated string in the source code for the character selected in step B);
D) for each line of the source code including a "start of block" character, append a tabbing character as selected in step B) and an outbound arrow;
E) for each line of the source code including an end of block character, append a tabbing character as selected in step B) and an inbound arrow;
F) tabbing the outbound and inbound arrows into vertical alignment;
G) while sequentially examining the partly processed source code from the first line, developing a "depth number" for each line now having an inbound or outbound arrow by:
1) performing a depth number increment when a line having an outbound arrow is encountered; and
A) obtaining an unprocessed source code listing;
B) select a character in the source code language to be employed as a tabbing character;
C) substitute a dedicated string in the source code for the character selected in step B);
D) for each line of the source code including a "start of block" character, append a tabbing character as selected in step B) and an outbound arrow;
E) for each line of the source code including an end of block character, append a tabbing character as selected in step B) and an inbound arrow;
F) tabbing the outbound and inbound arrows into vertical alignment;
G) while sequentially examining the partly processed source code from the first line, developing a "depth number" for each line now having an inbound or outbound arrow by:
1) performing a depth number increment when a line having an outbound arrow is encountered; and
2) performing a depth number decrement for the starting depth number value of the next line when a given line having an inbound arrow is encountered;
H) appending the depth numbers obtained in step H) to the lines having outbound or inbound arrows;
I) for each line having outbound or inbound arrows, appending the number of vertical line segments indicated by the depth number for that line;
j) for lines intermediate arrowed lines:
1) if following a line having an outbound arrow, appending the same number of vertical line segments as that arrowed line; and 2) if following a line having an inbound arrow, appending one less than the number of vertical line segments as that arrowed line;
K) right justifying all the vertical line segments;
and L) for each line having outbound or inbound arrows, entering horizontal line segment characters in spaces between the depth number and the leftmost vertical line segment.
2. The programming tool of Claim 1 in which, during step L):
A) the horizontal characters entered between the depth number and the leftmost vertical line segment in lines having outbound arrows are hyphen characters, and B) the horizontal characters entered between the depth number and the left most vertical line segment in lines having outbound arrows are underscore characters.
H) appending the depth numbers obtained in step H) to the lines having outbound or inbound arrows;
I) for each line having outbound or inbound arrows, appending the number of vertical line segments indicated by the depth number for that line;
j) for lines intermediate arrowed lines:
1) if following a line having an outbound arrow, appending the same number of vertical line segments as that arrowed line; and 2) if following a line having an inbound arrow, appending one less than the number of vertical line segments as that arrowed line;
K) right justifying all the vertical line segments;
and L) for each line having outbound or inbound arrows, entering horizontal line segment characters in spaces between the depth number and the leftmost vertical line segment.
2. The programming tool of Claim 1 in which, during step L):
A) the horizontal characters entered between the depth number and the leftmost vertical line segment in lines having outbound arrows are hyphen characters, and B) the horizontal characters entered between the depth number and the left most vertical line segment in lines having outbound arrows are underscore characters.
3. A computer-implemented method of generating a graphical representation of the relationships among a plurality of nested blocks for integration into a processed listing of a "C" source code computer program, said method comprising the steps of:
A) obtaining an unprocessed source code listing;
B) select a character in the source code language to be employed as a tabbing character;
C) substitute a dedicated string in the source code for the character selected in step B);
D) for each line of the source code including a "{"
character, append a tabbing character as selected in step B) and an outbound arrow, E) for each line of the source code including a "}"
character, append a tabbing character as selected in step B) and an inbound arrow, F) tabbing the outbound and inbound arrows into vertical alignment, G) while sequentially examining the partly processed source code from the first line, developing a "depth number" for each line now having an inbound or outbound arrow by:
1) performing a depth number increment when a line having an outbound arrow is encountered;
and 2) performing a depth number decrement for the starting depth number value of the next line when a given line having an inbound arrow is encountered;
H) appending the depth numbers obtained in step H) to the lines having outbound or inbound arrows;
I) for each line having outbound or inbound arrows, appending the number of vertical line segments indicated by the depth number for that line;
j) for lines intermediate arrowed lines:
1) if following a line having an outbound arrow, appending the same number of vertical line segments as that arrowed line; and 2) if following a line having an inbound arrow, appending one less than the number of vertical line segments as that arrowed line;
K) right justifying all the vertical line segments;
and L) for each line having outbound or inbound arrows, entering horizontal line segment characters in spaces between the depth number and the leftmost vertical line segment.
A) obtaining an unprocessed source code listing;
B) select a character in the source code language to be employed as a tabbing character;
C) substitute a dedicated string in the source code for the character selected in step B);
D) for each line of the source code including a "{"
character, append a tabbing character as selected in step B) and an outbound arrow, E) for each line of the source code including a "}"
character, append a tabbing character as selected in step B) and an inbound arrow, F) tabbing the outbound and inbound arrows into vertical alignment, G) while sequentially examining the partly processed source code from the first line, developing a "depth number" for each line now having an inbound or outbound arrow by:
1) performing a depth number increment when a line having an outbound arrow is encountered;
and 2) performing a depth number decrement for the starting depth number value of the next line when a given line having an inbound arrow is encountered;
H) appending the depth numbers obtained in step H) to the lines having outbound or inbound arrows;
I) for each line having outbound or inbound arrows, appending the number of vertical line segments indicated by the depth number for that line;
j) for lines intermediate arrowed lines:
1) if following a line having an outbound arrow, appending the same number of vertical line segments as that arrowed line; and 2) if following a line having an inbound arrow, appending one less than the number of vertical line segments as that arrowed line;
K) right justifying all the vertical line segments;
and L) for each line having outbound or inbound arrows, entering horizontal line segment characters in spaces between the depth number and the leftmost vertical line segment.
4. The programming tool of Claim 3 in which:
A) the character selected in step B) is a tilde "~";
B) the outbound arrow is simulated by a hyphen character followed by a "greater than" character;
and C) the inbound arrow is simulated by a "less than"
character followed by a hyphen charactery.
A) the character selected in step B) is a tilde "~";
B) the outbound arrow is simulated by a hyphen character followed by a "greater than" character;
and C) the inbound arrow is simulated by a "less than"
character followed by a hyphen charactery.
5. The programming tool of Claim 4 in which, during step L);
A) the horizontal characters entered between the depth number and the leftmost vertical line segment in lines having outbound arrows are hyphen characters; and B) the horizontal characters entered between the depth number and the leftmost vertical line segment in lines having outbound arrows are underscore characters.
A) the horizontal characters entered between the depth number and the leftmost vertical line segment in lines having outbound arrows are hyphen characters; and B) the horizontal characters entered between the depth number and the leftmost vertical line segment in lines having outbound arrows are underscore characters.
6. A computer-implemented method of generating a graphical representation of nested blocks in the computer program listing of a source code computer program; wherein said source code computer program is entered into the memory of a computer; wherein said source code computer program is of the type in which a first unique character is included in the first line of each block of said program and a second unique character is included in the last line of each block of said program; and wherein said method is implemented by said computer retrieving from said memory each line of said program and:
a) appending a special character at the end of each line which includes a first or second unique character;
b) moving said special characters into vertical alignment;
c) sequentially examining each line including a first or second unique character and appending a number to said line adjacent the special character on said line, said number being varied by:
(i) incrementing said number for each line which includes a first unique character, and (ii) decrementing said number for each line which includes a second unique character;
d) sequentially examining each line of said source code and appending a quantity of spaced apart vertical line segment characters to said line, said quantity being determined according to:
(1) if said line includes a number, said quantity is equal to said number;
(ii) if said line does not include a number, but (a) the last-preceding line which includes a 16a unique character includes a first unique character, said quantity is equal to the said number in said last-preceding line, or (b) the last-preceding line which includes a unique character includes a second unique character, said quantity is one less than said number in said last-preceding line;
wherein corresponding vertical line segment characters are moved into vertical alignment; and e) for each line which includes a unique character, appen-ding horizontal line segment characters between said number in said line and the closest vertical line segment character.
a) appending a special character at the end of each line which includes a first or second unique character;
b) moving said special characters into vertical alignment;
c) sequentially examining each line including a first or second unique character and appending a number to said line adjacent the special character on said line, said number being varied by:
(i) incrementing said number for each line which includes a first unique character, and (ii) decrementing said number for each line which includes a second unique character;
d) sequentially examining each line of said source code and appending a quantity of spaced apart vertical line segment characters to said line, said quantity being determined according to:
(1) if said line includes a number, said quantity is equal to said number;
(ii) if said line does not include a number, but (a) the last-preceding line which includes a 16a unique character includes a first unique character, said quantity is equal to the said number in said last-preceding line, or (b) the last-preceding line which includes a unique character includes a second unique character, said quantity is one less than said number in said last-preceding line;
wherein corresponding vertical line segment characters are moved into vertical alignment; and e) for each line which includes a unique character, appen-ding horizontal line segment characters between said number in said line and the closest vertical line segment character.
7. The method of claim 6, further characterized by:
in step a), also appending an outbound arrow adjacent said special character in each line including a first unique character and appending an inbound arrow adjacent said special character in each line including a second unique character.
in step a), also appending an outbound arrow adjacent said special character in each line including a first unique character and appending an inbound arrow adjacent said special character in each line including a second unique character.
8. The method of claim 6, further characterized by:
in step e), said horizontal line segment characters are different in lines which include a first unique character than in lines which include a second unique character.
in step e), said horizontal line segment characters are different in lines which include a first unique character than in lines which include a second unique character.
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US328,650 | 1981-12-08 | ||
US32865089A | 1989-03-27 | 1989-03-27 |
Publications (1)
Publication Number | Publication Date |
---|---|
CA2011289A1 true CA2011289A1 (en) | 1990-09-27 |
Family
ID=23281843
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CA 2011289 Abandoned CA2011289A1 (en) | 1989-03-27 | 1990-03-01 | "c" program source blocker |
Country Status (5)
Country | Link |
---|---|
EP (1) | EP0397991B1 (en) |
JP (1) | JP2706348B2 (en) |
AU (1) | AU623499B2 (en) |
CA (1) | CA2011289A1 (en) |
DE (1) | DE69028437T2 (en) |
Family Cites Families (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPS5913775B2 (en) * | 1979-05-14 | 1984-03-31 | シャープ株式会社 | Format control method of character processing device |
JPS57108856A (en) * | 1980-12-25 | 1982-07-07 | Fujitsu Ltd | Processing system for information error display of form |
JPS61160139A (en) * | 1984-12-31 | 1986-07-19 | Nec Corp | Automatic stepping editor of program list |
US4965765A (en) * | 1986-05-16 | 1990-10-23 | International Business Machines Corp. | Distinguishing nested structures by color |
-
1990
- 1990-02-26 AU AU50188/90A patent/AU623499B2/en not_active Ceased
- 1990-03-01 CA CA 2011289 patent/CA2011289A1/en not_active Abandoned
- 1990-03-21 DE DE1990628437 patent/DE69028437T2/en not_active Expired - Fee Related
- 1990-03-21 EP EP19900105343 patent/EP0397991B1/en not_active Expired - Lifetime
- 1990-03-27 JP JP2078582A patent/JP2706348B2/en not_active Expired - Lifetime
Also Published As
Publication number | Publication date |
---|---|
EP0397991B1 (en) | 1996-09-11 |
JPH02281335A (en) | 1990-11-19 |
AU5018890A (en) | 1990-09-27 |
EP0397991A3 (en) | 1991-09-18 |
EP0397991A2 (en) | 1990-11-22 |
DE69028437D1 (en) | 1996-10-17 |
DE69028437T2 (en) | 1997-04-24 |
JP2706348B2 (en) | 1998-01-28 |
AU623499B2 (en) | 1992-05-14 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US5307493A (en) | "C" program source blocker | |
CA2056865C (en) | Interactive computerized document assembly system | |
US20070136321A1 (en) | System for preparing a patent application | |
DE19805501A1 (en) | Multi-lingual computer system configuration method | |
US20170097747A1 (en) | System for preparing a patent application | |
US7890851B1 (en) | System for facilitating the preparation of a patent application | |
US20170098290A1 (en) | System for preparing a patent application | |
DE3129011A1 (en) | "ELECTRONIC TRANSLATION DEVICE" | |
EP0349463B1 (en) | Method of simultaneously entering data into overlapped windows | |
CA2011289A1 (en) | "c" program source blocker | |
KR0170562B1 (en) | Method of displaying text having improved useability | |
Gusenius et al. | C" program source blocker | |
JP3085383B2 (en) | Document processing method | |
US5867700A (en) | Information processing apparatus and method for displaying a first window displaying a list of names of attribute information and a second window displaying search and substitution command columns | |
Cisco | Using the style.dft File | |
JPH0361596B2 (en) | ||
WO2021025091A2 (en) | Information management device and file management method | |
JPS62214438A (en) | Software specification reuse system | |
JP3085389B2 (en) | Document allocation method | |
JP2519250B2 (en) | Sequence logic program generator | |
JPH01149164A (en) | Text editing system | |
JPS62272363A (en) | Document image electronic filing device | |
JPS6231470A (en) | Linking system for documentation device | |
JPH0444185A (en) | Document reader | |
JP2982180B2 (en) | Writing device |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
EEER | Examination request | ||
FZDE | Dead |