WikiPatents - Community Patent Review
Create Free Account  |  License or Sell Your Patent  |  WikiPatents Marketplace  |  WikiPatents Blog
Username:  Password:  
    
Advanced Search
Debugging system for a hierarchically structured page description language    
United States Patent5535318   
Link to this pagehttp://www.wikipatents.com/5535318.html
Inventor(s)Motoyama; Tetsuro (San Jose, CA), Chang; Yueh-Lin (San Jose, CA)
AbstractA method and apparatus for debugging a hierarchically structure page description language document. As a hierarchically structured page description language is being processed, a picture/pageset stack is used to keep track of the different hierarchical levels of the document. A prologue data structure is used to keep track of various system parameters at each hierarchical level and a current context of interpretation data structure is used to keep track of system parameters as a content portion of the document is being processed. During the debugging operations, system function debugging commands can be entered which pertain to setting and deleting break points and processing of the document by the system and debugger. There are also display function debugging commands which allow a user to display any of the system parameters using the system information stored in the data structures used by the system.
   














 Title Information Submit all comments and votes
 
Patent Text Patent PDF Print Page Summary File History
Plain text PDF images Print Summary File History
Drawing from US Patent 5535318
Debugging system for a hierarchically structured page description
     language - US Patent 5535318 Drawing
Debugging system for a hierarchically structured page description language
Inventor     Motoyama; Tetsuro (San Jose, CA) , Chang; Yueh-Lin (San Jose, CA)
Owner/Assignee     Ricoh Company, Ltd. (Tokyo, JP) Ricoh Corporation (San Jose, CA)
Patent assignment
All assignments
Publication Date     July 9, 1996
Application Number     08/180,015
PAIR File History     Application Data   Transaction History
Image File Wrapper   Patent Term   Fees
Litigation
Filing Date     January 11, 1994
US Classification     715/514
Int'l Classification    
Examiner     Herndon; Heather R.
Assistant Examiner     Fetting; Anton W.
Attorney/Law Firm     Oblon, Spivak, McClelland, Maier & Neustadt
Address
Parent Case     CROSS-REFERENCES TO RELATED APPLICATIONS This application is a continuation-in-part of U.S. patent application Ser. No. 08/146,724 (now U.S. Pat. No. 5,422,992) filed on Nov. 2, 1993, and entitled "Method and System to Handle State Variables in a Document Processing Language", and U.S. patent application Ser. No. 08/119,930 (now U.S. Pat. No. 5,446,837) filed on Sep. 10, 1993, and entitled "Method and System to Process Resources in a Document Processing Language", both of which are continuations-in-part of U.S. patent application Ser. No. 08/087,571 filed on Jul. 2, 1993, and entitled "Method and System to Handle Context of Interpretation in a Document Processing Language which is a continuation-in-part of U.S. patent application Ser. No. 07/931,808 (now U.S. Pat. No. 5,416,896) filed on Aug. 11, 1992 and entitled "A Method And System to Handle Dictionary Generation and Context Declaration in a Document Processing Language" which is a continuation-in-part of U.S. patent application Ser. Nos. 07/876,601 (now U.S. Pat. No. 5,319,748) and 07/876,251 (now U.S. Pat. No. 5,325,484) both filed on Apr. 30, 1992 and entitled "Method and Apparatus to Manage Picture and Pageset for Document Processing" and "Method and System to Handle Inclusion of External Files into a Document Processing Language," respectively, each of which is incorporated herein by reference.
Priority Data    
USPTO Field of Search     395/145 395/147 364/578
Patent Tags     debugging hierarchically structured page description language
   
Enter a comma (,) or semicolon (;) between multiple tag words/phrases.
Describe this patent:
 Amusing   
 Clever   
 Complex   
 Efficient   
 Historic   
 Important   
 Innovative   
 Interesting   
 Practical   
 Simple   
[no votes]
Patent WIKI

Share information and news about this patent, including information and news about the technology, inventors, company, ligation and licensing.

 References Submit all comments and votes
 
*references marked with an asterisk below are user-added references
 U.S. References
 
