Table of Contents
1. Interscript Version
2. Introduction
2.1. Interscript
2.2. Features
2.2.1. Python Scripting
2.2.2. Platform independent filenames
2.2.3. Documentation Constructions
2.2.3.1. Automatic heading numbering
2.2.3.2. Cross references
2.2.3.3. Tables
2.2.3.4. Nestable Lists
2.2.3.5. URL citation
2.2.3.6. Code and Prose displays
2.2.3.7. Basic font selection
2.2.4. Advanced Web Weaving
2.2.4.1. Automatic pagination on headings
2.2.4.2. Syntax Highlighting
2.2.4.3. CSS1 Cascading Style Sheets
2.2.4.4. Folding Table of Contents
2.2.4.5. Frame presentation
2.2.4.6. Flexible navigation
2.2.4.7. Table of classes
2.2.4.8. Table of functions
2.2.4.9. Table of identifiers
2.2.4.10. Table of sections
2.2.4.11. Table of tests
2.2.4.12. Convergence status
2.2.4.13. Source tree
2.2.5. PerlPOD support
2.2.6. Extensive Python Support
2.2.7. Latex, Plain text and flat Html Weavers
2.2.8. Html input filter
2.2.9. XML support planned
2.2.10. Unit testing
2.2.10.1. Test output verification
2.2.11. Option help
2.2.12. Tutorial
2.2.13. Statement of Requirements
2.2.14. Design Document
2.2.15. Full source listing
3. Requirements
3.1. Functionality
3.1.1. Tangling
3.1.1.1. Supported Programming Languages
3.1.1.2. Source Tracking
3.1.1.2.1. C and C++
3.1.1.3. Chunking
3.1.1.4. Parsing for reference tables
3.1.1.4.1. Tokenisable Languages
3.1.1.4.1.1. Identifier reference
3.1.1.4.2. Fully Parsable Languages
3.1.1.4.3. Partially Parsable Languages
3.1.1.4.3.1. Class reference
3.1.1.4.4. Function reference
3.1.1.5. Parsing for embedded documentation
3.1.1.5.1. Perl DOC
3.1.1.5.2. Java DOC
3.1.1.5.3. Eiffel
3.1.1.5.4. Python Doc strings
3.1.1.6. Internationalisation
3.1.2. Weaving
3.1.2.1. Individual Weavers
3.1.2.2. Individual weaver capabilities
3.1.2.2.1. Fonts
3.1.2.2.2. Lists
3.1.2.2.3. Displays
3.1.2.2.4. Tables
3.1.2.2.5. Headings
3.1.2.2.6. Code echo
3.1.2.2.7. Citations
3.1.2.3. Internationalisation
3.1.3. Building
3.1.3.1. Python hosting
3.1.3.2. Compilers
3.1.3.2.1. CPython
3.1.3.2.2. JPython
3.1.3.3. Diff/Patch
3.1.3.4. Executing external tools
3.2. Interface
3.2.1. Unified command interface
3.3. Management
3.3.1. Software Metrics
3.3.1.1. Change Impact Analysis
3.3.1.2. Measuring Change Impact
3.3.2. Programming metrics
3.4. Implementation pragmatics
4. Design Fundamentals
4.1. Devices
4.1.1. File names
4.1.1.1. Named File Source Names
4.1.1.2. Named File Sink Names
4.2. Processors
4.3. Tanglers
4.4. Lexical Scoping
4.5. Weaver Control
4.6. Source Tracking
4.7. Parsing
4.8. Documentation Constructions
4.9. Microformatting shortcuts
4.10. Weaver Architecture
4.10.1. Multiple Typesetters
4.10.1.1. Raw output
4.10.2. Multiple Human Languages
4.10.3. Multiple Documents
4.10.4. Cumulated Appendices
5. Tutorial
5.1. Weaving a document
5.1.1. Headings
5.1.2. Separating paragraphs
5.1.3. Line and Page breaks
5.1.4. Displaying code examples
5.1.5. Running Interscript
5.1.5.1. Option help
5.1.5.2. Passes
5.1.5.3. Tangling parts
5.2. Tangling code
5.2.1. Original Source References
5.2.2. Code sections
5.3. Scripting
5.3.1. Long script sections
5.3.2. Very Long script sections
5.4. Unit tests
5.4.1. Weaver Control
5.4.2. Perl hates @
5.5. Fonts
5.6. Lists
5.6.1. Easier lists
5.7. Tables
5.8. Citations
5.9. Cross References
5.10. Including Files
5.10.1. Including code
5.10.2. Displaying Code
5.11. Translating Html
5.12. Special constructions
5.12.1. Table of Contents
5.12.2. Identifier Index
5.12.3. File list
5.12.4. Source list
5.12.5. The Web Weaver
5.12.5.1. Automatic table generation
5.12.5.2. Mandatory Frames
5.12.5.3. Internet Explorer DHTML support
5.12.5.4. Cascading Style Sheets
5.13. File Names
5.14. Questions and Answers
5.14.1. Why are HTML tags printed verbatim, even by the html weaver?
5.14.2. OK, so how do I put HTML into a document?
5.14.2.1. Tag method
5.14.2.2. Cheat method 1
5.14.2.3. Cheat method 2
5.14.3. How can I use existing HTML as a source?
5.14.4. Isn't it hard to create an HTML filter?
5.14.5. Why are blank lines ignored?
5.14.6. Why do I get multiple spaces in my document?
5.14.7. The indentation of my programs is all wrong. Why?
5.14.8. How do I get existing code into Interscript?
5.14.9. What if I just want to print it?
5.14.10. How do I debug Interscript
6. Implementation
6.1. Interscript Module
6.1.1. Construct Global Frame
6.1.2. Set version
6.1.3. Listing of iscr.pak source
6.2. Core Subpackage
6.2.1. Sets
6.2.1.1. Test source
6.2.1.2. Test output
6.2.2. Stack
6.2.3. protocol module
6.2.3.1. Standard Protocol Rules
6.2.3.2. Source
6.2.3.3. Test
6.3. Drivers Subpackage
6.3.1. Source Drivers Subpackage
6.3.1.1. Source Drivers Module
6.3.1.2. Source Base
6.3.1.2.1. End Exceptions
6.3.1.2.2. Source Base Class
6.3.1.3. Disk File Input
6.3.1.4. URL input
6.3.1.5. FTP input
6.3.1.6. HTTP input
6.3.1.7. Standard Input
6.3.1.8. Cache
6.3.2. Sink Drivers
6.3.2.1. Sink Base Class
6.3.2.2. Null Sink
6.3.2.3. Tee Sink
6.3.2.4. Simple Disk File Sink
6.3.2.5. Complex Disk File Sink
6.3.2.6. Standard Output Sink
6.3.2.7. Persistent Storage Sink
6.3.3. Storage Drivers
6.3.3.1. Memory Driver
6.3.3.2. Disk Driver
6.4. Weavers
6.4.1. Weaver Base
6.4.2. Raw weaver
6.4.3. Multiplex Weaver
6.4.4. Plain text weaver
6.4.4.1. reference processor
6.4.4.2. Table of Contents
6.4.4.3. Code File List
6.4.4.4. Code File Status
6.4.4.5. Input File List
6.4.4.6. Include List
6.4.4.7. Tables
6.4.4.8. Code Output
6.4.4.9. Citations
6.4.4.10. Citations
6.4.5. HTML Weaver
6.4.5.1. Initialisation
6.4.5.2. Termination
6.4.5.3. Body Output and Mode Control
6.4.5.4. Reference Processor
6.4.5.5. Headings
6.4.5.6. Lists
6.4.5.6.1. Numbered Lists
6.4.5.6.2. Bullet Lists
6.4.5.6.3. Keyed Lists
6.4.5.7. Code Output
6.4.5.8. Citations
6.4.5.9. Paragraphs
6.4.5.10. Fonts
6.4.5.11. Identifier Cross Reference Table
6.4.5.12. Class Reference Table
6.4.5.13. Table of Contents
6.4.5.14. Code File List
6.4.5.15. Code File Status
6.4.5.16. Input File List
6.4.5.17. Include List
6.4.5.18. Tables
6.4.5.19. HTML Header
6.4.5.20. Interscript Style Sheet
6.4.6. Web Weaver
6.4.6.1. Bugs
6.4.6.2. Code
6.4.6.2.1. reference processor
6.4.6.2.2. section processor
6.4.6.2.3. heading processor
6.4.6.2.4. document control
6.4.6.2.5. Table of contents
6.4.6.2.5.1. MSIE DOM ECMAScript
6.4.6.2.5.2. Table of contents generator
6.4.6.2.6. Identifier Cross references
6.4.6.3. Test Code
6.4.7. LaTeX Weaver
6.4.7.1. Initialisation
6.4.7.2. Termination
6.4.7.3. Identifier Cross Reference Table
6.4.7.4. Class Reference Table
6.4.7.5. Table of Contents
6.4.7.6. Code File List
6.4.7.7. Source List
6.4.7.8. Latex Preamble
6.4.7.9. Body Output and Mode Control
6.4.7.10. Headings
6.4.7.11. Tables
6.4.7.12. Lists
6.4.7.12.1. Numbered Lists
6.4.7.12.2. Bullet Lists
6.4.7.12.3. Keyed Lists
6.4.7.13. Code Output
6.4.7.14. Paragraphs
6.4.7.15. Fonts
6.4.7.16. Citations
6.4.8. Unimplemented Weavers
6.4.8.1. microsoft word weaver
6.4.8.2. microsoft help weaver
6.4.8.3. nroff weaver
6.4.8.4. lout weaver
6.4.8.5. postscript weaver
6.4.9. auto weaver
6.5. Weaver Filters
6.5.1. Markup filtering weaver
6.5.2. Convenience commands
6.6. Tanglers
6.6.1. Tangler Base class
6.6.2. Null Tangler
6.6.3. Document Tangler
6.6.4. Data Tangler
6.6.5. c Tangler
6.6.5.1. c comment tangler
6.6.5.2. c string tangler
6.6.6. c++ Tangler
6.6.6.1. Hash Tangler
6.6.6.2. c++ comment tangler
6.6.7. Java Tangler
6.6.8. Tcl Tangler
6.6.9. Python Tangler
6.6.9.1. Tokeniser interface
6.6.9.2. Function generator
6.6.9.3. Code generator
6.6.9.4. Document generator
6.6.10. Python Tangler
6.6.11. Python comment tangler
6.6.12. Perl Tangler
6.7. Tokenisers
6.7.1. Python Tokeniser
6.7.1.1. Callback Interface
6.7.1.2. Server Interface
6.7.1.2.1. Main Routine
6.7.2. Parsers
6.7.2.1. HTML Parser
6.8. Html parser test
6.9. LALR(1) Parser table generator
6.9.1. Credits
6.9.1.1. Dependencies
6.9.1.2. Reserved Symbols
6.9.1.3. Grammar Productions
6.9.1.4. Grammar
6.9.1.4.1. Constructor
6.9.1.4.2. Find Nullable NonTerminals
6.9.1.4.3. Find FIRST sets
6.9.1.4.4. Augment grammar
6.9.1.4.5. Find FOLLOW sets
6.9.1.4.6. LALR Closure
6.9.2. LALR Parser Table generator
6.9.3. mkntfirstmap
6.9.3.1. newmkntfirstmap
6.9.3.2. mktfirstmap
6.9.3.3. goto
6.9.3.4. lookaheads
6.9.3.5. kernelsoflalr1items
6.9.3.6. Calculate LALR1items
6.9.3.7. Calculate Action Table
6.9.3.8. Calculate goto table
6.9.3.9. Parser
6.9.4. LR parser engine
6.9.5. Test function
6.9.6. Bootstrapping
6.9.6.1. Test Tokeniser
6.9.6.2. Bootstrapping test
6.10. Introduction to categories
6.10.1. Category of functions
6.10.2. Category of strings
6.10.3. Paths on graphs
6.10.4. Groups
6.11. Felix Object protocol
6.11.1. Category Protocol
6.12. Felix Package
6.12.1. Category Base
6.12.2. Finite Category model
6.12.2.1. Implementation
6.12.2.1.1. Data structure
6.12.2.1.2. Accessors
6.12.2.1.3. Predicates
6.12.2.1.4. Mutators
6.12.3. Standard Categories
6.12.3.1. Implementation
6.12.3.1.1. Empty Category
6.12.3.1.2. Universal Set
6.12.3.1.3. Monoids
6.12.3.1.4. Category with one arrow
6.12.3.1.5. Integer Addition
6.12.3.1.6. Integer Multiplication
6.12.3.1.7. Sequence concatenation
6.12.3.1.7.1. Tuples
6.12.3.1.7.2. Lists
6.12.3.1.7.3. Strings
6.12.3.2. Test standard categories
6.12.3.2.1. Test Output
6.12.4. Categories with simple representation models
6.12.4.1. Sets
6.12.4.2. Category generated by a directed graph
6.12.5. Function category
6.12.5.1. Implementation
6.12.5.1.1. Composable Function
6.12.5.1.2. Identity
6.12.5.1.3. Input Adapter
6.12.5.1.4. Output Adapter
6.12.5.1.5. Constant Function
6.12.5.1.6. Function category
6.12.5.1.7. Function Product
6.12.5.1.8. Function Sum
6.12.5.2. Test
6.12.5.2.1. Test output
6.12.6. Constructions
6.12.6.1. Product
6.12.6.2. Dual
6.12.6.3. Undiscriminated Union
6.12.6.4. Tagged category
6.12.6.5. Discriminated union
6.13. Architecture
6.13.1. The universal frame
6.13.2. Install Frame
6.13.3. The user frame
6.13.4. The project frame
6.13.5. The platform frame
6.13.6. The site frame
6.13.7. The process frame
6.13.7.1. Execute Python Script
6.13.8. Master Frame
6.13.8.1. Run the passes
6.13.9. The pass frame
6.13.9.1. Construct input object
6.13.10. Input Frame
6.13.10.1. The input frame
6.13.10.1.1. Post user methods
6.13.10.1.2. close
6.13.10.1.3. Process file data
6.13.10.2. Commands
6.13.10.2.1. Invoke interscript
6.13.10.2.1.1. Implementation
6.13.10.2.1.2. Test
6.13.10.2.2. Misc: move these
6.13.10.2.3. begin/end blocks
6.13.10.2.3.1. Begin/end test
6.13.10.2.4. Include file/source
6.13.10.2.5. Include/insert code
6.13.10.2.6. Include html
6.13.10.2.7. Verbosity
6.13.10.2.8. Weaver Control
6.13.10.2.9. Anchors
6.13.10.2.10. Parsing
6.13.10.2.11. Input functions
6.13.10.2.12. Untangle
6.13.10.2.13. Parser functions
6.13.10.2.13.1. Utilities
6.13.10.2.14. Collect stuff
6.13.10.2.15. Execute collected python
6.13.10.2.15.1. Test python function
6.13.10.2.15.2. Print diff table
6.13.10.2.16. Register Test
6.13.10.2.17. Python Test
6.13.10.2.17.1. Test 15: Python test test
6.13.10.2.17.2. Test 16: Python diff test
6.13.10.2.18. Match Processing functions
6.13.10.2.18.1. Single Line Python Script
6.13.10.2.18.2. Multi-Line Python Script
6.13.10.2.18.3. Ordinary Text
6.13.10.2.18.4. Doubled Warning character
6.13.10.2.18.5. Html input
6.13.10.2.19. The Tangler Stack
6.13.10.2.20. Tangler Constructors
6.13.10.2.21. Managing the tangler stack
6.13.10.2.22. Miscellaneous
6.13.10.2.23. Capture command output
6.13.10.2.24. Documentation Constructions
6.13.10.2.24.1. Headings
6.13.10.2.24.2. Paragraphs
6.13.10.2.24.3. Citations
6.13.10.2.24.4. Tables
6.13.10.2.24.5. Lists
6.13.10.2.24.6. Fonts
6.13.10.2.24.7. Displays
6.14. Module getoptions
6.14.1. Test 17: generic getoptions module
6.15. Get Options
6.15.1. Help Dictionary
6.15.2. Argument Frame
6.16. Utility Modules
6.16.1. compiler package
6.16.1.1. Test
6.16.2. Interscript Standard module diff for Python
6.16.2.1. Description
6.16.2.2. Requirements
6.16.2.3. Posix Implementation
6.16.2.4. Test routine 1
6.16.2.5. Test Routine 2
6.16.2.5.1. Test 19: Python diff test
6.16.3. Commands
6.17. Application and tool directory
6.17.1. Stand alone unix/nt mainline
6.17.2. Windows launcher
6.18. Test package
7. Appendices
7.1. Bugs (etc) for Version 1a7
7.1.1. These debugging notes
7.1.2. Control System
7.1.3. Tangler Bugs
7.1.4. Weaver Bugs
7.1.5. Misc Bugs
7.1.6. Design Issues
7.1.7. Omissions
7.1.7.1. Building
7.1.7.2. Scripting
7.1.7.3. Parsing
7.1.7.4. Weaving
7.1.7.5. Tangling
7.1.8. New in 1a5
7.1.8.1. Separate compilation
7.1.9. Under development and planned
7.2. Installation Guide
7.2.1. What you need
7.2.2. Where to get it
7.2.3. Instant install
7.2.3.1. Unpack the archive
7.2.3.2. Unix: Make the command line launch script executable
7.2.3.3. Windows: Make the command line launch script executable
7.2.3.4. Mac: write a launch script
7.2.3.5. Install doco
7.2.3.6. Test It
7.2.4. Configuration
7.2.4.1. Compilers sub-package
7.2.4.2. Diff sub-package
7.2.4.3. Command line tool execution
7.2.4.4. Speedups
7.2.4.5. Other
7.2.5. Building Interscript
7.2.6. NT Issues