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