summaryrefslogtreecommitdiff
path: root/src/parse
diff options
context:
space:
mode:
Diffstat (limited to 'src/parse')
-rw-r--r--src/parse/lex.cpp6
-rw-r--r--src/parse/token.cpp6
-rw-r--r--src/parse/tokentree.hpp14
3 files changed, 14 insertions, 12 deletions
diff --git a/src/parse/lex.cpp b/src/parse/lex.cpp
index 4a50d659..624912c6 100644
--- a/src/parse/lex.cpp
+++ b/src/parse/lex.cpp
@@ -1031,7 +1031,7 @@ Token TTStreamO::realGetToken()
{
// If current index is above TT size, go up
unsigned int& idx = m_stack.back().first;
- const TokenTree& tree = *( m_stack.back().second ? m_stack.back().second : &m_input_tt );
+ TokenTree& tree = *( m_stack.back().second ? m_stack.back().second : &m_input_tt );
if(idx == 0 && tree.is_token()) {
idx ++;
@@ -1041,11 +1041,11 @@ Token TTStreamO::realGetToken()
if(idx < tree.size())
{
- const TokenTree& subtree = tree[idx];
+ TokenTree& subtree = tree[idx];
idx ++;
if( subtree.size() == 0 ) {
m_last_pos = subtree.tok().get_pos();
- return subtree.tok();
+ return mv$( subtree.tok() );
}
else {
m_stack.push_back( ::std::make_pair(0, &subtree ) );
diff --git a/src/parse/token.cpp b/src/parse/token.cpp
index b261f248..c5add18a 100644
--- a/src/parse/token.cpp
+++ b/src/parse/token.cpp
@@ -185,8 +185,12 @@ Token Token::clone() const
case TOK_INTERPOLATED_META:
rv.m_data = new AST::MetaItem( reinterpret_cast<AST::MetaItem*>(e)->clone() );
break;
+ case TOK_INTERPOLATED_ITEM:
+ TODO(m_pos, "clone interpolated item");
+ //rv.m_data = new AST::Named( AST::Item( reinterpret_cast<AST::MetaItem*>(e)->clone() ) );
+ break;
default:
- assert(!"Token::clone() - fragment with invalid token type");
+ BUG(m_pos, "Fragment with invalid token type (" << *this << ")");
break;
}
)
diff --git a/src/parse/tokentree.hpp b/src/parse/tokentree.hpp
index 833b39dc..0856c326 100644
--- a/src/parse/tokentree.hpp
+++ b/src/parse/tokentree.hpp
@@ -29,12 +29,10 @@ public:
unsigned int size() const {
return m_subtrees.size();
}
- const TokenTree& operator[](unsigned int idx) const {
- return m_subtrees[idx];
- }
- const Token& tok() const {
- return m_tok;
- }
+ const TokenTree& operator[](unsigned int idx) const { return m_subtrees[idx]; }
+ TokenTree& operator[](unsigned int idx) { return m_subtrees[idx]; }
+ const Token& tok() const { return m_tok; }
+ Token& tok() { return m_tok; }
friend ::std::ostream& operator<<(::std::ostream& os, const TokenTree& tt) {
if( tt.m_subtrees.size() == 0 )
@@ -74,8 +72,8 @@ class TTStreamO:
public TokenStream
{
Position m_last_pos;
- TokenTree m_input_tt;
- ::std::vector< ::std::pair<unsigned int, const TokenTree*> > m_stack;
+ TokenTree m_input_tt;
+ ::std::vector< ::std::pair<unsigned int, TokenTree*> > m_stack;
public:
TTStreamO(TokenTree input_tt);
TTStreamO(TTStreamO&& x) = default;