tokenizer.cpp 898 B

12345678910111213141516171819202122232425262728293031323334353637
  1. #include "tokenizer.h"
  2. namespace NYson {
  3. ////////////////////////////////////////////////////////////////////////////////
  4. TTokenizer::TTokenizer(const TStringBuf& input)
  5. : Input(input)
  6. , Parsed(0)
  7. {
  8. }
  9. bool TTokenizer::ParseNext() {
  10. Input = Input.Tail(Parsed);
  11. Token.Reset();
  12. Parsed = Lexer.GetToken(Input, &Token);
  13. return !CurrentToken().IsEmpty();
  14. }
  15. const TToken& TTokenizer::CurrentToken() const {
  16. return Token;
  17. }
  18. ETokenType TTokenizer::GetCurrentType() const {
  19. return CurrentToken().GetType();
  20. }
  21. TStringBuf TTokenizer::GetCurrentSuffix() const {
  22. return Input.Tail(Parsed);
  23. }
  24. const TStringBuf& TTokenizer::CurrentInput() const {
  25. return Input;
  26. }
  27. ////////////////////////////////////////////////////////////////////////////////
  28. } // namespace NYson