diff options
author | Adrian Thurston <thurston@colm.net> | 2018-03-09 22:00:13 -0500 |
---|---|---|
committer | Adrian Thurston <thurston@colm.net> | 2018-03-09 22:05:02 -0500 |
commit | 2efdd395cd3b1cee4ee6cb00ec31c4d3e06df64c (patch) | |
tree | 0f7f826cf910daceb607e617fb0164d359ea14d9 /src/compiler.h | |
parent | 45c895e7cf7c1bde0aa5b4d863c3c6c088604c70 (diff) | |
download | colm-2efdd395cd3b1cee4ee6cb00ec31c4d3e06df64c.tar.gz |
allow switching on production numbers
Added a form to case statements that accepts a production name instead of a
pattern.
Diffstat (limited to 'src/compiler.h')
-rw-r--r-- | src/compiler.h | 9 |
1 files changed, 6 insertions, 3 deletions
diff --git a/src/compiler.h b/src/compiler.h index b7b4e61a..cf23bc9c 100644 --- a/src/compiler.h +++ b/src/compiler.h @@ -152,7 +152,8 @@ struct Production : prodName(0), prodElList(0), prodCommit(false), redBlock(0), prodId(0), prodNum(0), fsm(0), fsmLength(0), uniqueEmptyLeader(0), - isLeftRec(false), localFrame(0), lhsField(0), predOf(0) {} + isLeftRec(false), localFrame(0), lhsField(0), predOf(0) + {} static Production* cons( const InputLoc &loc, LangEl *prodName, ProdElList *prodElList, String name, bool prodCommit, CodeBlock *redBlock, int prodId, int prodNum ) @@ -160,7 +161,7 @@ struct Production Production *p = new Production; p->loc = loc; p->prodName = prodName; - p->name = name; + p->_name = name; p->prodElList = prodElList; p->prodCommit = prodCommit; p->redBlock = redBlock; @@ -172,7 +173,7 @@ struct Production InputLoc loc; LangEl *prodName; ProdElList *prodElList; - String name; + String _name; bool prodCommit; CodeBlock *redBlock; @@ -679,6 +680,8 @@ struct Compiler void findReductionActionProds(); void resolveReducers(); + Production *findProductionByLabel( LangEl *langEl, String label ); + void declarePass(); void resolvePass(); |