Commit 40050f5a by Aaron Leung

Cleaning up the token object.

parent 24e20128
......@@ -105,7 +105,8 @@ namespace Sass {
Node values(Node::values);
while(try_munching<identifier>() || try_munching<dimension>() ||
try_munching<percentage>() || try_munching<number>() ||
try_munching<hex>() || try_munching<variable>()) {
try_munching<hex>() || try_munching<string_constant>() ||
try_munching<variable>()) {
if (top.begin[0] == '$') {
Node stuff(environment[string(top)]);
for (int i = 0; i < stuff.children.size(); ++i) {
......
......@@ -34,7 +34,7 @@ namespace Sass {
else if (mx == spaces || mx == ancestor_of) {
after_whitespace = spaces(position);
if (after_whitespace) {
top = Token(mx, position, after_whitespace, line_number);
top = Token(position, after_whitespace);
line_number += count_interval<'\n'>(position, after_whitespace);
position = after_whitespace;
return last_munch_succeeded = true;
......@@ -52,7 +52,7 @@ namespace Sass {
line_number += count_interval<'\n'>(position, after_whitespace);
char* after_token = mx(after_whitespace);
if (after_token) {
top = Token(mx, after_whitespace, after_token, line_number);
top = Token(after_whitespace, after_token);
position = after_token;
return last_munch_succeeded = true;
}
......
#include "token.hpp"
namespace Sass {
Token::Token() {
begin = 0;
end = 0;
line_number = 1;
}
Token::Token(Prelexer::prelexer _type,
const char* _begin,
const char* _end,
unsigned int _line_number) {
type = _type;
if (_begin > _end) begin = end = 0;
else begin = _begin, end = _end;
line_number = _line_number;
}
Token::Token(const Token& t) {
type = t.type;
begin = t.begin;
end = t.end;
line_number = t.line_number;
}
Token::Token() : begin(0), end(0) { }
Token::Token(const char* _begin, const char* _end)
: begin(_begin), end(_end) { }
}
\ No newline at end of file
......@@ -5,22 +5,13 @@ namespace Sass {
using std::string;
struct Token {
Prelexer::prelexer type;
const char* begin;
const char* end;
unsigned int line_number;
Token();
Token(Prelexer::prelexer _type,
const char* _begin,
const char* _end,
unsigned int _line_number);
Token(const Token& t);
Token(const char* _begin, const char* _end);
inline bool is_null() { return begin == 0 || end == 0; }
inline operator string() const { return string(begin, end - begin); }
inline bool operator<(const Token& rhs) const {
return (begin < rhs.begin) ||
(begin == rhs.begin && end < rhs.end);
}
};
}
\ No newline at end of file
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment