diff options
Diffstat (limited to 'colm')
-rw-r--r-- | colm/lmparse.kh | 2 | ||||
-rw-r--r-- | colm/lmparse.kl | 14 |
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 ); |