| Extracted from Pike v7.8 release 700 at 2013-06-08.

[Top]
Parser
Parser.SGML

# Class Parser.SGML

Description

  This is a handy simple parser of SGML-like syntax like HTML. It doesn't do anything advanced, but finding the corresponding end-tags.

  It's used like this:

  array res=Parser.SGML()->feed(string)->finish()->result();

The resulting structure is an array of atoms, where the atom can be a string or a tag. A tag contains a similar array, as data.

Example

      A string
           "<gat>&nbsp;<gurka>&nbsp;</gurka>&nbsp;<banan>&nbsp;<kiwi>&nbsp;</gat>"
           results in

  ({ tag "gat" object with data: ({ tag "gurka" object with data: ({ " " }) tag "banan" object with data: ({ " " tag "kiwi" object with data: ({ " " }) }) }) })

ie, simple "tags" (not containers) are not detected, but containers are ended implicitely by a surrounding container _with_ an end tag.

The 'tag' is an object with the following variables:

    	 string name;           - name of tag
    	 mapping args;          - argument to tag
    	 int line,char,column;  - position of tag
    	 string file;           - filename (see <ref>create</ref>)
    	 array(SGMLatom) data;  - contained data

Variable file

  `string Parser.SGML.file`