Add a new US reference:  
ReferenceRelevancyCommentsReferenceRelevancyComments
5394544
Motoyama
714/31
Feb,1995

[0 after 0 votes]
5379373
Hayashi
715/513
Jan,1995

[0 after 0 votes]
5371747
Brooks
714/38
Dec,1994

[0 after 0 votes]
5361351
Lenkov
717/124
Nov,1994

[0 after 0 votes]
5353388
Motoyama
358/1.18
Oct,1994

[0 after 0 votes]
5333246
Nagasaka
345/619
Jul,1994

[0 after 0 votes]
5265254
Blasciak
717/130
Nov,1993

[0 after 0 votes]
5124989
Padawer
714/38
Jun,1992

[0 after 0 votes]
4953084
Meloy
717/131
Aug,1990

[0 after 0 votes]
 Foreign References
 Other References
 Market Review Submit all comments and votes
   
Market Size
Estimate the gross annual revenues of the relevant market sector:
> $10B
$5B - $10B
$2B - $5B
$500M - $2B
$100M - $500M
$10M - $100M
$1M - $10M
$500K - $1M
$100K - $500K
< $100K
[No votes]
$0
 
$0   $2.5B   $5B   $7.5B   $10B
Market Share
Estimate the percentage of the relevant market sector this invention will capture:
75% - 100%
50% - 74.99%
25% - 49.99%
10 - 24.99%
5 - 9.99%
2 - 4.99%
1 - 1.99%
< 1%
[No votes]
0.0%
 
0%   25%   50%   75%   100%
Reasonable Royalty
What percentage of gross sales should the inventor or assignee be paid?
75% - 100%
50% - 74.99%
25% - 49.99%
10 - 24.99%
5 - 9.99%
2 - 4.99%
1 - 1.99%
< 1%
[No votes]
0.0%
 
0%   25%   50%   75%   100%
Public's "Guesstimation" of Royalty Value
Market SizeN/A[No votes]
xMarket ShareN/A[No votes]
xReasonable RoyaltyN/A[No votes]

N/A

License Availablity
If you are NOT the owner or assignee, answer here:
Yes, license is available for purchase

No, license is not currently available



[No votes]
License Availablity
If you ARE the owner or assignee, answer here:
Yes, license is available for purchase

No, license is not currently available



[No votes]
Competitive Advantage
Does this invention have a significant competitive advantage over similar technologies?
Yes

No



[No votes]
Most helpful competitive advantage comment
[No comments]

Commercial Alternatives
Are there viable commercial alternatives for this invention?
Yes

No



[No votes]
Most helpful commercial alternative comment
[No comments]

 Technical Review Submit all comments and votes
 Claims Submit all comments and votes
 


What is claimed as new and desired to be secured by Letters Patent of the United States is:

1. A method for implementation in a computer of processing and debugging a hierarchically structured document, comprising the steps of:

setting a break point at a line of the document;

creating a data structure for keeping track of hierarchical levels of the document;

inputting an element indicating a beginning of a first hierarchical level of the document;

creating a plurality of references for an entry A in said data structure for keeping track of hierarchical levels, said plurality of references for the entry A being used to keep track of information of the first hierarchical level of the document including references used for keeping track of at least one of defined resources, declared resources, and dictionaries which are used during processing of the document;

inputting an element at the first hierarchical level indicating that a first of said at least one of defined resources, declared resources, and dictionaries is to be used during processing of the document;

changing at least one of the references for the entry A used for keeping track of information to refer to said first of said at least one of defined resources, declared resources, and dictionaries;

inputting an element indicating a beginning of a second hierarchical level of the document which is below the first hierarchical level in the hierarchical structure of the document;

creating a plurality of references for an entry B in said data structure for keeping track of hierarchical levels, the entry B being different from the entry A in said data structure for keeping track of hierarchical levels, said plurality of references for the entry B being used to keep track of information of the second hierarchical level of the document including references used for keeping track of at least one of defined resources, declared resources, and dictionaries which are used during processing of the document;

