#include <line_numbers.hh>
Inheritance diagram for lestes::lang::cplus::lex::line_numbers:

Public Types | |
| typedef ulint | count_type |
| Common type for counting tokens. | |
Public Member Functions | |
| ptr< ucn_token > | read (void) |
| Reads next token from input. | |
Static Public Member Functions | |
| static ptr< line_numbers > | create (void) |
| Returns new instance, initialize with first row and column. | |
Protected Member Functions | |
| line_numbers (void) | |
| Creates the object, initializes with first row and column. | |
Private Member Functions | |
| line_numbers (const line_numbers &) | |
| Hides copy constructor. | |
| line_numbers & | operator= (const line_numbers &) |
| Hides assignment operator. | |
Private Attributes | |
| count_type | line |
| Line of the coming token. | |
| count_type | column |
| Column of the coming token. | |
Performs assignment of relative line numbers and columns to tokens.
Definition at line 49 of file line_numbers.hh.
| typedef ulint lestes::lang::cplus::lex::line_numbers::count_type |
| lestes::lang::cplus::lex::line_numbers::line_numbers | ( | void | ) | [protected] |
| lestes::lang::cplus::lex::line_numbers::line_numbers | ( | const line_numbers & | ) | [private] |
Hides copy constructor.
| ptr< ucn_token > lestes::lang::cplus::lex::line_numbers::read | ( | void | ) | [virtual] |
Reads next token from input.
Reads next token, assigns line and column numbers. The line number is relative to the physical start of the file. It does not reflect the line directives yet.
Implements lestes::lang::cplus::lex::ucn_filter.
Definition at line 60 of file line_numbers.cc.
References column, lestes::lang::cplus::lex::simple_location::create(), lestes::lang::cplus::lex::ucn_filter::input_read(), lassert, line, lestes::lang::cplus::lex::ucn_token::TOK_BASIC, lestes::lang::cplus::lex::ucn_token::TOK_EOF, lestes::lang::cplus::lex::ucn_token::TOK_ERROR, and lestes::lang::cplus::lex::ucn_token::TOK_TRANSLATED.
00061 { 00062 ptr<simple_location> loc = simple_location::create(line,column); 00063 ptr<ucn_token> t = input_read(); 00064 ucn_token_type utt = t->type_get(); 00065 t = t->clone_location(loc); 00066 00067 switch (utt) { 00068 case ucn_token::TOK_BASIC: 00069 // line end 00070 if (t->value_get() == character::ascii_new_line) { 00071 // reset column 00072 column = 1; 00073 // update line 00074 line++; 00075 break; 00076 } 00077 // fall through 00078 case ucn_token::TOK_TRANSLATED: 00079 // update column 00080 column++; 00081 break; 00082 case ucn_token::TOK_ERROR: 00083 case ucn_token::TOK_EOF: 00084 // no need to update line or column 00085 break; 00086 default: 00087 // TODO pt ICE 00088 lassert(false); 00089 break; 00090 } 00091 return t; 00092 }
| ptr< line_numbers > lestes::lang::cplus::lex::line_numbers::create | ( | void | ) | [static] |
Returns new instance, initialize with first row and column.
Returns new instance.
Definition at line 98 of file line_numbers.cc.
References line_numbers().
00099 { 00100 return new line_numbers(); 00101 }
| line_numbers& lestes::lang::cplus::lex::line_numbers::operator= | ( | const line_numbers & | ) | [private] |
Hides assignment operator.
1.5.1-20070107