summaryrefslogtreecommitdiff
path: root/colm
diff options
context:
space:
mode:
authorAdrian Thurston <thurston@complang.org>2013-02-23 09:18:20 -0500
committerAdrian Thurston <thurston@complang.org>2013-02-23 09:18:20 -0500
commit666ed6d54171b326ed65f3a6ad1bedab12e0db4c (patch)
treed857cd19d586d0b267d60236652f426f06cc03e5 /colm
parent85824e2a36a4c5c2e41fa40e16462deb92ba8635 (diff)
downloadcolm-666ed6d54171b326ed65f3a6ad1bedab12e0db4c.tar.gz
minor parser cleanup
Want to eliminate parsing member vars from ColmParser. Working towards that.
Diffstat (limited to 'colm')
-rw-r--r--colm/lmparse.kh2
-rw-r--r--colm/lmparse.kl14
2 files changed, 11 insertions, 5 deletions
diff --git a/colm/lmparse.kh b/colm/lmparse.kh
index 4bc7173b..14ff9960 100644
--- a/colm/lmparse.kh
+++ b/colm/lmparse.kh
@@ -125,7 +125,7 @@ struct ColmParser
void iterDef( StmtList *stmtList, ObjectDef *localFrame,
ParameterList *paramList, const String &name );
LangStmt *globalDef( ObjectField *objField, LangExpr *expr, LangStmt::Type assignType );
- void cflDef( LelDefList *defList, bool reduceFirst );
+ void cflDef( const String &name, LelDefList *defList, bool reduceFirst );
ReOrBlock *lexRegularExprData( ReOrBlock *reOrBlock, ReOrItem *reOrItem );
int lexFactorRepNum( const InputLoc &loc, const String &data );
diff --git a/colm/lmparse.kl b/colm/lmparse.kl
index 0c43c14f..110077bd 100644
--- a/colm/lmparse.kl
+++ b/colm/lmparse.kl
@@ -389,12 +389,12 @@ LangStmt *ColmParser::globalDef( ObjectField *objField, LangExpr *expr,
return stmt;
}
-void ColmParser::cflDef( LelDefList *defList, bool reduceFirst )
+void ColmParser::cflDef( const String &name, LelDefList *defList, bool reduceFirst )
{
Namespace *nspace = namespaceStack.top();
NtDef *ntDef = NtDef::cons(
- curDefineId,
+ name,
nspace,
defList,
curObjectDef,
@@ -1112,12 +1112,18 @@ typedef:
cfl_def:
cfl_def_head obj_var_list opt_reduce_first cfl_prod_list
final {
- cflDef( $4->defList, $3->reduceFirst );
+ cflDef( $1->name, $4->defList, $3->reduceFirst );
};
+nonterm class cfl_def_head
+{
+ String name;
+};
+
cfl_def_head: KW_Def TK_Word
final {
curDefineId = $2->data;
+ $$->name = $2->data;
};
nonterm cfl_prod_list
@@ -3068,7 +3074,7 @@ void ColmParser::go()
prodAppend( defList, def );
/* Make. */
- cflDef( defList, false );
+ cflDef( curDefineId, defList, false );
parseInput( stmtList );