inputting an element at the second hierarchical level indicating that a second of said at least one of defined resources, declared resources, and dictionaries is to be used during processing of the second hierarchical level, in addition to said first of said at least one of defined resources, declared resources, and dictionaries;

changing the reference used for keeping track of said at least one of defined resources, declared resources, and dictionaries for the entry B to refer first to said second of said at least one of defined resources, declared resources, and dictionaries and subsequently to said first of said at least one of defined resources, declared resources, and dictionaries;

accessing said at least one of defined resources,, declared resources, and dictionaries by using first the reference to the second of said at least one of defined resources, declared resources, and dictionaries and if a desired parameter is not found, using subsequently the subsequent reference to the second of said at least one of defined resources, declared resources, and dictionaries, without referring to said plurality of references for the entry A;

suspending processing of the document when said break point is processed;

inputting a debugging command after processing has been suspended; and

processing said debugging command.

2. A method according to claim 1, wherein said step of setting a break point includes:

inputting a line number from a user indicating where a break is to occur.

3. A method according to claim 1, further comprising the step of:

inputting a command which indicates that said break point is to be deleted.

4. A method according to claim 1, wherein:

said inputting step includes inputting a command to display a structure level of the document.

5. A method according to claim 1, wherein:

said inputting step includes inputting a command to display at least one of an operand stack and a context stack.

6. A method according to claim 1, wherein:

said inputting step includes inputting a command to display at least one of a dictionary and a key in the dictionary.

7. A method according to claim 1, wherein:

said inputting step includes inputting a command to display a state variable table.

8. A method according to claim 1, wherein:

said inputting step includes inputting a command to display at least one of defined resources and declared resources.

9. An apparatus for processing and debugging a hierarchically structured document, comprising:

means for setting a break point at a line of the document;

means for creating a data structure for keeping track of hierarchical levels of the document;

means for inputting an element indicating a beginning of a first hierarchical level of the document;

means for creating a plurality of references for an entry A in said data structure for keeping track of hierarchical levels, said plurality of references for the entry A being used to keep track of information of the first hierarchical level of the document including references used for keeping track of at least one of defined resources, declared resources, and dictionaries which are used during processing of the document;

means for inputting an element at the first hierarchical level indicating that a first of said at least one of defined resources, declared resources, and dictionaries is to be used during processing of the document;

means for changing at least one of the references for the entry A used for keeping track of information to refer to said first of said at least one of defined resources, declared resources, and dictionaries;

means for inputting an element indicating a beginning of a second hierarchical level of the document which is below the first hierarchical level in the hierarchical structure of the document;

means for creating a plurality of references for an entry B in said data structure for keeping track of hierarchical levels, the entry B being different from the entry A in said data structure for keeping track of hierarchical levels, said plurality of references for the entry B being used to keep track of information of the second hierarchical level of the document including references used for keeping track of at least one of defined resources, declared resources, and dictionaries which are used during processing of the document;

means for inputting an element at the second hierarchical level indicating that a second of said at least one of defined resources, declared resources, and dictionaries is to be used during processing of the second hierarchical level, in addition to said first of said at least one of defined resources, declared resources, and dictionaries;

means for changing the reference used for keeping track of said at least one of defined resources, declared resources, and dictionaries for the entry B to refer first to said second of said at least one of defined resources, declared resources, and dictionaries and subsequently to said first of said at least one of defined resources, declared resources, and dictionaries;

means for accessing said at least one of defined resources,, declared resources, and dictionaries by using first the reference to the second of said at least one of defined resources, declared resources, and dictionaries and if a desired parameter is not found, using subsequently the subsequent reference to the second of said at least one of defined resources, declared resources, and dictionaries, without referring to said plurality of references for the entry A;

means for suspending processing of the document when said break point is processed;

means for inputting a debugging command after processing has been suspended; and

means for processing said debugging command.

10. An apparatus according to claim 9, wherein said means for setting a break point includes:

means for inputting a line number from a user indicating where a break is to occur.

11. An apparatus according to claim 9, further comprising:

means for inputting a command which indicates that said break point is to be deleted.

12. An apparatus according to claim 9, wherein:

