diff options
author | Adrian Thurston <thurston@complang.org> | 2012-08-27 16:36:20 -0400 |
---|---|---|
committer | Adrian Thurston <thurston@complang.org> | 2012-08-27 16:36:20 -0400 |
commit | a137cd2516cfe97f220fb38ac84caa0e64bbf923 (patch) | |
tree | ba370993ec4046660407f024bd8cfb9ba05dcae2 /colm/compiler.cc | |
parent | 464019d0a6635ff89f16f0c59517657db146f3ad (diff) | |
download | colm-a137cd2516cfe97f220fb38ac84caa0e64bbf923.tar.gz |
can now grow and shrink the stack, still need to mark out contiguous blocks
Diffstat (limited to 'colm/compiler.cc')
-rw-r--r-- | colm/compiler.cc | 8 |
1 files changed, 4 insertions, 4 deletions
diff --git a/colm/compiler.cc b/colm/compiler.cc index bda0afa1..27114d8f 100644 --- a/colm/compiler.cc +++ b/colm/compiler.cc @@ -1287,8 +1287,7 @@ void Compiler::parsePatterns() /* Turn off context-dependent parsing. */ prg->ctxDepParsing = 0; - Tree **vm_stack = stackAlloc(); - Tree **root = &vm_stack[VM_STACK_SIZE]; + Tree **sp = prg->stackRoot; for ( ConsList::Iter repl = replList; repl.lte(); repl++ ) { //cerr << "parsing replacement at " << @@ -1309,7 +1308,7 @@ void Compiler::parsePatterns() setEof( in ); newToken( prg, repl->pdaRun, fsmRun ); - long pcr = parseLoop( prg, root, repl->pdaRun, fsmRun, in, PcrStart ); + long pcr = parseLoop( prg, sp, repl->pdaRun, fsmRun, in, PcrStart ); assert( pcr == PcrDone ); if ( repl->pdaRun->parseError ) cout << "parse error" << endp; @@ -1334,13 +1333,14 @@ void Compiler::parsePatterns() setEof( in ); newToken( prg, pat->pdaRun, fsmRun ); - long pcr = parseLoop( prg, root, pat->pdaRun, fsmRun, in, PcrStart ); + long pcr = parseLoop( prg, sp, pat->pdaRun, fsmRun, in, PcrStart ); assert( pcr == PcrDone ); if ( pat->pdaRun->parseError ) cout << "parse error" << endp; } fillInPatterns( prg ); + colmDeleteProgram( prg ); } void Compiler::collectParserEls( BstSet<LangEl*> &parserEls ) |