diff options
| author | Jörg Frings-Fürst <debian@jff.email> | 2025-03-19 15:41:36 +0100 | 
|---|---|---|
| committer | Jörg Frings-Fürst <debian@jff.email> | 2025-03-19 15:41:36 +0100 | 
| commit | 018e1ba581ec6f01f069a45ec4cf89f152b44d5f (patch) | |
| tree | 0e7dda4bb693a6714066fbe5efcd2f24ff7c1a65 /xsd/type-map/lexer.cxx | |
| parent | 1c188393cd2e271ed2581471b601fb5960777fd8 (diff) | |
remerge
Diffstat (limited to 'xsd/type-map/lexer.cxx')
| -rw-r--r-- | xsd/type-map/lexer.cxx | 131 | 
1 files changed, 0 insertions, 131 deletions
| diff --git a/xsd/type-map/lexer.cxx b/xsd/type-map/lexer.cxx deleted file mode 100644 index ae318d1..0000000 --- a/xsd/type-map/lexer.cxx +++ /dev/null @@ -1,131 +0,0 @@ -// file      : xsd/type-map/lexer.cxx -// license   : GNU GPL v2 + exceptions; see accompanying LICENSE file - -#include <iostream> - -#include <xsd/type-map/lexer.hxx> - -using std::wcerr; -using std::endl; - -namespace TypeMap -{ -  Lexer::Lexer (std::istream& is, String const& path) -      : locale_ ("C"), is_ (is), path_ (path), line_ (1), comment_ (false) -  { -    is_.exceptions (std::ios_base::badbit); -  } - -  Lexer::Token Lexer:: -  next () -  { -    if (held_lexeme_) -    { -      Token t (Token::punct, held_lexeme_, line_); -      held_lexeme_.clear (); -      return t; -    } - -    typedef std::char_traits<char> Traits; -    typedef Traits::char_type CharType; -    typedef Traits::int_type IntType; - -    IntType i; -    CharType c ('\0'); -    NarrowString lexeme; - -    // Skip all whitespaces including comments. -    // -    while (!is_.eof ()) -    { -      i = is_.get (); - -      if (i == Traits::eof ()) -        break; - -      c = Traits::to_char_type (i); - -      if (comment_) -      { -        if (c == '\n') -          comment_ = false; -      } -      else -      { -        if (!(std::isspace (c, locale_) || c == '#')) -          break; - -        if (c == '#') -          comment_ = true; -      } - -      if (c == '\n') -        ++line_; -    } - -    if (is_.eof ()) -      return Token (Token::eos, L"<end-of-stream>", line_); - -    bool quote (c == '"'); - -    if (!quote) -      lexeme += c; - -    if (c != ';' && c != '{' && c != '}') -    { -      // Accumulate non-whitespace character sequence. -      // - -      while (!is_.eof ()) -      { -        i = is_.get (); - -        if (i == Traits::eof ()) -          break; - -        c = Traits::to_char_type (i); - -        if (!quote && c == '#') -        { -          comment_ = true; -          break; -        } - -        if (std::isspace (c, locale_)) -        { -          if (c == '\n') -            ++line_; - -          if (!quote) -            break; -        } - -        if (!quote && (c == ';' || c == '{' || c == '}')) -        { -          held_lexeme_ += c; -          break; -        } - -        if (quote && c == '"') -          break; - -        lexeme += c; -      } - -      if (quote && c != '"') -      { -        wcerr << path_ << ":" << line_ << ": error: closing '\"' expected" -              << endl; - -        throw Failed (); -      } -    } - -    if (!quote && (lexeme == ";" || lexeme == "{" || lexeme == "}")) -    { -      return Token (Token::punct, lexeme, line_); -    } -    else -      return Token (Token::token, lexeme, line_); -  } -} | 