said means for inputting includes means for inputting a command to display a structure level of the document.

13. An apparatus according to claim 9, wherein:

said means for inputting includes means for inputting a command to display at least one of an operand stack and a context stack.

14. An apparatus according to claim 9, wherein:

said means for inputting includes means for inputting a command to display at least one of a dictionary and a key in the dictionary.

15. An apparatus according to claim 9, wherein:

said means for inputting includes means for inputting a command to display a state variable table.

16. An apparatus according to claim 9, wherein:

said inputting means for includes means for inputting a command to display at least one of defined resources and declared resources.
 Description Submit all comments and votes
 


BACKGROUND OF THE INVENTION

1. Field of the Invention

This invention relates generally to the computer control printing, displaying, or other presentation of documents which may have text, graphical components, and/or images. This invention is more particularly related to a method and system for processing the beginning and ending of pictures or pagesets in a document data stream, keeping track of the status of the presentation device referred to as the state of the virtual machine using a set of dictionaries, defined later, a context stack defining the search order of the dictionaries, a state variable table, a set of resources, and an operand stack.

This invention is even more particularly related to debugging a system which is processing a hierarchically structured document.

2. Discussion of the Background

The development of laser printers in the early 1970s provided an opportunity for high quality, low cost printing of documents, which contained not only character text but also general graphical material. The primary method of controlling commands by the computer to the printer employed the so called "escape sequence" commands, similar to the type of commands used in the DIABLO.RTM. command sequence. These types of commands were distinguished from typical character data by preceding each command with a special byte, generally an escape character (ASCII 27). This methodology works acceptably with daisy wheel or dot matrix printers but is not well suited for printing documents that might have changing requirements. For example, as needs change and as technology improves, an upgrade of the presentation device is necessary. This type of upgrade in the past would have required removal of the program controller of conventional presentation devices. At a minimum, a new PROM containing instructions for the printer would be required. This is not a commercially acceptable way of handling temporary changes, as a new PROM would be installed for a few print jobs, and would then have to be replaced with the original PROM or another new PROM. This method of upgrade is wasteful and results in many failures of the presentation device controller.

As a response to the limitations inherent in the escape sequence commands, different types of "page description language" (PDL) were developed generally to control laser printers or other types of page printers. Backward compatibility of these laser printers was provided by way of an ability to accept escape sequence commands. Two current examples of page description language are the PostScript.RTM. system from Adobe Systems Incorporated and InterPress.RTM. from Xerox.RTM. Corporation. Several other proprietary PDLs are also known.

Some of the prior art page description languages provided various improvements to the standard escape sequences known previously, such as by providing tools and syntax for manipulation of objects, or by providing for the use of operand stacks or the like. Moreover, there are stack-oriented programming languages. These languages also allowed, in some cases, for dynamic changes in the printer's state, such as the ability to add fonts or graphical images to the resources that might be available to the printer. Some of these features are documented in such generally available reference works as Adobe System Incorporated's "PostScript Language Reference Manual" and the "PostScript Language Program Design," both by Addison-Wesley Publishing Company (1985 and 1988, respectively). Other PDLs are also described in various technical and reference books such as "InterPress, The Source Book" by Harrington et al. (Simon and Schuster, Inc., 1988)

A standardized page description language (SPDL) has been proposed and is being developed as an international standard by the International Organization for Standardization ("ISO"). The proposal, to which one of the present inventors is a contributor, is currently in draft form before a section of the ISO. The draft is known as ISO/IEC DIS 10180, labeled "Information Processing Text-Communication Standard Page Description Language" and is available through the American National Standards Institute ("ANSI") in New York.

As SPDL is a new document processing language, there are no commercially available systems at the present time which can process a hierarchically structured document encoded in SPDL. To assist the present inventors in developing a system to process an SPDL document, they found it desirable to have a debugger which would allow them to monitor an SPDL processing system which they were developing.

A commercially available debugging tool for use in the PostScript page description language is LaserTalk from Adobe. However, PostScript is not a structured language like SPDL and therefore, LaserTalk does not handle the debugging of any structure portions as is performed by the present invention. In addition, Laser Talk requires a workstation connected to a PostScript printer through a bi-directional communiction channel.

