summaryrefslogtreecommitdiff
path: root/src/compiler.h
diff options
context:
space:
mode:
authorAdrian Thurston <thurston@colm.net>2018-03-09 22:00:13 -0500
committerAdrian Thurston <thurston@colm.net>2018-03-09 22:05:02 -0500
commit2efdd395cd3b1cee4ee6cb00ec31c4d3e06df64c (patch)
tree0f7f826cf910daceb607e617fb0164d359ea14d9 /src/compiler.h
parent45c895e7cf7c1bde0aa5b4d863c3c6c088604c70 (diff)
downloadcolm-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.h9
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();