diff options
author | Adrian Thurston <thurston@complang.org> | 2009-02-22 02:25:41 +0000 |
---|---|---|
committer | Adrian Thurston <thurston@complang.org> | 2009-02-22 02:25:41 +0000 |
commit | 3765c038c21e22ad8901a657c9fa0537fd796e70 (patch) | |
tree | 8f951b4f9a2da102397bb900464cfe41bc5523aa | |
parent | 296c3de188a7a42649b5a821348e08b4561718dd (diff) | |
download | colm-3765c038c21e22ad8901a657c9fa0537fd796e70.tar.gz |
Fix to last commit.
-rw-r--r-- | colm/parsedata.h | 2 | ||||
-rw-r--r-- | colm/pdabuild.cpp | 10 |
2 files changed, 7 insertions, 5 deletions
diff --git a/colm/parsedata.h b/colm/parsedata.h index 416dfa4a..a2331651 100644 --- a/colm/parsedata.h +++ b/colm/parsedata.h @@ -519,7 +519,7 @@ struct ParseData void analyzeGraph( FsmGraph *graph ); void resolvePrecedence( PdaGraph *pdaGraph ); KlangEl *predOf( PdaTrans *trans, long action ); - bool precedenceSwap( KlangEl *l1, KlangEl *l2 ); + bool precedenceSwap( long action1, long action2, KlangEl *l1, KlangEl *l2 ); void initKeyOps(); diff --git a/colm/pdabuild.cpp b/colm/pdabuild.cpp index 7d424e2f..576d6bf6 100644 --- a/colm/pdabuild.cpp +++ b/colm/pdabuild.cpp @@ -919,15 +919,16 @@ KlangEl *ParseData::predOf( PdaTrans *trans, long action ) return lel; } -bool ParseData::precedenceSwap( KlangEl *l1, KlangEl *l2 ) + +bool ParseData::precedenceSwap( long action1, long action2, KlangEl *l1, KlangEl *l2 ) { bool swap = false; if ( l2->predValue > l1->predValue ) swap = true; else if ( l1->predValue == l2->predValue ) { - if ( l1->predType == PredLeft && trans->actions[i] == SHIFT_CODE ) + if ( l1->predType == PredLeft && action1 == SHIFT_CODE ) swap = true; - else if ( l1->predType == PredRight && trans->actions[j] == SHIFT_CODE ) + else if ( l1->predType == PredRight && action2 == SHIFT_CODE ) swap = true; } return swap; @@ -952,7 +953,8 @@ again: if ( lj != 0 && lj->predValue != PredNone ) { /* Conflict to check. */ - bool swap = precedenceSwap( li, lj ); + bool swap = precedenceSwap( trans->actions[i], + trans->actions[j], li, lj ); if ( swap ) { long t = trans->actions[i]; |