SUMMARY OF THE INVENTION

Accordingly, one object of this invention to provide a method and apparatus which can keep track of the scope and status of material defined within a document data stream in an efficient manner.

It is a further object of this invention to have a debugging system for a system which processes a hierarchically structured page description language.

These and other objects are achieved according to the present invention by providing an efficient method of processing a page description language as defined in ISO/IEC DIS 10180, (hereinafter DIS 10180) for example. According to DIS 10180, as currently constituted, each document data stream is provided in a structure which is either a pageset or picture. The pageset and picture elements consist of an optional prologue which contains definitions and declaratory commands and an optional body. A pageset body consists of zero or more pagesets or pictures while a picture body consists of zero or more pictures or tokensequences. The tokensequence which contains specific tokens or commands for defining specific images along with necessary operators contains "content" while other elements in the document are called "structure". The structure sets up the environment for content to generate the appropriate output images. The effects of a prologue within the hierarchical level of a picture or pageset is until the end of that picture or pageset. Therefore, the prologue of a picture in the hierarchical structure of a document does not influence those structures at the same or peer level or superior structures while influencing structures at a lower hierarchical level. This invention effectively handles this hierarchical tree structure along with the scope of the prologue by using a stack and various pointers.

A tree-linked hierarchical structure advantageously enables the processing of any portion of the document by directly addressing that portion of the document and those portions which are higher in the hierarchy without the necessity of processing any other items in different branches of the hierarchical tree. In other words, only structural definitions which occur in the hierarchical tree which are above a given portion of the document need be processed. This increases the efficiency of the processing of the document and also facilitates the determination of the type of resources which will be needed in the printing device or the display device prior to the commencement of the actual printing of the document. This increases the speed and efficiency by which various devices print or display the document.

Whenever a hierarchical level in a document is being processed, an entry is pushed into a picture/pageset stack corresponding to that hierarchical level. Each entry in the picture/pageset stack has a pointer to a prologue data structure and a pointer to a current context of interpretation (hereinafter called "CCI") data structure. The CCI data structure is used whenever content of a document is being processed. The entries in the CCI data structure can be modified when the structure of a document or file is being processed and can also be modified as content is being processed. However, content cannot directly modify the entries in the picture/pageset prologue data structure.

When an SPDL document is being processed and the debugger of the present invention is being used, when a structure parser or content parser encounters a new line control character such as a line feed or a line feed with a carriage return, the debugging routines of the present invention are called. The debugger allows debugging functions such as setting break points, deleting break points, single step tracing as a document is being processed, processing the document until a break point is encountered, executing a predetermined number of lines, and displaying the break points in a document. The present invention allows the displaying of parameters used by the document processing system such as displaying of the operand stack, context stack, dictionaries, state variables, defined resources, declared resources, values in dictionaries, and structure level such as a picture level and a pageset level at a current position of the document.

BRIEF DESCRIPTION OF THE DRAWINGS

A more complete appreciation of the invention and many of the attendant advantages thereof will be readily obtained as the same becomes better understood by reference to the following detailed description when considered in connection with the accompanying drawings, wherein:

FIG. 1A and 1B are illustrations of sample documents and their hierarchical structural elements;

FIG. 2 is an illustration of the hierarchical structure of a document;

FIG. 3 illustrates the structure of an exemplary two page SPDL document;

FIG. 4 is an illustration of the picture/pageset stack, and the picture/pageset prologue data structure and CCI data structure pointed to by the entries in the picture/pageset stack;

FIG. 5 illustrates an external declaration data structure pointed to by the prologue data structure;

FIG. 6 illustrates a resource definition data structure;

FIG. 7 illustrates a resource declaration data structure;

FIG. 8 illustrates a context stack link data structure;

FIG. 9 illustrates a context dictionary generator data structure;

FIG. 10 is an illustration of a state variable table;

FIG. 11 is an illustration of a user dictionary link data structure;

FIG. 12 is an illustration of the context stack;

