public VarAddress locate(String name, int fromUpstair, boolean force, int line, int column) { // local var/const for (; fromUpstair < stairStack.size(); fromUpstair++) { VarAddress address = stairStack.peek(fromUpstair).locate(name); if (address != null) { return address; } } // global var/const final GlobalManager globalMgr = this.globalManager; final int index = globalMgr.getGlobalIndex(name); if (index >= 0) { return global(index); } if (globalMgr.hasConst(name)) { return constValue(globalMgr.getConst(name)); } // failed if (force) { throw new ParseException("Can't locate vars: ".concat(name), line, column); } // assign at root return context(root.assignVar(name, line, column)); }
public void regist(GlobalManager manager) { manager.setConst(this.name, new LocalMethodDeclare()); }