X-Git-Url: http://g0dil.de/git?a=blobdiff_plain;f=Console%2FParse.cci;h=322fc44f6011e77c445067580c5e54de50f2d6fd;hb=feeec0e9cd78825120bd52f9ef4e115d383bf6a8;hp=74b54f392801fa955e38df581fa6625fbba0ee66;hpb=e72b932bd59aa3e4553151f0d03e663af7ac5cd6;p=senf.git diff --git a/Console/Parse.cci b/Console/Parse.cci index 74b54f3..322fc44 100644 --- a/Console/Parse.cci +++ b/Console/Parse.cci @@ -73,9 +73,68 @@ prefix_ senf::console::Token::Token(TokenType type, std::string token) : type_(type), token_ (token) {} +prefix_ senf::console::Token senf::console::NoneToken() +{ + return Token(Token::None,""); +} + +prefix_ senf::console::Token senf::console::PathSeparatorToken() +{ + return Token(Token::PathSeparator,"/"); +} + +prefix_ senf::console::Token senf::console::ArgumentGroupOpenToken() +{ + return Token(Token::ArgumentGroupOpen,"("); +} + +prefix_ senf::console::Token senf::console::ArgumentGroupCloseToken() +{ + return Token(Token::ArgumentGroupClose,")"); +} + +prefix_ senf::console::Token senf::console::DirectoryGroupOpenToken() +{ + return Token(Token::DirectoryGroupOpen,"{"); +} + +prefix_ senf::console::Token senf::console::DirectoryGroupCloseToken() +{ + return Token(Token::DirectoryGroupClose,"}"); +} + +prefix_ senf::console::Token senf::console::CommandTerminatorToken() +{ + return Token(Token::CommandTerminator,";"); +} + +prefix_ senf::console::Token senf::console::OtherPunctuationToken(std::string const & value) +{ + return Token(Token::OtherPunctuation, value); +} + +prefix_ senf::console::Token senf::console::BasicStringToken(std::string const & value) +{ + return Token(Token::BasicString, value); +} + +prefix_ senf::console::Token senf::console::HexStringToken(std::string const & value) +{ + return Token(Token::HexString, value); +} + +prefix_ senf::console::Token senf::console::WordToken(std::string const & value) +{ + return Token(Token::Word, value); +} + /////////////////////////////////////////////////////////////////////////// // senf::console::ParseCommandInfo +prefix_ senf::console::ParseCommandInfo::ParseCommandInfo() + : builtin_ (NoBuiltin) +{} + prefix_ senf::console::ParseCommandInfo::BuiltinCommand senf::console::ParseCommandInfo::builtin() const @@ -104,26 +163,30 @@ prefix_ senf::console::ParseCommandInfo::TokensRange senf::console::ParseCommand return boost::make_iterator_range(tokens_.begin(), tokens_.end()); } -//////////////////////////////////////// -// private members - -prefix_ void senf::console::ParseCommandInfo::init() +prefix_ void senf::console::ParseCommandInfo::clear() { builtin_ = NoBuiltin; commandPath_.clear(); tokens_.clear(); } -prefix_ void senf::console::ParseCommandInfo::setBuiltin(BuiltinCommand builtin) +prefix_ bool senf::console::ParseCommandInfo::empty() +{ + return builtin_ == NoBuiltin && commandPath_.empty(); +} + +prefix_ void senf::console::ParseCommandInfo::builtin(BuiltinCommand builtin) { builtin_ = builtin; + commandPath_.clear(); } prefix_ void -senf::console::ParseCommandInfo::setCommand(std::vector & commandPath) +senf::console::ParseCommandInfo::command(std::vector & commandPath) { commandPath_.clear(); commandPath_.swap(commandPath); + builtin_ = NoBuiltin; } prefix_ void senf::console::ParseCommandInfo::addToken(Token const & token) @@ -166,6 +229,23 @@ prefix_ void senf::console::ParseCommandInfo::ArgumentIterator::increment() } /////////////////////////////////////////////////////////////////////////// +// senf::console::SyntaxErrorException + +prefix_ senf::console::SyntaxErrorException::SyntaxErrorException(std::string const & msg) + : message_(msg) +{} + +prefix_ senf::console::SyntaxErrorException::~SyntaxErrorException() + throw() +{} + +prefix_ std::string const & senf::console::SyntaxErrorException::message() + const +{ + return message_; +} + +/////////////////////////////////////////////////////////////////////////// prefix_ senf::console::CheckedArgumentIteratorWrapper:: CheckedArgumentIteratorWrapper(ParseCommandInfo::ArgumentsRange const & range,