You are using a browser which doesn't fully support Cascading Style Sheets. This site will look much better in a browser that supports web standards, but its content is accessible to any browser or Internet device.

Base definition

What the parser basically needs to know about a tag is if it takes options and a body, because this influences parsing directly. If a tag has no body but the parser looks for it, a parsing error might occur for no real reason, or bodylike source parts following the tag immediately would be misinterpreted. Providing the necessary informations is simple. Here's the example from the last section again, expanded by the related details.

    # tag declarations
  
    %tags=(
           EMPHASIZE => {
                         # options
  
                         options => TAGS_OPTIONAL,
  
                         # don't miss the body!
  
                         body    => TAGS_MANDATORY,
                        },
  
           COLORIZE => {...},
  
           FONTIFY  => {},
  
           ...
          );

This is easy to understand. The option and body slots express if options and body are obsolete, optional or mandatory. This is done by using constants provided by PerlPoint::Constants (which comes with the framework). The following constants are defined:

constant meaning
TAGS_OPTIONAL Options/body can be used or not.
TAGS_MANDATORY The option/body part must be specified.
TAGS_DISABLED No need to use options/body. The parser will not expect such parts. This means that with an obsolete body, an <anything> sequence will not be treated as a tag body but as plain text. Likewise, if options are declared to be obsolete and a {thing=something} follows the tag name, this will be detected as plain text, not as the tag options. This can cause syntactical errors if the body is mandatory, because in this case the parser expects the body to follow the tag name.

Omitted options or body slots mean that options or body are optional. So a descripton at least consists of an empty anonymous hash (see FONTIFY in the example above).