FIG. 13 is an exemplary hardware embodiment of the invention;

FIG. 14 is a detailed illustration of the workstation illustrated in FIG. 13;

FIG. 15 is a functional block diagram of the debugging system of the present invention;

FIG. 16 illustrates an example of the operation of the present invention;

FIG. 17 illustrates the break point linked list data structure;

FIG. 18 illustrates a series of break point linked list data structures used when processing the example of FIG. 16;

FIG. 19 illustrates the processing for the "single step" debugging command;

FIG. 20 illustrates the processing for the "set break point" debugging command;

FIG. 21 illustrates the processing for the "delete break point" processing command;

FIG. 22 illustrates the processing for the "go until break point" processing command; and

FIG. 23 illustrates the processing for the "execute N lines" processing command.

DETAILED DESCRIPTION OF THE DRAWINGS

Referring now to the drawings, wherein like reference numerals designate identical or corresponding parts throughout the several views, and more particularly to FIGS. 1A and 1B thereof, there are illustrated two documents and their structural elements such as pictures and pagesets as defined in the Standard Page Description Language ("SPDL"). In SPDL, a document can be defined as a single picture or a single pageset. A pageset can consist of additional pagesets or pictures. A picture cannot be greater than one page and cannot cross from one page to another. FIG. 1A illustrates a document consisting of one pageset with four pages (the highest level of pictures). FIG. 1B illustrates a single page document containing text and two pictures. The document of FIG. 1B could be represented as either a pageset of one page or a picture as it is only one page.

FIG. 2 is an illustration of the hierarchical structure of an SPDL document. The document illustrated in FIG. 2 contains a pageset 10 as its highest hierarchical structural element. Pageset 10 consists of pageset 12 and picture 14. Pageset 12 further consists of the pictures 16, 18, and 20. To define hierarchical levels by way of example, pageset 12 is at a lower hierarchical level than pageset 10 but at a higher hierarchical than the pictures (pages) 16, 18, or 20. Each hierarchical element will usually consist of a lower level hierarchical element and/or one or more tokensequence elements. A tokensequence is a special type of structural element which contains content. Content is the substance of what is printed or displayed for a document. A tokensequence, for example, may describe a drawing, text or image. The representation of content such as a drawing, text, or image by way of tokensequences allows for a very rapid and efficient processing of a document for presentation, especially when only a portion of a document is to be presented because the tokensequences of pages which are not to be presented do not have to be processed. Pictures 14, 16, 18 and 20 each will probably have at least one tokensequence element.

FIG. 3 is a detailed illustration of the structure elements of a sample two page document. The document consists of one pageset 50 having a prologue 51 and a pagesetbody 60. A prologue is an optional structural element which defines various parameters for a picture or pageset. The prologue 51 contains four subordinates; resource definition 52, dictionary generator 54, dictionary generator 56, and setup procedure 58, and corresponding tokensequences. The resource definition 52 is a structural element which indicates tokensequence 53 contains the content which defines resources used for presentation (e.g., the definition of a form used by a document).

The dictionary generator 54 indicates that tokensequence 55 defines a dictionary. Similarly, dictionary generator 56 indicates that tokensequence 57 defines a dictionary. A dictionary definition contains ordered pairs consisting of a key and a value. Whenever a key is encountered in content, the value from a dictionary corresponding to the key is substituted therefor. The value entry in a dictionary can be an integer number, a real number, procedure or any other type of value. Dictionaries created by dictionary generators are made read only and are created to be context dictionaries, as explained below.

The setup procedure 58 initializes various state variables which are used when processing content. Exemplary state variables are variables such as Current.sub.-- Color, Current.sub.-- Font and Current.sub.-- Position. The setup procedure is also used to alter the contents of the user dictionary, if desired. The user dictionary is a read/write dictionary which is searched after the context and content dictionaries are searched without encountering the searched key.

