diff options
author | John Hodge <tpg@mutabah.net> | 2016-11-02 14:51:21 +0800 |
---|---|---|
committer | John Hodge <tpg@mutabah.net> | 2016-11-02 14:51:21 +0800 |
commit | 52c363340a4f2ee589d2e6753f1c685ef7b907f5 (patch) | |
tree | 758c04ec4aada28255cb5cd7865ad27025f29e7f /src/parse/lex.cpp | |
parent | 563520207ad1a6c0deff41b881ac5d0168d3439e (diff) | |
download | mrust-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.cpp | 25 |
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) )); } } |