Class SimpleParser


  • public class SimpleParser
    extends Base
    This class uses the XmlTokenizer to produce an XmlDocument from XML text.
    Version:
    1.00, 2001.07.16
    Author:
    Cameron Purdy
    • Field Detail

      • m_fValidate

        protected final boolean m_fValidate
        If true, validate XML if it contains an XSD reference
      • m_toker

        protected com.tangosol.run.xml.XmlTokenizer m_toker
        The lexical tokenizer.
      • m_token

        protected com.tangosol.run.xml.XmlToken m_token
        The "current" token being evaluated.
    • Constructor Detail

      • SimpleParser

        public SimpleParser()
        Construct an XML SimpleParser. If the XML contains an XSD reference, the parser will validate using the provided XSD.
      • SimpleParser

        public SimpleParser​(boolean fValidate)
        Construct an XML SimpleParser.
        Parameters:
        fValidate - if true, validate XML if it contains an XSD reference
    • Method Detail

      • init

        protected void init()
        Internal initialization.
      • parseXml

        public XmlDocument parseXml​(String sXml)
                             throws IOException
        Parse the specified String into an XmlDocument object.
        Parameters:
        sXml - the String to parse
        Returns:
        an XmlDocument object
        Throws:
        IOException - if I/O error occurs
      • parseXml

        public XmlDocument parseXml​(Reader reader)
                             throws IOException
        Parse the specified Reader into an XmlDocument object.
        Parameters:
        reader - the Reader object
        Returns:
        an XmlDocument object
        Throws:
        IOException - if I/O error occurs
      • parseXml

        public XmlDocument parseXml​(InputStream stream)
                             throws IOException
        Parse the specified InputStream into an XmlDocument object.
        Parameters:
        stream - the InputStream object
        Returns:
        an XmlDocument object
        Throws:
        IOException - if I/O error occurs
      • parseXml

        public XmlDocument parseXml​(InputStream stream,
                                    String sCharset)
                             throws IOException
        Parse the specified InputStream into an XmlDocument object using the specified charset.
        Parameters:
        stream - the InputStream object
        sCharset - the charset name
        Returns:
        an XmlDocument object
        Throws:
        IOException - if I/O error occurs
      • parseXml

        public XmlDocument parseXml​(String sXml,
                                    XmlDocument xml)
                             throws IOException
        Parse the passed script.
        Parameters:
        sXml - the script to parse (as a string)
        xml - the XML document object to parse into
        Returns:
        the XmlDocument object
        Throws:
        IOException - if I/O error occurs
      • instantiateDocument

        protected XmlDocument instantiateDocument()
        Factory method to instantiate an XmlDocument implementation.
        Returns:
        an object implementing XmlDocument
      • main

        public static void main​(String[] asArgs)
        Unit test.
        Parameters:
        asArgs - the string array arguments
      • parseDocument

        protected void parseDocument​(XmlDocument xml)
                              throws com.tangosol.dev.compiler.CompilerException
        Factory method to instantiate an XmlDocument implementation.
        Parameters:
        xml - a blank XmlDocument
        Throws:
        com.tangosol.dev.compiler.CompilerException - if compiler error occurs
      • parsePi

        protected void parsePi​(XmlElement xml)
                        throws com.tangosol.dev.compiler.CompilerException
        Parse <?xml.
        Parameters:
        xml - the XML element
        Throws:
        com.tangosol.dev.compiler.CompilerException - if compiler error occurs
      • parsePi

        protected void parsePi​(XmlElement xml,
                               boolean fXmlDeclAllowed)
                        throws com.tangosol.dev.compiler.CompilerException
        Parse <?xml.
        Parameters:
        xml - the XML element
        fXmlDeclAllowed - whether XML declaration is allowed
        Throws:
        com.tangosol.dev.compiler.CompilerException - if compiler error occurs
      • parseXmlDecl

        protected void parseXmlDecl​(XmlDocument xml)
                             throws com.tangosol.dev.compiler.CompilerException
        Parse XML declaration.
        Parameters:
        xml - the XML document
        Throws:
        com.tangosol.dev.compiler.CompilerException - if compiler error occurs
      • parseDoctype

        protected void parseDoctype​(XmlDocument xml)
                             throws com.tangosol.dev.compiler.CompilerException
        Parse doc type.
        Parameters:
        xml - the XML document
        Throws:
        com.tangosol.dev.compiler.CompilerException - if compiler error occurs
      • parseElement

        protected void parseElement​(XmlElement xml)
                             throws com.tangosol.dev.compiler.CompilerException
        Note: '<' and element name have already been parsed
        Parameters:
        xml - the XML element
        Throws:
        com.tangosol.dev.compiler.CompilerException - if compiler error occurs
      • parseMisc

        protected void parseMisc​(XmlElement xml)
                          throws com.tangosol.dev.compiler.CompilerException
        Parse comments / other PIs.
        Parameters:
        xml - the XML element
        Throws:
        com.tangosol.dev.compiler.CompilerException - if compiler error occurs
      • parseComment

        protected void parseComment​(XmlElement xml)
                             throws com.tangosol.dev.compiler.CompilerException
        Parse comments.
        Parameters:
        xml - the XML element
        Throws:
        com.tangosol.dev.compiler.CompilerException - if compiler error occurs
      • parseComment

        protected void parseComment​(XmlElement xml,
                                    boolean fIsDocument)
                             throws com.tangosol.dev.compiler.CompilerException
        Parse comments.
        Parameters:
        xml - the XML element
        fIsDocument - whether the passed in XmlElement is an XmlDocument
        Throws:
        com.tangosol.dev.compiler.CompilerException - if compiler error occurs
      • hasCurrent

        protected boolean hasCurrent()
        Determine if there is a current token.
        Returns:
        true if there is a current token
      • current

        protected com.tangosol.run.xml.XmlToken current()
                                                 throws com.tangosol.dev.compiler.CompilerException
        Returns the current token and advances to the next token.
        Returns:
        the current token
        Throws:
        com.tangosol.dev.compiler.CompilerException - potentially thrown by the tokenizer
      • hasNext

        protected boolean hasNext()
        Determine if there is a next token.
        Returns:
        true if there is a next token
      • next

        protected com.tangosol.run.xml.XmlToken next()
                                              throws com.tangosol.dev.compiler.CompilerException
        Advances to and returns the next token.
        Returns:
        the next token
        Throws:
        com.tangosol.dev.compiler.CompilerException - potentially thrown by the tokenizer
      • match

        protected com.tangosol.run.xml.XmlToken match​(int id)
                                               throws com.tangosol.dev.compiler.CompilerException
        Verifies that the current token matches the passed token id and, if so, advances to the next token. Otherwise, a syntax exception is thrown.
        Parameters:
        id - the token id to match
        Returns:
        the current token
        Throws:
        com.tangosol.dev.compiler.SyntaxException - thrown if the token does not match
        com.tangosol.dev.compiler.CompilerException - potentially thrown by the tokenizer
      • match

        protected com.tangosol.run.xml.XmlToken match​(String sName)
                                               throws com.tangosol.dev.compiler.CompilerException
        Verifies that the current token is a name token whose name matches the passed String and, if so, advances to the next token. Otherwise, a syntax exception is thrown.
        Parameters:
        sName - the name token text to match
        Returns:
        the matched token
        Throws:
        com.tangosol.dev.compiler.SyntaxException - thrown if the token does not match
        com.tangosol.dev.compiler.CompilerException - potentially thrown by the tokenizer
      • peek

        protected com.tangosol.run.xml.XmlToken peek​(int id)
                                              throws com.tangosol.dev.compiler.CompilerException
        Tests if the current token matches the passed token id and, if so, advances to the next token.
        Parameters:
        id - the token id to peek for
        Returns:
        the current token, if matched, or null
        Throws:
        com.tangosol.dev.compiler.CompilerException - potentially thrown by the tokenizer
      • peek

        protected com.tangosol.run.xml.XmlToken peek​(int cat,
                                                     int subcat)
                                              throws com.tangosol.dev.compiler.CompilerException
        Tests if the current token matches the passed token category and sub-category. If so, it returns the current token and advances to the next token.
        Parameters:
        cat - the category to peek for
        subcat - the sub-category to peek for
        Returns:
        the current token, if matched, or null
        Throws:
        com.tangosol.dev.compiler.CompilerException - potentially thrown by the tokenizer
      • peek

        protected com.tangosol.run.xml.XmlToken peek​(String sName)
                                              throws com.tangosol.dev.compiler.CompilerException
        Tests if the current token is a name that matches the passed String and, if so, advances to the next token.
        Parameters:
        sName - the name token text to peek for
        Returns:
        id the current token, if matched, or null
        Throws:
        com.tangosol.dev.compiler.CompilerException - potentially thrown by the tokenizer
      • mark

        protected com.tangosol.run.xml.XmlToken mark()
        Marks the current position and returns it as a token.
        Returns:
        the current token
      • skipBOM

        protected InputStream skipBOM​(InputStream in)
                               throws IOException
        Read the provided InputStream to determine if the stream starts with a UTF-8 BOM (http://www.unicode.org/faq/utf_bom.html#BOM). If the BOM is present, advance the stream to skip it.

        This is a workaround for the inability of the Java UTF-8 encoding to recognize the UTF-8 BOM (http://bugs.sun.com/view_bug.do?bug_id=4508058).

        Parameters:
        in - InputStream to check for BOM
        Returns:
        an InputStream with the UTF-8 BOM skipped
        Throws:
        IOException - if I/O error occurs