Pageset body 60 contains two pages having pictures 61 and 75. Picture 61 has its own prologue 62 which defines parameters only for the picture 61 and does not affect picture 75. Prologue 62 contains context declaration 63 and its dictionary identifier 64, dictionary generator 65 its tokensequence 66, setup procedure 67, and its tokensequence 68. The picturebody 69 of picture 61 contains tokensequences 70 and 74, and picture 71 having picturebody 72 and tokensequence 73. The second page of the document has picture 75 with picturebody 76 having tokensequence 77.

The context declaration 63 indicates a manipulation of context dictionaries which are defined in higher hierarchical levels of the structure. If a dictionary identifier such as dictionary identifier 64 follows a context declaration, the dictionary identifier will indicate how the search order of the context dictionaries are to be changed. If a dictionary identifier element does not follow the context declaration, any defined search order of the dictionaries will be eliminated, no context dictionaries will be searched for the particular hierarchical level, and the user dictionary and the system dictionary will be placed in the bottom of the context stack. The search order of the dictionaries is defined using context dictionary stack data structures, as will be explained in detail below.

It should be understood that FIG. 3 illustrates only an abstract description of the structure of an SPDL document and an actual SPDL document might use a different description.

Before giving a detailed description of the debugging operation of the present invention, it is necessary to understand how the system parameters for the hierarchical levels are stored. Each time a new hierarchical level (e.g., a picture or pageset structure element) an entry is placed on the picture/pageset stack 202 illustrated in FIG. 4. Each entry in the picture/pageset stack contains a pointer or reference to a prologue data structure and a pointer or reference to a current context of interpretation ("CCI") data structure.

For example, the second entry 204 on the picture/pageset stack 202 contains a pointer to prologue data structure 206 and a pointer to CCI data structure 208. The pointer to the prologue data structure 206 points to the picture/pageset prologue data structure 220, hereinafter referred to as a prologue data structure. The pointer to CCI data structure 208 points to the CCI data structure 240. The entry 210 at the bottom level of stack 202 has a pointer to prologue data structure 212 which points to a higher hierarchical level prologue data structure (not illustrated) and a pointer to a CCI data structure 214 which points to null.

The prologue data structure allows each hierarchical level to have its own set of system parameters. When a subsequent hierarchical level is processed, that subsequent level has its own prologue data structure initially having the values of the prologue data structure of the immediately superior hierarchical level. In this manner, the higher hierarchical levels are not affected by the lower hierarchical levels.

The CCI data structures are created and used when processing content portions (tokensequence elements) of a document. The entries in the CCI data structure have corresponding entries in the prologue data structure and upon encountering a content portion of the document, a CCI data structure is created having the same values as the corresponding portions of the prologue data structure. For example, the pointer to resource declaration 242 corresponds to pointer 226 in the prologue data structure, the pointer to context stack 244 corresponds to the pointer to context declaration 227, the pointer to operand stack 246 does not have a corresponding entry in the prologue data structure as the operand stack is used only when processing content, the pointer to state variable table 248 corresponds to pointer 229, the pointer to machine state 250 corresponds to pointer 230, and the pointer to user dictionary link 252 corresponds to pointer 231.

In the prologue data structure 220, the pageset.sub.-- level 221 and the picture.sub.-- level 222 are used to keep track of the current pageset and picture hierarchical levels in the document.

SPDL allows for the inclusion of external entities into a document. An external entity might be, for example, a graph, an image, or another document. The pointer to external declaration 223 points to an external declaration data structure 300 illustrated in FIG. 5. The external declaration data structure contains the pageset level 301 and picture level 302 at which the external declaration data structure was created. An identifier 303 naming the external declaration, a structure type 304 defining the type of external declaration (e.g., graphics), a pointer to external data 305 which contains the actual information defining the external declaration, and a pointer to a next external declaration data structure 306.

It is possible to have a plurality of external declarations in a document. Therefore, a plurality of external declaration data structures may be needed whereas the prologue data structure has only one pointer to an external declaration. Therefore, each external declaration data structure has a pointer to a next external declaration data structure which points to null when there are no subsequent external declaration data structures. When a new external declaration is encountered, a new external declaration data structure is created and pointed to by the pointer to external declaration 223 and the "next" pointer of the newly created external declaration data structure points to the previously existing external declaration data structure. This type of processing for additional external declarations is similar to the processing of the other elements in the prologue data structure and CCI data structure which use linked list data structures similar to the external declaration data structure.

