SGML Users' Group SGML Parser Materials ARCSGML 1.0

advertisement
SGML Users' Group SGML Parser Materials
ARCSGML 1.0
Please see the License and Disclaimer of Liability in LICENSE.TXT.
What Is It?
ARCSGML is first and foremost something that is being licensed for
free, with no perceptible restrictions on its use or distribution.
That is the good part -- the obverse of the coin is that if no one is
receiving revenue for ARCSGML, no one is going to take responsibility
for it either. Therefore, as the "License and Disclaimer of
Liability" states, no claims are made for ARCSGML and no person or
organization is responsible if any imagined claims or dreams are
unfulfilled. The following description should therefore be regarded as
a fantasy.
Function
ARCSGML is a toolkit for use in developing conforming SGML parsers,
systems, and applications. It supports the reference concrete syntax
and all features except LINK, CONCUR, and SUBDOC (although some hooks
are in place to get you started on these). It was originally written
to validate the 1983 working draft of the SGML standard, and was
subsequently maintained to track the standard through its final phases
of development, culminating in the amendment. (See ARCTECH.DOC for
system declaration information.)
A parser built with ARCSGML is employed as a coroutine with an
application, called a "text processor (TP)" in the code comments. All
memory management, I/O, and error handling occur in separate modules
that can be revised to suit individual environments without affecting
the core parser. Message texts are segregated to facilitate
translation to languages other than English.
The application can either interface directly to parser control
blocks, or it can be isolated from them by an application programming
interface (API). APIs for both C and REXX are included. (REXX is an
easy-to-use interpreted language with powerful parsing and string
handling functions that are well-suited for converting SGML documents
to other formats -- such as word processor files.)
A sample application is included in the form of a markup validator
(VM2). An optional switch instructs the validator to display the
externals of the SGML parsing process (e.g., current element, current
entity, current short reference map) as an aid to debugging DTDs.
(See VM2HELP.DOC for details.)
An annotated list of the package contents can be found in
ARCFILES.DOC.
Portability
ARCSGML was developed entirely on a succession of IBM PC computers
running PC-DOS, but has proven to be portable to other hardware and
software platforms. Preparation for the SGMLUG distribution of
ARCSGML (ARCSGML 1.0) was done with Borland C++ 2.0 on DOS 4.01
(but only the C compiler of the integrated development environment was
used, not C++). Microsoft C 5.1 was used on previous versions (command
line compiler only).
The code compiles and executes in both the small and large memory
models.
The code includes internal trace routines for debugging.
These can be excluded from production versions by defining "FINAL" and
omitting TRACESET from the build. The distributed executable markup
validator (VM2.EXE) excludes the trace code.
More technical details can be found in ARCTECH.DOC.
Testing
Although programs derived from ARCSGML have been tested extensively
with modern SGML test suites, the development of ARCSGML predated the
establishment of test suite guidelines. The SGMLTEST.EXE archive
includes a number of ad hoc test cases. Those with filetypes of "VM2"
contain the (presumably) correct VM2 output from the corresponding
files with filetype "SGM". (Other filetypes are used for entities
that are referenced from *.SGM files, and for additional materials.)
Documentation
The documentation files and the extensively commented source code are
it. (I hope to write more, but don't wait for it!) That may seem
somewhat daunting, but several successful ports and adaptations of the
code have been made by programmers with whom I have had little contact
(and who didn't even have this file to get them started!). Most of
their questions tended to be about the SGML language -- all of the
answers I gave them are in The SGML Handbook.
Each source code file usually has a description at its start, although if
a
file contains many functions, there may be descriptions at the
beginning of each function instead. In some files, descriptions of
the most recent changes made, or of "TO DO" items, may also occur at
the start.
I am not in a position personally to answer questions about ARCSGML.
However, the SGML Project of the University of Exeter is establishing
a clearinghouse for ARCSGML information. Contact:
Paul Ellison, Director
The SGML Project
University of Exeter
North Park Road
Exeter EX4 4QE
United Kingdom
Phone: +44 392 26 39 46
E-mail: SGML@EXETER.AC.UK
Please send The SGML Project your comments, enhancements, and bug fixes.
(Yes, there is at least one bug, left there in the ancient tradition to
avoid offending the gods by trying to be perfect).
Charles F. Goldfarb,
Honorary Technical Advisor, SGMLUG
Saratoga, California
July 3, 1991
Download