From 80e4060188913eb12ad8a774b07d3b938485a49a Mon Sep 17 00:00:00 2001 From: "John Hodge (sonata)" Date: Fri, 16 Jan 2015 09:14:38 +0800 Subject: Added associated type reference parse, and tuple value parse --- src/parse/expr.cpp | 13 ++++++++++++- 1 file changed, 12 insertions(+), 1 deletion(-) (limited to 'src/parse/expr.cpp') diff --git a/src/parse/expr.cpp b/src/parse/expr.cpp index fdf35740..3899a3c3 100644 --- a/src/parse/expr.cpp +++ b/src/parse/expr.cpp @@ -491,7 +491,18 @@ ExprNodeP Parse_ExprVal(TokenStream& lex) return NEWNODE( AST::ExprNode_NamedValue, AST::Path(AST::Path::TagLocal(), "self") ); case TOK_PAREN_OPEN: { ExprNodeP rv = Parse_Expr0(lex); - GET_CHECK_TOK(tok, lex, TOK_PAREN_CLOSE); + if( GET_TOK(tok, lex) == TOK_COMMA ) { + ::std::vector ents; + ents.push_back( ::std::move(rv) ); + do { + if( GET_TOK(tok, lex) == TOK_PAREN_CLOSE ) + break; + lex.putback(tok); + ents.push_back( Parse_Expr0(lex) ); + } while( GET_TOK(tok, lex) == TOK_COMMA ); + rv = NEWNODE( AST::ExprNode_Tuple, ::std::move(ents) ); + } + CHECK_TOK(tok, TOK_PAREN_CLOSE); return rv; } case TOK_MACRO: //return NEWNODE( AST::ExprNode_Macro, tok.str(), Parse_TT(lex) ); -- cgit v1.2.3