(57) A computer-aided software development system includes programs to implement edit,
compile, link and run sequences, all from memory, at very high speed. The compiler
and linker operate on an incremental basis, line-by-line or increment-by-increment,
so if only one line is changed in an edit session, then only that line and lines related
to it need be recompiled if no other code is affected; linking is also done in a manner
to save and re-use parts of link tables and link lists which are not changed from
one edit session to another. Dependency analysis may be performed incrementally, without
requiring the user to enter dependencies. Scanning is also done incrementally, and
the resulting token lists and token tables, and lexical increment tables, are saved
in memory to be used again where no changes are made. All of the linking tables are
saved in memory so there is no need to generate link tables for increments of code
where no changes in links are needed. The parser is able to skip lines or blocks of
lines of source code which haven't been changed; for this purpose, each line of source
text in the editor has a change-tag to indicate whether this line has been changed,
and from this change-tag information a clean-lines table is built having a clean-lines
indication for each line of source code, indicating how many clean lines follow the
present line. All of the source code text modules, the token lists, symbol tables,
code tables and related data saved from one compile to another are maintained in virtual
memory rather than in files so that speed of operation is enhanced. Also, the object
code created is maintained in memory rather than in a file, and executed from this
memory image, to reduce delays. A virtual memory management arrangement for the system
assures that all of the needed data modules and code is present in real memory in
the phase being implemented, with a minimum of page faults and page swapping during
the phase, again to enhance operating speed.
|

|