summaryrefslogtreecommitdiff
path: root/src/parse/lex.cpp
diff options
context:
space:
mode:
authorJohn Hodge <tpg@mutabah.net>2016-11-02 14:51:21 +0800
committerJohn Hodge <tpg@mutabah.net>2016-11-02 14:51:21 +0800
commit52c363340a4f2ee589d2e6753f1c685ef7b907f5 (patch)
tree758c04ec4aada28255cb5cd7865ad27025f29e7f /src/parse/lex.cpp
parent563520207ad1a6c0deff41b881ac5d0168d3439e (diff)
downloadmrust-52c363340a4f2ee589d2e6753f1c685ef7b907f5.tar.gz
All - Hack in start of macro hygine - requires rework so is disabled
Diffstat (limited to 'src/parse/lex.cpp')
-rw-r--r--src/parse/lex.cpp25
1 files changed, 24 insertions, 1 deletions
diff --git a/src/parse/lex.cpp b/src/parse/lex.cpp
index 76c8ab5d..a5c4e372 100644
--- a/src/parse/lex.cpp
+++ b/src/parse/lex.cpp
@@ -251,6 +251,29 @@ Token Lexer::realGetToken()
//::std::cout << "getTokenInt: tok = " << tok << ::std::endl;
switch(tok.type())
{
+ case TOK_IDENT:
+ if( m_hygine_stack.size() > 0 )
+ {
+ m_hygine_stack.back() ++;
+ }
+ return tok;
+
+ case TOK_PAREN_OPEN:
+ case TOK_SQUARE_OPEN:
+ case TOK_BRACE_OPEN:
+ case TOK_ATTR_OPEN:
+ case TOK_CATTR_OPEN:
+ m_hygine_stack.push_back(0);
+ return tok;
+ case TOK_PAREN_CLOSE:
+ case TOK_SQUARE_CLOSE:
+ case TOK_BRACE_CLOSE:
+ m_hygine_stack.pop_back();
+ if( m_hygine_stack.size() > 0 ) {
+ m_hygine_stack.back() ++;
+ }
+ return tok;
+
case TOK_NEWLINE:
m_line ++;
m_line_ofs = 0;
@@ -767,7 +790,7 @@ Token Lexer::getTokenInt_Identifier(Codepoint leader, Codepoint leader2)
if( str < RWORDS[i].chars ) break;
if( str == RWORDS[i].chars ) return Token((enum eTokenType)RWORDS[i].type);
}
- return Token(TOK_IDENT, str);
+ return Token(Ident( Ident::Hygine(m_file_index, m_hygine_stack), mv$(str) ));
}
}