The pointer to resource definition 225 of the prologue data structure 220 in FIG. 4 can point to a resource definition data structure 310 as illustrated in FIG. 6. The resource definition data structure 310 contains entries pageset.sub.-- level 312 and picture.sub.-- level 314. The pageset.sub.-- level 312 and picture.sub.-- level 314 indicate the pageset hierarchical level and picture hierarchical level at which a resource was defined. When the pageset.sub.-- level or picture.sub.-- level ends, the hierarchical structure of SPDL permits the resource definition data structure to be deleted.

Entry 316 of the resource definition data structure contains the SPDL ID. The SPDL ID 316 indicates that the resource definition data structure 310 defines an SPDL resource. Resource ID 318 contains the name of the resource being defined. Resource type 320 indicates the type of resource being defined. Exemplary resource types permitted by SPDL, at the time of this writing, include font object, glyph index map, font index map, color space, data source, filter, pattern and form. Other resource types contemplated in this invention allow for other resource types to be added.

Function ID 322 contains the function identifier as required by SPDL. The function ID shall be "DEFINE" if a resource is being defined or "UNDEFINE" if the resource is being deleted.

The pointer to resource specification 324 points to resource specification 328. The resource specification 328 contains the information which actually defines or describes the resource. A detailed description of the resource specification is not necessary for an understanding of the present invention. However, the resource specification, in this preferred embodiment, conforms to known SPDL requirements.

The pointer to resource definition data structure 326 points to a resource definition data structure having the same structure as resource definition data structure 310. This allows a plurality of resource definition commands to be used within an SPDL document. After the first resource definition data structure is defined, new resource definition data structures are pointed to directly by the prologue data structure and the pointer to next resource definition data structure 116 of the new resource definition data structure will point to the previously created resource definition data structure.

After a resource is defined, it is necessary to declare the resource available for use. This is accomplished by the resource declaration data structure illustrated in FIG. 7. Resources which can be declared are resources which have been defined using a resource definition data structure. It is also possible to declare resources which have been downloaded to the system.

The resource declaration data structure 350 illustrated in FIG. 7 is used to keep track of declared resources. After a resource is defined by a resource definition command within an SPDL document, it must be declared before it can be used, by issuing a resource declaration command. The resource declaration data structure 350 can be pointed to by the pointer to resource declaration 226 of the prologue data structure 220 and/or the pointer to resource declaration 242 of the CCI data structure 240. The resource declaration data structure 350 contains pageset.sub.-- level 352 and picture.sub.-- level 354 indicating the pageset level and picture level at which the resource was declared.

An internal ID 356 is used by the content such as a tokensequence within an SPDL document to identify the resource. The resource ID 358 and the resource type 360 are used to identify the resource specification 328 pointed to by a previously created resource definition data structure. The pointer to resource specification 362 points to the resource specification 328 and the pointer to next resource declaration data structure 364 points to a subsequent resource declaration data structure, if any, or else points to null.

As an SPDL document is being processed, four types of dictionaries are used to look up values and procedures used by the document; a system dictionary, a user dictionary, context dictionaries, and content dictionaries which are created by tokensequences. A dictionary is a set of ordered pairs of objects corresponding to keys and values. Whenever a key is encountered in the SPDL content of a document, the value in the dictionary is substituted therefor. The value portion of a dictionary can be any type of value such as an integer, real, procedure, or any other type of object.

The system dictionary contains all the operators of SPDL content in the key field and corresponding procedures in the value field. For example, when "add" is encountered in the SPDL content, the value corresponding to add is looked up in the system dictionary and the procedure corresponding to add indicates two values are popped from the operand stack, their types are checked, they are added, and the result is pushed back into the operand stack. The system dictionary is not modifiable by the user or SPDL document and is part of the system which processes the SPDL documents.

The next type of dictionary is a user dictionary. The user dictionary is initially empty but can have entries added and modified by tokensequence elements. Not only can information be written into it, but once it is wr