diff options
author | Adrian Thurston <thurston@complang.org> | 2008-11-07 16:53:27 +0000 |
---|---|---|
committer | Adrian Thurston <thurston@complang.org> | 2008-11-07 16:53:27 +0000 |
commit | 1624689f25b16426d150f65d1f7d47bf9d5629b8 (patch) | |
tree | 7130e3209bd0af686fd2a1fd9d396bcd05a8b8c2 | |
parent | 89fbf86288761cf9464aefb78705f8a16cbb967f (diff) | |
download | colm-1624689f25b16426d150f65d1f7d47bf9d5629b8.tar.gz |
function movement.
-rw-r--r-- | colm/fsmrun.cpp | 63 |
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 |