summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAdrian Thurston <thurston@complang.org>2014-01-05 17:02:20 -0500
committerAdrian Thurston <thurston@complang.org>2014-01-05 17:02:20 -0500
commit02f9b941571b375e8cfef1d481d02562e4fbe090 (patch)
tree93761c79bec5ae8ca759fdc9ebc9fd7064c4dca2
parent3ce51258d0c0e56f6ed0569ff74730af9d33ddcf (diff)
downloadcolm-02f9b941571b375e8cfef1d481d02562e4fbe090.tar.gz
moved curLocalFrame into the parser class
-rw-r--r--src/consinit.cc6
-rw-r--r--src/loadcolm.cc8
-rw-r--r--src/loadinit.cc8
-rw-r--r--src/parsedata.h1
-rw-r--r--src/parser.cc40
-rw-r--r--src/parser.h1
6 files changed, 32 insertions, 32 deletions
diff --git a/src/consinit.cc b/src/consinit.cc
index 394b51f5..f447a372 100644
--- a/src/consinit.cc
+++ b/src/consinit.cc
@@ -746,7 +746,7 @@ void ConsInit::parseInput( StmtList *stmtList )
popQual->append( QualItem( QualItem::Dot, internal, String( "argv" ) ) );
LangVarRef *popRef = LangVarRef::cons( internal,
- 0, pd->curLocalFrame->rootScope, popQual, String("pop") );
+ 0, curLocalFrame->rootScope, popQual, String("pop") );
LangExpr *pop = LangExpr::cons( LangTerm::cons( InputLoc(), popRef, popArgs ) );
/* Construct a literal string 'r', for second arg to open. */
@@ -758,7 +758,7 @@ void ConsInit::parseInput( StmtList *stmtList )
/* Call open. */
QualItemVect *openQual = new QualItemVect;
LangVarRef *openRef = LangVarRef::cons( internal,
- 0, pd->curLocalFrame->rootScope, openQual, String("open") );
+ 0, curLocalFrame->rootScope, openQual, String("open") );
CallArgVect *openArgs = new CallArgVect;
openArgs->append( new CallArg(pop) );
openArgs->append( new CallArg(modeExpr) );
@@ -780,7 +780,7 @@ void ConsInit::parseInput( StmtList *stmtList )
void ConsInit::exportTree( StmtList *stmtList )
{
QualItemVect *qual = new QualItemVect;
- LangVarRef *varRef = LangVarRef::cons( internal, 0, pd->curLocalFrame->rootScope, qual, String("P") );
+ LangVarRef *varRef = LangVarRef::cons( internal, 0, curLocalFrame->rootScope, qual, String("P") );
LangExpr *expr = LangExpr::cons( LangTerm::cons( internal, LangTerm::VarRefType, varRef ) );
NamespaceQual *nspaceQual = NamespaceQual::cons( namespaceStack.top() );
diff --git a/src/loadcolm.cc b/src/loadcolm.cc
index 06e94300..f06b2597 100644
--- a/src/loadcolm.cc
+++ b/src/loadcolm.cc
@@ -228,7 +228,7 @@ struct LoadColm
IterCall *iterCall = walkIterCall( Statement.iter_call() );
stmt = forScope( Statement.id().loc(), forDecl,
- pd->curLocalFrame->curScope, typeRef, iterCall, stmtList );
+ curLocalFrame->curScope, typeRef, iterCall, stmtList );
popScope();
break;
@@ -429,7 +429,7 @@ struct LoadColm
if ( optLabel.prodName() == opt_label::_Id ) {
String id = optLabel.id().data();
varRef = LangVarRef::cons( optLabel.id().loc(),
- context, pd->curLocalFrame->curScope, id );
+ context, curLocalFrame->curScope, id );
}
return varRef;
}
@@ -1157,7 +1157,7 @@ struct LoadColm
QualItemVect *qualItemVect = walkQual( Qual );
String id = varRef.id().data();
LangVarRef *langVarRef = LangVarRef::cons( varRef.id().loc(),
- context, pd->curLocalFrame->curScope, qualItemVect, id );
+ context, curLocalFrame->curScope, qualItemVect, id );
return langVarRef;
}
@@ -1814,7 +1814,7 @@ struct LoadColm
case iter_call::_Id: {
String tree = Tree.id().data();
LangVarRef *varRef = LangVarRef::cons( Tree.id().loc(),
- context, pd->curLocalFrame->curScope, tree );
+ context, curLocalFrame->curScope, tree );
LangTerm *langTerm = LangTerm::cons( Tree.id().loc(),
LangTerm::VarRefType, varRef );
LangExpr *langExpr = LangExpr::cons( langTerm );
diff --git a/src/loadinit.cc b/src/loadinit.cc
index aed5072d..e26f731d 100644
--- a/src/loadinit.cc
+++ b/src/loadinit.cc
@@ -285,7 +285,7 @@ void LoadInit::consParseStmt( StmtList *stmtList )
QualItemVect *popQual = new QualItemVect;
popQual->append( QualItem( QualItem::Dot, internal, String( "argv" ) ) );
- LangVarRef *popRef = LangVarRef::cons( internal, 0, pd->curLocalFrame->rootScope, popQual, String("pop") );
+ LangVarRef *popRef = LangVarRef::cons( internal, 0, curLocalFrame->rootScope, popQual, String("pop") );
LangExpr *pop = LangExpr::cons( LangTerm::cons( InputLoc(), popRef, popArgs ) );
/* Construct a literal string 'r', for second arg to open. */
@@ -297,7 +297,7 @@ void LoadInit::consParseStmt( StmtList *stmtList )
/* Call open. */
QualItemVect *openQual = new QualItemVect;
LangVarRef *openRef = LangVarRef::cons( internal,
- 0, pd->curLocalFrame->rootScope, openQual, String("open") );
+ 0, curLocalFrame->rootScope, openQual, String("open") );
CallArgVect *openArgs = new CallArgVect;
openArgs->append( new CallArg(pop) );
openArgs->append( new CallArg(modeExpr) );
@@ -319,7 +319,7 @@ void LoadInit::consParseStmt( StmtList *stmtList )
void LoadInit::consExportTree( StmtList *stmtList )
{
QualItemVect *qual = new QualItemVect;
- LangVarRef *varRef = LangVarRef::cons( internal, 0, pd->curLocalFrame->rootScope, qual, String("P") );
+ LangVarRef *varRef = LangVarRef::cons( internal, 0, curLocalFrame->rootScope, qual, String("P") );
LangExpr *expr = LangExpr::cons( LangTerm::cons( internal, LangTerm::VarRefType, varRef ) );
NamespaceQual *nspaceQual = NamespaceQual::cons( namespaceStack.top() );
@@ -332,7 +332,7 @@ void LoadInit::consExportTree( StmtList *stmtList )
void LoadInit::consExportError( StmtList *stmtList )
{
QualItemVect *qual = new QualItemVect;
- LangVarRef *varRef = LangVarRef::cons( internal, 0, pd->curLocalFrame->rootScope, qual, String("error") );
+ LangVarRef *varRef = LangVarRef::cons( internal, 0, curLocalFrame->rootScope, qual, String("error") );
LangExpr *expr = LangExpr::cons( LangTerm::cons( internal, LangTerm::VarRefType, varRef ) );
NamespaceQual *nspaceQual = NamespaceQual::cons( namespaceStack.top() );
diff --git a/src/parsedata.h b/src/parsedata.h
index 657dff69..ca416ceb 100644
--- a/src/parsedata.h
+++ b/src/parsedata.h
@@ -886,7 +886,6 @@ struct Compiler
ObjectDef *globalObjectDef;
VectorTypeIdMap vectorTypeIdMap;
- ObjectDef *curLocalFrame;
UniqueType *findUniqueType( int typeId );
UniqueType *findUniqueType( int typeId, LangEl *langEl );
diff --git a/src/parser.cc b/src/parser.cc
index e0f81ebc..3a1964d8 100644
--- a/src/parser.cc
+++ b/src/parser.cc
@@ -51,7 +51,7 @@ void BaseParser::init()
pd->rootLocalFrame = ObjectDef::cons( ObjectDef::FrameType,
"local", pd->nextObjectId++ );
- pd->curLocalFrame = pd->rootLocalFrame;
+ curLocalFrame = pd->rootLocalFrame;
/* Declarations of internal types. They must be declared now because we use
* them directly, rather than via type lookup. */
@@ -344,13 +344,13 @@ ObjectDef *BaseParser::blockOpen()
ObjectDef *frame = ObjectDef::cons( ObjectDef::FrameType,
"local", pd->nextObjectId++ );
- pd->curLocalFrame = frame;
+ curLocalFrame = frame;
return frame;
}
void BaseParser::blockClose()
{
- pd->curLocalFrame = pd->rootLocalFrame;
+ curLocalFrame = pd->rootLocalFrame;
}
void BaseParser::functionDef( StmtList *stmtList, ObjectDef *localFrame,
@@ -394,7 +394,7 @@ LangStmt *BaseParser::globalDef( ObjectField *objField, LangExpr *expr,
if ( expr != 0 ) {
LangVarRef *varRef = LangVarRef::cons( objField->loc,
- context, pd->curLocalFrame->curScope, objField->name );
+ context, curLocalFrame->curScope, objField->name );
stmt = LangStmt::cons( objField->loc,
assignType, varRef, expr );
@@ -572,7 +572,7 @@ LangExpr *BaseParser::parseCmd( const InputLoc &loc, bool stop, ObjectField *obj
LangVarRef *varRef = 0;
if ( objField != 0 ) {
varRef = LangVarRef::cons( objField->loc,
- context, pd->curLocalFrame->curScope, objField->name );
+ context, curLocalFrame->curScope, objField->name );
}
/* The typeref for the parser. */
@@ -588,14 +588,14 @@ LangExpr *BaseParser::parseCmd( const InputLoc &loc, bool stop, ObjectField *obj
/* Check for redeclaration. */
if ( objField != 0 ) {
- if ( pd->curLocalFrame->checkRedecl( objField->name ) != 0 ) {
+ if ( curLocalFrame->checkRedecl( objField->name ) != 0 ) {
error( objField->loc ) << "variable " << objField->name <<
" redeclared" << endp;
}
/* Insert it into the field map. */
objField->typeRef = typeRef;
- pd->curLocalFrame->insertField( objField->name, objField );
+ curLocalFrame->insertField( objField->name, objField );
}
return expr;
@@ -607,7 +607,7 @@ PatternItemList *BaseParser::consPatternEl( LangVarRef *varRef, PatternItemList
list->head->varRef = varRef;
if ( varRef != 0 ) {
- if ( pd->curLocalFrame->checkRedecl( varRef->name ) != 0 ) {
+ if ( curLocalFrame->checkRedecl( varRef->name ) != 0 ) {
error( varRef->loc ) << "variable " << varRef->name <<
" redeclared" << endp;
}
@@ -616,7 +616,7 @@ PatternItemList *BaseParser::consPatternEl( LangVarRef *varRef, PatternItemList
ObjectField *objField = ObjectField::cons( InputLoc(), typeRef, varRef->name );
/* Insert it into the field map. */
- pd->curLocalFrame->insertField( varRef->name, objField );
+ curLocalFrame->insertField( varRef->name, objField );
}
return list;
@@ -673,14 +673,14 @@ LangStmt *BaseParser::forScope( const InputLoc &loc, const String &data,
Context *context = contextStack.length() == 0 ? 0 : contextStack.top();
/* Check for redeclaration. */
- if ( pd->curLocalFrame->checkRedecl( data ) != 0 )
+ if ( curLocalFrame->checkRedecl( data ) != 0 )
error( loc ) << "variable " << data << " redeclared" << endp;
/* Note that we pass in a null type reference. This type is dependent on
* the result of the iter_call lookup since it must contain a reference to
* the iterator that is called. This lookup is done at compile time. */
ObjectField *iterField = ObjectField::cons( loc, (TypeRef*)0, data );
- pd->curLocalFrame->insertField( data, iterField );
+ curLocalFrame->insertField( data, iterField );
LangStmt *stmt = LangStmt::cons( loc, LangStmt::ForIterType,
iterField, typeRef, iterCall, stmtList, context, scope );
@@ -775,7 +775,7 @@ LangExpr *BaseParser::construct( const InputLoc &loc, ObjectField *objField,
LangVarRef *varRef = 0;
if ( objField != 0 ) {
varRef = LangVarRef::cons( objField->loc,
- context, pd->curLocalFrame->curScope, objField->name );
+ context, curLocalFrame->curScope, objField->name );
}
LangExpr *expr = LangExpr::cons( LangTerm::cons( loc, LangTerm::ConstructType,
@@ -783,14 +783,14 @@ LangExpr *BaseParser::construct( const InputLoc &loc, ObjectField *objField,
/* Check for redeclaration. */
if ( objField != 0 ) {
- if ( pd->curLocalFrame->checkRedecl( objField->name ) != 0 ) {
+ if ( curLocalFrame->checkRedecl( objField->name ) != 0 ) {
error( objField->loc ) << "variable " << objField->name <<
" redeclared" << endp;
}
/* Insert it into the field map. */
objField->typeRef = typeRef;
- pd->curLocalFrame->insertField( objField->name, objField );
+ curLocalFrame->insertField( objField->name, objField );
}
return expr;
@@ -818,19 +818,19 @@ LangStmt *BaseParser::varDef( ObjectField *objField,
Context *context = contextStack.length() == 0 ? 0 : contextStack.top();
/* Check for redeclaration. */
- if ( pd->curLocalFrame->checkRedecl( objField->name ) != 0 ) {
+ if ( curLocalFrame->checkRedecl( objField->name ) != 0 ) {
error( objField->loc ) << "variable " << objField->name <<
" redeclared" << endp;
}
/* Insert it into the field map. */
- pd->curLocalFrame->insertField( objField->name, objField );
+ curLocalFrame->insertField( objField->name, objField );
//cout << "var def " << $1->objField->name << endl;
if ( expr != 0 ) {
LangVarRef *varRef = LangVarRef::cons( objField->loc,
- context, pd->curLocalFrame->curScope, objField->name );
+ context, curLocalFrame->curScope, objField->name );
stmt = LangStmt::cons( objField->loc, assignType, varRef, expr );
}
@@ -855,7 +855,7 @@ LangStmt *BaseParser::exportStmt( ObjectField *objField, LangStmt::Type assignTy
if ( expr != 0 ) {
LangVarRef *varRef = LangVarRef::cons( objField->loc,
- 0, pd->curLocalFrame->curScope, objField->name );
+ 0, curLocalFrame->curScope, objField->name );
stmt = LangStmt::cons( objField->loc, assignType, varRef, expr );
}
@@ -965,10 +965,10 @@ void BaseParser::precedenceStmt( PredType predType, PredDeclList *predDeclList )
void BaseParser::pushScope()
{
- pd->curLocalFrame->pushScope();
+ curLocalFrame->pushScope();
}
void BaseParser::popScope()
{
- pd->curLocalFrame->popScope();
+ curLocalFrame->popScope();
}
diff --git a/src/parser.h b/src/parser.h
index dbe4bbc9..156a0791 100644
--- a/src/parser.h
+++ b/src/parser.h
@@ -42,6 +42,7 @@ struct BaseParser
RegionSetVect regionStack;
NamespaceVect namespaceStack;
ContextStack contextStack;
+ ObjectDef *curLocalFrame;
bool enterRl;