From 269f28df980f34895c3c7181140963b4a86a1afc Mon Sep 17 00:00:00 2001 From: tomsmeding Date: Thu, 9 Feb 2017 22:20:56 +0100 Subject: Split the Scope types, and generic ref/unref --- parser.cpp | 22 +++++++++++----------- 1 file changed, 11 insertions(+), 11 deletions(-) (limited to 'parser.cpp') diff --git a/parser.cpp b/parser.cpp index e2d157c..764776c 100644 --- a/parser.cpp +++ b/parser.cpp @@ -340,7 +340,7 @@ static string parseString(const string &repr,Site site){ } static Expression parseExpression(Tokeniser &tokeniser,int minprec=-1); -static StatementList parseScope(Tokeniser &tokeniser); +static StatementList parseScopeDef(Tokeniser &tokeniser); static vector parseArgumentList(Tokeniser &tokeniser){ if(tokeniser.eof())throw ParseError(tokeniser.site(),"Expected argument list but found EOF"); @@ -413,10 +413,10 @@ static Expression parseAtom(Tokeniser &tokeniser){ return expr; } return Expression(Expression::Type::dive,tok.str,args, - Scope(Scope::Type::direct,parseScope(tokeniser),{})); + ScopeDef(ScopeDef::Type::direct,parseScopeDef(tokeniser),{})); } else if(tok2.type==Token::Type::symbol&&tok2.str=="{"){ return Expression(Expression::Type::dive,tok.str,{}, - Scope(Scope::Type::direct,parseScope(tokeniser),{})); + ScopeDef(ScopeDef::Type::direct,parseScopeDef(tokeniser),{})); } else { Expression expr=Expression(Expression::Type::call,tok.str,vector()); expr.site=tok.site; @@ -450,14 +450,14 @@ static Expression parseAtom(Tokeniser &tokeniser){ tokeniser.advance(); return expr; } - Scope::Type sctype; - if(tok.str=="?")sctype=Scope::Type::lazy; - else if(tok.str=="??")sctype=Scope::Type::function; + ScopeDef::Type sctype; + if(tok.str=="?")sctype=ScopeDef::Type::lazy; + else if(tok.str=="??")sctype=ScopeDef::Type::function; else if(tok.str!="{"){ throw ParseError(tok.site,"Unexpected token '"+tok.str+"' in expression atom position"); - } else sctype=Scope::Type::direct; + } else sctype=ScopeDef::Type::direct; vector args; - if(sctype!=Scope::Type::direct){ + if(sctype!=ScopeDef::Type::direct){ tokeniser.advance(); if(tokeniser.eof()){ throw ParseError(tokeniser.site(),"Expected scope after '"+tok.str+"' but found EOF"); @@ -477,7 +477,7 @@ static Expression parseAtom(Tokeniser &tokeniser){ if(tok2.type!=Token::Type::symbol||tok2.str!="{"){ throw ParseError(tok2.site,"Expected '{' to begin scope"); } - Scope sc(sctype,parseScope(tokeniser),args); + ScopeDef sc(sctype,parseScopeDef(tokeniser),args); return Expression(Expression::Type::scope,sc); } @@ -559,7 +559,7 @@ static Statement parseStatement(Tokeniser &tokeniser){ } } -static StatementList parseScope(Tokeniser &tokeniser){ +static StatementList parseScopeDef(Tokeniser &tokeniser){ if(tokeniser.eof())throw ParseError(tokeniser.site(),"Expected scope"); Token tok=tokeniser.get(); if(tok.type!=Token::Type::symbol||tok.str!="{"){ @@ -578,7 +578,7 @@ static StatementList parseScope(Tokeniser &tokeniser){ stl.push_back(parseStatement(tokeniser)); } tokeniser.advance(); - // DEBUG<<"leaving parseScope with tokeniser at "<