Example #1
0
  bool Parser::Impl::parseArgument() {
    // argument := string-list / number / tag

    if ( !obtainToken() || atEnd() )
      return false;

    if ( token() == Lexer::Number ) {
      if ( !parseNumber() ) {
        assert( error() );
        return false;
      }
      return true;
    } else if ( token() == Lexer::Tag ) {
      if ( scriptBuilder() )
        scriptBuilder()->taggedArgument( tokenValue() );
      consumeToken();
      return true;
    } else if ( isStringToken() ) {
      if ( scriptBuilder() )
        scriptBuilder()->stringArgument( tokenValue(), token() == Lexer::MultiLineString, QString() );
      consumeToken();
      return true;
    } else if ( token() == Lexer::Special && tokenValue() == "[" ) {
      if ( !parseStringList() ) {
        assert( error() );
        return false;
      }
      return true;
    }

    return false;
  }
Example #2
0
bool Parser::Impl::isArgumentToken() const
{
    return isStringToken() ||
           token() == Lexer::Number ||
           token() == Lexer::Tag ||
           token() == Lexer::Special && mTokenValue == "[" ;
}