diff options
Diffstat (limited to 'chapter22/src/main/java/com')
| -rw-r--r-- | chapter22/src/main/java/com/seaofnodes/simple/Parser.java | 7 |
1 files changed, 4 insertions, 3 deletions
diff --git a/chapter22/src/main/java/com/seaofnodes/simple/Parser.java b/chapter22/src/main/java/com/seaofnodes/simple/Parser.java index 6c3c3a9b..6ceccf0a 100644 --- a/chapter22/src/main/java/com/seaofnodes/simple/Parser.java +++ b/chapter22/src/main/java/com/seaofnodes/simple/Parser.java @@ -131,6 +131,8 @@ public class Parser { private <N extends Node> N ctrl(N n) { return _scope.ctrl(n); } public void parse() { + // Graph callbacks during scope setup need a source position. + _lexer = new Lexer(com.seaofnodes.simple.sys.SYS); _scope.define(ScopeNode.CTRL, Type.CONTROL , false, null, _lexer); _scope.define(ScopeNode.MEM0, TypeMem.BOT , false, null, _lexer); @@ -140,7 +142,6 @@ public class Parser { _scope.mem(con(TypeMem.BOT)); // Parse the sys import - _lexer = new Lexer(com.seaofnodes.simple.sys.SYS); while( !_lexer.isEOF() ) { parseStatement(); _lexer.skipWhiteSpace(); @@ -1309,7 +1310,7 @@ public class Parser { mem(after.peephole()); out.unkeep(); nnn.unkeep(); - prior.unkeep(); + prior.unkill(); for( int i=0; i<fs.length; i++ ) { Node val = init.get(idx+i); if( val._type != val._type.makeZero() ) { @@ -1354,7 +1355,7 @@ public class Parser { st.setDef(0,ctrl); st = st.peephole(); mem(new MemMergeNode(prior,alias,st).peephole()); - prior.unkeep(); + prior.unkill(); } /** |
