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.
-
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.