/[mpak]/mpak/include/mpak/spec/lexer.hh
ViewVC logotype

Diff of /mpak/include/mpak/spec/lexer.hh

Parent Directory Parent Directory | Revision Log Revision Log | View Patch Patch

revision 1.1 by pbgavin, Mon Jul 28 18:20:26 2003 UTC revision 1.2 by pbgavin, Fri Aug 1 01:34:27 2003 UTC
# Line 57  namespace mpak Line 57  namespace mpak
57              typedef std::basic_ios<char_type, traits_type> ios_type;              typedef std::basic_ios<char_type, traits_type> ios_type;
58              typedef std::basic_streambuf<char_type, traits_type> streambuf_type;              typedef std::basic_streambuf<char_type, traits_type> streambuf_type;
59              typedef std::ctype<char_type> ctype_type;              typedef std::ctype<char_type> ctype_type;
60                typedef std::basic_string<char_type, traits_type> string_type;
61                            
62              static const ecstacy::size_type tab_size;              static const ecstacy::size_type tab_size;
63                            
64              class token              struct token
65              {              {
             public:  
66                  enum type_t {                  enum type_t {
67                      type_none,                      type_none,
68                      type_identifier,                      type_identifier,
69                      type_string,                      type_string,
70                      type_block_start,                      type_command_begin,
71                        type_block_begin,
72                      type_block_end,                      type_block_end,
73                      type_equals,                      type_equals,
74                      type_endl,                      type_endl,
75                        type_semicolon,
76                      type_eof                      type_eof
77                  };                  };
78                            
79                  type_t type;                  type_t type;
80                  std::basic_string<char_type, traits_type> value;                  string_type value;
81                  ecstacy::size_type line;                  ecstacy::size_type line;
82                  ecstacy::size_type column;                  ecstacy::size_type column;
83                            
# Line 89  namespace mpak Line 91  namespace mpak
91                  }                  }
92                            
93                  inline                  inline
94                  token (type_t type, const std::basic_string<char_type, traits_type> &value, ecstacy::size_type line, ecstacy::size_type column)                  token (type_t type,
95                           const string_type &value = string_type (),
96                           ecstacy::size_type line = 0,
97                           ecstacy::size_type column = 0)
98                      : type (type),                      : type (type),
99                        value (value),                        value (value),
100                        line (line),                        line (line),
101                        column (column)                        column (column)
102                  {                  {
103                  }                  }
104                    
105                    inline
106                    token (const token &token)
107                        : type (token.type),
108                          value (token.value),
109                          line (token.line),
110                          column (token.column)
111                    {
112                    }
113                    
114                    const token &operator = (const token &token)
115                    {
116                        this->type = token.type;
117                        this->value = token.value;
118                        this->line = token.line;
119                        this->column = token.column;
120                        return *this;
121                    }
122              };              };
123                    
124          private:          private:
# Line 131  namespace mpak Line 154  namespace mpak
154                  this->buf_->sputbackc (c);                  this->buf_->sputbackc (c);
155                  if (traits_type::eq (c, ct.widen ('\n'))) {                  if (traits_type::eq (c, ct.widen ('\n'))) {
156                      --this->line_;                      --this->line_;
157                      this->column = 0;                      this->column_ = static_cast<ecstacy::size_type> (-1);
158                  } else {                  } else {
159                      --this->column_;                      --this->column_;
160                  }                  }
# Line 171  namespace mpak Line 194  namespace mpak
194              }              }
195                    
196              token next_token (void);              token next_token (void);
197                
198            private:
199                basic_lexer (void)
200                {
201                }
202                
203                basic_lexer (const basic_lexer &lexer)
204                {
205                }
206                
207                basic_lexer &operator = (const basic_lexer &lexer)
208                {
209                    return *this;
210                }
211          };          };
212                
213          typedef basic_lexer<char> lexer;          typedef basic_lexer<char> lexer;
214          typedef basic_lexer<wchar_t> wlexer;          typedef basic_lexer<wchar_t> wlexer;
215                    

Legend:
Removed from v.1.1  
changed lines
  Added in v.1.2

savannah-hackers-public@gnu.org
ViewVC Help
Powered by ViewVC 1.1.26