summaryrefslogtreecommitdiff
path: root/colm/compiler.cc
diff options
context:
space:
mode:
authorAdrian Thurston <thurston@complang.org>2012-08-27 16:36:20 -0400
committerAdrian Thurston <thurston@complang.org>2012-08-27 16:36:20 -0400
commita137cd2516cfe97f220fb38ac84caa0e64bbf923 (patch)
treeba370993ec4046660407f024bd8cfb9ba05dcae2 /colm/compiler.cc
parent464019d0a6635ff89f16f0c59517657db146f3ad (diff)
downloadcolm-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.cc8
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 )