org.jamon.parser
Class AbstractParser

java.lang.Object
  extended by org.jamon.parser.AbstractParser
Direct Known Subclasses:
AbstractArgsParser, AbstractBodyParser, AbstractTypeParser, CallParser, GenericsParser, ImportParser, ParentArgsParser, PathParser

public class AbstractParser
extends java.lang.Object

Author:
ian

Nested Class Summary
protected static class AbstractParser.NotAnIdentifierException
           
 
Field Summary
static java.lang.String BAD_ARGS_CLOSE_TAG
           
static java.lang.String BAD_JAVA_TYPE_SPECIFIER
           
static java.lang.String EOF_IN_JAVA_QUOTE_ERROR
           
static java.lang.String INCOMPLETE_ARRAY_SPECIFIER_ERROR
           
protected  ParserErrorsImpl m_errors
           
protected  PositionalPushbackReader m_reader
           
static java.lang.String MALFORMED_TAG_ERROR
           
static java.lang.String NOT_AN_IDENTIFIER_ERROR
           
 
Constructor Summary
AbstractParser(PositionalPushbackReader p_reader, ParserErrorsImpl p_errors)
           
 
Method Summary
protected  void addError(org.jamon.api.Location p_location, java.lang.String p_message)
           
protected  void addError(ParserErrorImpl p_error)
           
protected  boolean checkForTagClosure(org.jamon.api.Location p_tagLocation)
           
protected  boolean checkToken(java.lang.String p_token)
           
static java.lang.String eofErrorMessage(java.lang.String p_end)
           
protected  AbstractPathNode parsePath()
           
protected  boolean readAndAppendChar(char p_char, java.lang.StringBuilder builder)
          Determine if the next character is a particular one, and if so, read and append it to a StringBuilder.
protected  boolean readChar(char p_char)
          Read a single character from the reader.
protected  java.lang.String readClassName(org.jamon.api.Location p_location)
           
protected  java.lang.String readIdentifier(boolean p_addErrorIfNoneFound)
          Read in a java identifier.
protected  java.lang.String readIdentifierOrThrow()
          Reads in a java identifier.
protected  java.lang.String readJava(org.jamon.api.Location p_startLocation, TagEndDetector p_tagEndDetector)
           
protected  java.lang.String readType(org.jamon.api.Location p_location)
           
protected  java.lang.String readUntil(java.lang.String p_end, org.jamon.api.Location p_startLocation)
          Read from the reader until encountering an end marker
protected  boolean soakWhitespace()
          Soak up all whitespace from the reader until non-whitespace or EOF is encountered.
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Field Detail

MALFORMED_TAG_ERROR

public static final java.lang.String MALFORMED_TAG_ERROR
See Also:
Constant Field Values

EOF_IN_JAVA_QUOTE_ERROR

public static final java.lang.String EOF_IN_JAVA_QUOTE_ERROR
See Also:
Constant Field Values

NOT_AN_IDENTIFIER_ERROR

public static final java.lang.String NOT_AN_IDENTIFIER_ERROR
See Also:
Constant Field Values

BAD_JAVA_TYPE_SPECIFIER

public static final java.lang.String BAD_JAVA_TYPE_SPECIFIER
See Also:
Constant Field Values

BAD_ARGS_CLOSE_TAG

public static final java.lang.String BAD_ARGS_CLOSE_TAG
See Also:
Constant Field Values

INCOMPLETE_ARRAY_SPECIFIER_ERROR

public static final java.lang.String INCOMPLETE_ARRAY_SPECIFIER_ERROR
See Also:
Constant Field Values

m_reader

protected final PositionalPushbackReader m_reader

m_errors

protected final ParserErrorsImpl m_errors
Constructor Detail

AbstractParser

public AbstractParser(PositionalPushbackReader p_reader,
                      ParserErrorsImpl p_errors)
Method Detail

soakWhitespace

protected boolean soakWhitespace()
                          throws java.io.IOException
Soak up all whitespace from the reader until non-whitespace or EOF is encountered.

Returns:
Whether or not any whitespace was encountered
Throws:
java.io.IOException

addError

protected void addError(org.jamon.api.Location p_location,
                        java.lang.String p_message)

addError

protected void addError(ParserErrorImpl p_error)

readIdentifierOrThrow

protected java.lang.String readIdentifierOrThrow()
                                          throws java.io.IOException,
                                                 AbstractParser.NotAnIdentifierException
Reads in a java identifier.

Returns:
The identifier read.
Throws:
java.io.IOException
AbstractParser.NotAnIdentifierException - if no identifier is found

readIdentifier

protected java.lang.String readIdentifier(boolean p_addErrorIfNoneFound)
                                   throws java.io.IOException
Read in a java identifier.

Parameters:
p_addErrorIfNoneFound - if true, and no identifier is found, then call addError(ParserErrorImpl)
Returns:
the identifier read, or the empty string if no identifier was found.
Throws:
java.io.IOException

readChar

protected boolean readChar(char p_char)
                    throws java.io.IOException
Read a single character from the reader. If it is the expected character, return true; otherwise, unread it and return false

Parameters:
p_char - The expected character.
Returns:
True if the character read was that expected.
Throws:
java.io.IOException

readUntil

protected java.lang.String readUntil(java.lang.String p_end,
                                     org.jamon.api.Location p_startLocation)
                              throws java.io.IOException
Read from the reader until encountering an end marker

Parameters:
p_end - The end marker for the string
p_startLocation - The location marking the start of the block being read - only used for construcing error messages.
p_passOverQuotes - True if the material being read is java which might contain the ending token inside quotes
Throws:
java.io.IOException

eofErrorMessage

public static java.lang.String eofErrorMessage(java.lang.String p_end)

readJava

protected java.lang.String readJava(org.jamon.api.Location p_startLocation,
                                    TagEndDetector p_tagEndDetector)
                             throws java.io.IOException,
                                    ParserErrorImpl
Throws:
java.io.IOException
ParserErrorImpl

checkForTagClosure

protected boolean checkForTagClosure(org.jamon.api.Location p_tagLocation)
                              throws java.io.IOException
Throws:
java.io.IOException

checkToken

protected boolean checkToken(java.lang.String p_token)
                      throws java.io.IOException
Parameters:
p_token - The token or token fragment we expect to see
Returns:
True if we see that token or token fragment
Throws:
java.io.IOException

readType

protected java.lang.String readType(org.jamon.api.Location p_location)
                             throws java.io.IOException
Throws:
java.io.IOException

readClassName

protected java.lang.String readClassName(org.jamon.api.Location p_location)
                                  throws java.io.IOException
Throws:
java.io.IOException

parsePath

protected AbstractPathNode parsePath()
                              throws java.io.IOException
Throws:
java.io.IOException

readAndAppendChar

protected boolean readAndAppendChar(char p_char,
                                    java.lang.StringBuilder builder)
                             throws java.io.IOException
Determine if the next character is a particular one, and if so, read and append it to a StringBuilder. Otherwise, do nothing.

Parameters:
p_char - The character being looked for
builder - The StringBuilder
Returns:
true if the character matched and was appended.
Throws:
java.io.IOException


jamon