summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAdrian Thurston <thurston@complang.org>2009-02-22 02:25:41 +0000
committerAdrian Thurston <thurston@complang.org>2009-02-22 02:25:41 +0000
commit3765c038c21e22ad8901a657c9fa0537fd796e70 (patch)
tree8f951b4f9a2da102397bb900464cfe41bc5523aa
parent296c3de188a7a42649b5a821348e08b4561718dd (diff)
downloadcolm-3765c038c21e22ad8901a657c9fa0537fd796e70.tar.gz
Fix to last commit.
-rw-r--r--colm/parsedata.h2
-rw-r--r--colm/pdabuild.cpp10
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];