Alien-SmokeQt
view release on metacpan or search on metacpan
generator/parser/lexer.cpp view on Meta::CPAN
KDevVarLengthArray<KDevVarLengthArray<QPair<uint, TOKEN_KIND>, 10 >, index_size > createIndicesForTokens() {
KDevVarLengthArray<KDevVarLengthArray<QPair<uint, TOKEN_KIND>, 10 >, index_size > ret;
ret.resize(index_size);
#define ADD_TOKEN(string) ret[IndexedString(#string).index() % index_size].append(qMakePair(IndexedString(#string).index(), Token_ ## string));
#define ADD_MAPPED_TOKEN(string, token) ret[IndexedString(#string).index() % index_size].append(qMakePair(IndexedString(#string).index(), token));
ADD_TOKEN(K_DCOP);
ADD_TOKEN(Q_OBJECT);
ADD_MAPPED_TOKEN(Q_SIGNALS, Token_signals);
ADD_MAPPED_TOKEN(Q_SLOTS, Token_slots);
ADD_TOKEN(__attribute__);
ADD_TOKEN(__typeof);
ADD_TOKEN(and);
ADD_TOKEN(and_eq);
ADD_TOKEN(asm);
ADD_TOKEN(auto);
ADD_TOKEN(bitand);
ADD_TOKEN(bitor);
ADD_TOKEN(bool);
ADD_TOKEN(break);
ADD_TOKEN(case);
ADD_TOKEN(catch);
ADD_TOKEN(char);
ADD_TOKEN(class);
ADD_TOKEN(compl);
ADD_TOKEN(const);
ADD_TOKEN(const_cast);
ADD_TOKEN(continue);
ADD_TOKEN(default);
ADD_TOKEN(delete);
ADD_TOKEN(do);
ADD_TOKEN(double);
ADD_TOKEN(dynamic_cast);
ADD_TOKEN(else);
ADD_TOKEN(emit);
ADD_TOKEN(enum);
ADD_TOKEN(explicit);
ADD_TOKEN(export);
ADD_TOKEN(extern);
ADD_TOKEN(false);
ADD_TOKEN(float);
ADD_TOKEN(for);
ADD_TOKEN(friend);
ADD_TOKEN(goto);
ADD_TOKEN(if);
ADD_TOKEN(incr);
ADD_TOKEN(inline);
ADD_TOKEN(int);
ADD_TOKEN(k_dcop);
ADD_TOKEN(k_dcop_signals);
ADD_TOKEN(long);
ADD_TOKEN(mutable);
ADD_TOKEN(namespace);
ADD_TOKEN(new);
ADD_TOKEN(not);
ADD_TOKEN(not_eq);
ADD_TOKEN(operator);
ADD_TOKEN(or);
ADD_TOKEN(or_eq);
ADD_TOKEN(private);
ADD_TOKEN(protected);
ADD_TOKEN(public);
ADD_TOKEN(register);
ADD_TOKEN(reinterpret_cast);
ADD_TOKEN(return);
ADD_TOKEN(short);
ADD_TOKEN(signals);
ADD_TOKEN(signed);
ADD_TOKEN(sizeof);
ADD_TOKEN(slots);
ADD_TOKEN(static);
ADD_TOKEN(static_cast);
ADD_TOKEN(struct);
ADD_TOKEN(switch);
ADD_TOKEN(template);
ADD_TOKEN(this);
ADD_TOKEN(throw);
ADD_TOKEN(true);
ADD_TOKEN(try);
ADD_TOKEN(typedef);
ADD_TOKEN(typeid);
ADD_TOKEN(typename);
ADD_TOKEN(union);
ADD_TOKEN(unsigned);
ADD_TOKEN(using);
ADD_TOKEN(virtual);
ADD_TOKEN(void);
ADD_TOKEN(volatile);
ADD_TOKEN(size_t);
ADD_TOKEN(wchar_t);
ADD_TOKEN(while);
ADD_TOKEN(xor);
ADD_TOKEN(xor_eq);
ADD_TOKEN(__qt_sig_slot__);
return ret;
}
//A very simple lookup table: First level contains all pairs grouped by with (index % index_size), then there is a simple list
KDevVarLengthArray<KDevVarLengthArray<QPair<uint, TOKEN_KIND>, 10 >, index_size > indicesForTokens = createIndicesForTokens();
scan_fun_ptr Lexer::s_scan_table[256];
bool Lexer::s_initialized = false;
Lexer::Lexer(Control *c)
: session(0),
control(c),
m_leaveSize(false)
{
}
void Lexer::tokenize(ParseSession* _session)
{
session = _session;
if (!s_initialized)
initialize_scan_table();
m_canMergeComment = false;
m_firstInLine = true;
m_leaveSize = false;
session->token_stream->resize(1024);
( run in 0.843 second using v1.01-cache-2.11-cpan-39bf76dae61 )