Introduction

Getting Started

Programming Guides

API Reference

Additional Resources

Grammar Definitions

This section lists the grammar definitions for the names found in HOOPS. If you have had the misfortune of living through a "let's-write-a-compiler" computer science course, and as a result happen to know how to read these, you can use them to determine precisely what is legal and what is not.


Wildcard Segment Names

segments             ->        outer comma segments       
                    ->        outer                      
outer                ->        lparen segments rparen     
                    ->        slash pinner               
                    ->        dot slash pinner           
                    ->        pinner                     
pinner               ->        lparen inner-list rparen   
                    ->        inner                      
inner-list           ->        pinner comma inner-list    
                    ->        pinner                     
inner                ->        string slash pinner        
                    ->        string optslash special    
                                optslash pinner            
                    ->        special optslash pinner    
                    ->        string                     
                    ->        special                    
special              ->        ellipsis                   
                    ->        up-arrow                   
                    ->        key-reference              
string               ->        trimstring optspace        
trimstring           ->        q-mark aliasname           
                    ->        wildname                   
aliasname            ->        normal-letter aliasname    
                    ->        normal-letter              
wildname             ->        letter wildname            
                    ->        letter                     
key-reference        ->        `@' hex-digits optspace    
hex-digits           ->        `0..9a..fA..F'             
                                 hex-digits                 
                    ->        `0..9a..fA..F'             
letter               ->        wild-letter                
                    ->        normal-letter              
wild-letter          ->        `*'                        
                    ->        `%'                        
normal-letter        ->        `A..Za..z0..9'(1)          
                    ->        `'                         
                    ->        `#'                        
                    ->        `+'                        
                    ->        `-'                        
                    ->        `$'                        
                    ->        `_'                        
                    ->        `.'                        
                    ->        quoted-letters             
optslash             ->        slash                      
                    ->        optspace                   
optspace             ->        `' optspace                
                    ->        `<tab>' optspace           
                    ->        <nothing>                  
quoted-letters       ->        `'' any-letters `''        
                    ->        `"' any-letters `"'        
                    ->        ``' any-letters ``'        
any-letters          ->        (anything in the character set)    
slash               ->        `/' optspace               
dot                 ->        `.' optspace               
ellipsis            ->        `...' optspace             
lparen              ->        `(' optspace               
rparen              ->        `)' optspace               
up-arrow            ->        `^' optspace               
                    ->        `..' optspace              
q-mark              ->              `?' optspace         
                                               

Color Descriptions

color                ->        qual-list hsimple        
qual-list            ->        qual-list 1st-degree     
                    ->        qual-list 2nd-degree     
                    ->        optspace                 
1st-degree           ->        1st-name                 
                    ->        primitive `ish'          
2nd-degree           ->        2nd-name                 
                    ->        primitive `er'           
hsimple              ->        simple `-' simple        
                    ->        simple                   
simple               ->        defined-name             
                    ->        primitive                
primitive            ->        lparen `R' val `G' val    `B' val rparen
                    ->        lparen `H' val `S' val /I>`V' val rparen
                    ->        lparen `H' val `L' val `S' val rparen
                    ->        lparen color rparen      
val                  ->        optspace `=' optspace float-num optspace 
1st-name             ->        defined-name             
2nd-name             ->        defined-name             
defined-name         ->        optspace trim-name optspace 
trim-name            ->        letter trim-name         
                    ->        letter                   
float-num            ->        optpm digits optfrac optexp
optpm                ->        `+'                      
                    ->        `-'                      
                    ->        <nothing>                
digits               ->        `0..9' optdigits         
optdigits           ->        `0..9' optdigits         
                    ->        <nothing>                
optfrac              ->        `.' optdigits            
                    ->        <nothing>                
optexp               ->        `E' optpm digits         
                    ->        <nothing>                
letter               ->        `A..Za..z0..9'           
                    ->        `'(2)                    
                    ->        `#'                      
                    ->        `-'                      
                    ->        `$'                      
                    ->        `_'                      
                    ->        `%'                      
                    ->        `/'                      
lparen              ->        `(' optspace             
rparen              ->        `)' optspace             
optspace             ->        `' optspace              
                    ->        `<tab>' optspace         
                    ->        <nothing>                


Footnotes

(1)
Upper case "normal" letters are always converted to lower case.
(2)
When blanks may be interpreted either as "optspace" between defined names or as letters within a "defined name", the longest name that actually exists is matched.