summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAdrian Thurston <thurston@complang.org>2008-11-07 16:53:27 +0000
committerAdrian Thurston <thurston@complang.org>2008-11-07 16:53:27 +0000
commit1624689f25b16426d150f65d1f7d47bf9d5629b8 (patch)
tree7130e3209bd0af686fd2a1fd9d396bcd05a8b8c2
parent89fbf86288761cf9464aefb78705f8a16cbb967f (diff)
downloadcolm-1624689f25b16426d150f65d1f7d47bf9d5629b8.tar.gz
function movement.
-rw-r--r--colm/fsmrun.cpp63
1 files changed, 32 insertions, 31 deletions
diff --git a/colm/fsmrun.cpp b/colm/fsmrun.cpp
index de85591d..ef45022b 100644
--- a/colm/fsmrun.cpp
+++ b/colm/fsmrun.cpp
@@ -341,6 +341,38 @@ void set_AF_GROUP_MEM( PdaRun *parser )
}
}
+void send_queued_tokens( FsmRun *fsmRun, PdaRun *parser )
+{
+ LangElInfo *lelInfo = fsmRun->prg->rtd->lelInfo;
+
+ while ( parser->queue != 0 ) {
+ /* Pull an item to send off the queue. */
+ Kid *send = parser->queue;
+ parser->queue = parser->queue->next;
+
+ /* Must clear next, since the parsing algorithm uses it. */
+ send->next = 0;
+ if ( lelInfo[send->tree->id].ignore ) {
+ #ifdef COLM_LOG_PARSE
+ cerr << "ignoring queued item: " <<
+ parser->tables->gbl->lelInfo[send->tree->id].name << endl;
+ #endif
+
+ parser->ignore( send->tree );
+ fsmRun->prg->kidPool.free( send );
+ }
+ else {
+ #ifdef COLM_LOG_PARSE
+ cerr << "sending queue item: " <<
+ parser->tables->gbl->lelInfo[send->tree->id].name << endl;
+ #endif
+
+ send_handle_error( fsmRun, parser, send );
+ }
+ }
+}
+
+
void FsmRun::sendEOF( )
{
#ifdef COLM_LOG_PARSE
@@ -387,37 +419,6 @@ void FsmRun::sendEOF( )
cs = tables->entryByRegion[region];
}
-void send_queued_tokens( FsmRun *fsmRun, PdaRun *parser )
-{
- LangElInfo *lelInfo = fsmRun->prg->rtd->lelInfo;
-
- while ( parser->queue != 0 ) {
- /* Pull an item to send off the queue. */
- Kid *send = parser->queue;
- parser->queue = parser->queue->next;
-
- /* Must clear next, since the parsing algorithm uses it. */
- send->next = 0;
- if ( lelInfo[send->tree->id].ignore ) {
- #ifdef COLM_LOG_PARSE
- cerr << "ignoring queued item: " <<
- parser->tables->gbl->lelInfo[send->tree->id].name << endl;
- #endif
-
- parser->ignore( send->tree );
- fsmRun->prg->kidPool.free( send );
- }
- else {
- #ifdef COLM_LOG_PARSE
- cerr << "sending queue item: " <<
- parser->tables->gbl->lelInfo[send->tree->id].name << endl;
- #endif
-
- send_handle_error( fsmRun, parser, send );
- }
- }
-}
-
void FsmRun::sendToken( long id )
{
#ifdef COLM_LOG_PARSE