Search in sources :

Example 1 with IRuntimeDebugExec

use of priv.bajdcc.LALR1.grammar.runtime.IRuntimeDebugExec in project jMiniLang by bajdcc.

the class RuntimeMachine method opCallExtern.

@Override
public void opCallExtern(boolean invoke) throws Exception {
    int idx = loadInt();
    String name = "";
    if (invoke) {
        RuntimeStack itStack = stack;
        RuntimeObject obj = null;
        while (obj == null && itStack != null) {
            obj = itStack.findVariable(pageName, idx);
            itStack = itStack.prev;
        }
        if (obj == null) {
            err(RuntimeError.WRONG_LOAD_EXTERN, String.valueOf(idx));
        }
        if (obj.getType() == RuntimeObjectType.kFunc) {
            RuntimeFuncObject func = (RuntimeFuncObject) obj.getObj();
            Map<Integer, RuntimeObject> env = func.getEnv();
            if (env != null) {
                for (Entry<Integer, RuntimeObject> entry : env.entrySet()) {
                    int id = entry.getKey();
                    RuntimeObject o = entry.getValue();
                    if (o != null) {
                        if (o.getSymbol() == null)
                            o.setSymbol(currentPage.getData().get(id));
                        o.setReadonly(false);
                    }
                    stack.storeClosure(id, o);
                }
                stack.pushData(obj);
            }
            int address = func.getAddr();
            stack.opCall(address, func.getPage(), stack.reg.execId, pageName, pageMap.get(func.getPage()).getInfo().getFuncNameByAddress(address));
            stack.reg.execId = address;
            stack.reg.pageId = func.getPage();
            switchPage();
            pop();
            return;
        } else if (obj.getType() == RuntimeObjectType.kString) {
            name = obj.getObj().toString();
        } else {
            err(RuntimeError.WRONG_LOAD_EXTERN, obj.toString());
        }
    } else {
        RuntimeObject obj = fetchFromGlobalData(idx);
        name = obj.getObj().toString();
    }
    List<RuntimeCodePage> refers = pageRefer.get(pageName);
    for (RuntimeCodePage page : refers) {
        int address = page.getInfo().getAddressOfExportFunc(name);
        if (address != -1) {
            String jmpPage = page.getInfo().getDataMap().get("name").toString();
            stack.opCall(address, jmpPage, stack.reg.execId, stack.reg.pageId, name);
            stack.reg.execId = address;
            stack.reg.pageId = jmpPage;
            switchPage();
            return;
        }
    }
    for (RuntimeCodePage page : refers) {
        IRuntimeDebugExec exec = page.getInfo().getExecCallByName(name);
        if (exec != null) {
            int argsCount = stack.getFuncArgsCount();
            RuntimeObjectType[] types = exec.getArgsType();
            if ((types == null && argsCount != 0) || (types != null && types.length != argsCount)) {
                err(RuntimeError.WRONG_ARGCOUNT, name + " " + String.valueOf(argsCount));
            }
            List<RuntimeObject> args = new ArrayList<>();
            for (int i = 0; i < argsCount; i++) {
                RuntimeObjectType type = types[i];
                RuntimeObject objParam = stack.loadFuncArgs(i);
                if (type != RuntimeObjectType.kObject) {
                    RuntimeObjectType objType = objParam.getType();
                    if (objType != type) {
                        Token token = Token.createFromObject(objParam.getObj());
                        TokenType objTokenType = RuntimeObject.toTokenType(type);
                        if (objTokenType == TokenType.ERROR) {
                            err(RuntimeError.WRONG_ARGTYPE, name + " " + objTokenType.getName());
                        }
                        if (!TokenTools.promote(objTokenType, token)) {
                            err(RuntimeError.UNDEFINED_CONVERT, name + " " + token.toString() + " " + objTokenType.getName());
                        } else {
                            objParam.setObj(token.object);
                        }
                    }
                }
                args.add(objParam);
            }
            stack.opCall(stack.reg.execId, stack.reg.pageId, stack.reg.execId, stack.reg.pageId, name);
            RuntimeObject retVal = exec.ExternalProcCall(args, this);
            if (retVal == null) {
                store(new RuntimeObject(null));
            } else {
                store(retVal);
            }
            opReturn();
            return;
        }
    }
    err(RuntimeError.WRONG_LOAD_EXTERN, name);
}
Also used : Token(priv.bajdcc.util.lexer.token.Token) BigInteger(java.math.BigInteger) TokenType(priv.bajdcc.util.lexer.token.TokenType) RuntimeFuncObject(priv.bajdcc.LALR1.grammar.runtime.data.RuntimeFuncObject)

Example 2 with IRuntimeDebugExec

use of priv.bajdcc.LALR1.grammar.runtime.IRuntimeDebugExec in project jMiniLang by bajdcc.

the class TestGrammar3 method main.

public static void main(String[] args) {
    try {
        String a = "\n" + "var g_a = func ~(x, y) { return x + y;};\n" + "export \"g_a\";";
        String b = "import \"test1\";\n" + "var d = call g_a(1,2);\n" + "var c = g_gk;\n" + "call g_print(c);\n" + "var t = call g_print(c);";
        /*
			 * BufferedReader br = new BufferedReader(new
			 * FileReader("E:/http.c")); String line = ""; StringBuffer sb = new
			 * StringBuffer(); while ((line = br.readLine()) != null) {
			 * sb.append(line + System.lineSeparator()); }
			 * br.close();
			 */
        Grammar grammar = new Grammar(a);
        System.out.println(grammar.toString());
        RuntimeCodePage page = grammar.getCodePage();
        System.out.println(page.toString());
        RuntimeMachine machine = new RuntimeMachine();
        machine.run("test1", page);
        Grammar grammar2 = new Grammar(b);
        System.out.println(grammar2.toString());
        RuntimeCodePage page2 = grammar2.getCodePage();
        page2.getInfo().addExternalValue("g_gk", () -> new RuntimeObject("abc"));
        page2.getInfo().addExternalFunc("g_print", new IRuntimeDebugExec() {

            @Override
            public String getDoc() {
                return "Print";
            }

            @Override
            public RuntimeObjectType[] getArgsType() {
                return new RuntimeObjectType[] { RuntimeObjectType.kObject };
            }

            @Override
            public RuntimeObject ExternalProcCall(List<RuntimeObject> args, IRuntimeStatus status) {
                System.out.println(args.get(0).getObj());
                return null;
            }
        });
        System.out.println(page2.toString());
        machine.run("test2", page2);
    // FileWriter fw = new FileWriter("E:/testgrammar.txt");
    // fw.append(grammar.toString());
    // fw.close();
    } catch (RegexException e) {
        System.err.println(e.getPosition() + "," + e.getMessage());
        e.printStackTrace();
    } catch (SyntaxException e) {
        System.err.println(e.getPosition() + "," + e.getMessage() + " " + e.getInfo());
        e.printStackTrace();
    // } catch (IOException e) {
    // System.err.println(e.getMessage());
    // e.printStackTrace();
    } catch (RuntimeException e) {
        System.err.println(e.getPosition() + ": " + e.getInfo());
        e.printStackTrace();
    // } catch (IOException e) {
    // System.err.println(e.getMessage());
    // e.printStackTrace();
    } catch (Exception e) {
        System.err.println(e.getMessage());
        e.printStackTrace();
    // } catch (IOException e) {
    // System.err.println(e.getMessage());
    // e.printStackTrace();
    }
}
Also used : RuntimeMachine(priv.bajdcc.LALR1.grammar.runtime.RuntimeMachine) Grammar(priv.bajdcc.LALR1.grammar.Grammar) RuntimeCodePage(priv.bajdcc.LALR1.grammar.runtime.RuntimeCodePage) IRuntimeStatus(priv.bajdcc.LALR1.grammar.runtime.IRuntimeStatus) SyntaxException(priv.bajdcc.LALR1.syntax.handler.SyntaxException) RuntimeException(priv.bajdcc.LALR1.grammar.runtime.RuntimeException) RegexException(priv.bajdcc.util.lexer.error.RegexException) RuntimeException(priv.bajdcc.LALR1.grammar.runtime.RuntimeException) RuntimeObject(priv.bajdcc.LALR1.grammar.runtime.RuntimeObject) SyntaxException(priv.bajdcc.LALR1.syntax.handler.SyntaxException) RegexException(priv.bajdcc.util.lexer.error.RegexException) IRuntimeDebugExec(priv.bajdcc.LALR1.grammar.runtime.IRuntimeDebugExec)

Example 3 with IRuntimeDebugExec

use of priv.bajdcc.LALR1.grammar.runtime.IRuntimeDebugExec in project jMiniLang by bajdcc.

the class ModuleNet method buildRemoteMethods.

private void buildRemoteMethods(IRuntimeDebugInfo info) {
    info.addExternalFunc("g_net_get", new IRuntimeDebugExec() {

        @Override
        public String getDoc() {
            return "HTTP GET";
        }

        @Override
        public RuntimeObjectType[] getArgsType() {
            return new RuntimeObjectType[] { RuntimeObjectType.kString };
        }

        @Override
        public RuntimeObject ExternalProcCall(List<RuntimeObject> args, IRuntimeStatus status) {
            String text = "";
            String txt = String.valueOf(args.get(0).getObj());
            logger.debug("Request url: " + txt);
            try {
                URL url = new URL(txt);
                // 打开连接
                URLConnection urlConnection = url.openConnection();
                // 获取输入流
                BufferedReader br = new BufferedReader(new InputStreamReader(urlConnection.getInputStream(), "utf-8"));
                String line = null;
                StringBuilder sb = new StringBuilder();
                while ((line = br.readLine()) != null) {
                    sb.append(line).append("\n");
                }
                text = sb.toString();
                br.close();
            } catch (Exception e) {
                e.printStackTrace();
            }
            return new RuntimeObject(text);
        }
    });
    info.addExternalFunc("g_net_get_json", new IRuntimeDebugExec() {

        @Override
        public String getDoc() {
            return "HTTP GET - json";
        }

        @Override
        public RuntimeObjectType[] getArgsType() {
            return new RuntimeObjectType[] { RuntimeObjectType.kString };
        }

        @Override
        public RuntimeObject ExternalProcCall(List<RuntimeObject> args, IRuntimeStatus status) {
            String text = "";
            String txt = String.valueOf(args.get(0).getObj());
            logger.debug("Request url(json): " + txt);
            try {
                URL url = new URL(txt);
                // 打开连接
                URLConnection urlConnection = url.openConnection();
                // 获取输入流
                BufferedReader br = new BufferedReader(new InputStreamReader(urlConnection.getInputStream(), "utf-8"));
                String line = null;
                StringBuilder sb = new StringBuilder();
                while ((line = br.readLine()) != null) {
                    sb.append(line).append("\n");
                }
                text = sb.toString();
                br.close();
            } catch (Exception e) {
                e.printStackTrace();
            }
            return parseJson(text);
        }
    });
    // -----------------------------------
    // server
    info.addExternalFunc("g_net_msg_create_server_internal", new IRuntimeDebugExec() {

        @Override
        public String getDoc() {
            return "MSG SERVER";
        }

        @Override
        public RuntimeObjectType[] getArgsType() {
            return new RuntimeObjectType[] { RuntimeObjectType.kInt };
        }

        @Override
        public RuntimeObject ExternalProcCall(List<RuntimeObject> args, IRuntimeStatus status) {
            if (getServer() != null || getClient() != null)
                return new RuntimeObject(false);
            int port = ((BigInteger) args.get(0).getObj()).intValue();
            setServer(new ModuleNetServer(port));
            getServer().start();
            return new RuntimeObject(true);
        }
    });
    info.addExternalFunc("g_net_msg_shutdown_server", new IRuntimeDebugExec() {

        @Override
        public String getDoc() {
            return "MSG SERVER SHUTDOWN";
        }

        @Override
        public RuntimeObjectType[] getArgsType() {
            return null;
        }

        @Override
        public RuntimeObject ExternalProcCall(List<RuntimeObject> args, IRuntimeStatus status) {
            if (getServer() == null)
                return new RuntimeObject(false);
            getServer().exit();
            return new RuntimeObject(true);
        }
    });
    info.addExternalFunc("g_net_msg_get_server_status", new IRuntimeDebugExec() {

        @Override
        public String getDoc() {
            return "MSG SERVER GET STATUS";
        }

        @Override
        public RuntimeObjectType[] getArgsType() {
            return null;
        }

        @Override
        public RuntimeObject ExternalProcCall(List<RuntimeObject> args, IRuntimeStatus status) {
            if (getServer() != null) {
                ModuleNetServer.Status s = getServer().getStatus();
                if (s == ModuleNetServer.Status.ERROR) {
                    lastError = getServer().getError();
                    setServer(null);
                }
                status.getService().getProcessService().sleep(status.getPid(), MSG_QUERY_TIME);
                return new RuntimeObject(BigInteger.valueOf(s.ordinal()));
            }
            return new RuntimeObject(BigInteger.valueOf(ModuleNetServer.Status.NULL.ordinal()));
        }
    });
    // server
    // -----------------------------------
    // client
    info.addExternalFunc("g_net_msg_create_client_internal", new IRuntimeDebugExec() {

        @Override
        public String getDoc() {
            return "MSG CLIENT";
        }

        @Override
        public RuntimeObjectType[] getArgsType() {
            return new RuntimeObjectType[] { RuntimeObjectType.kString };
        }

        @Override
        public RuntimeObject ExternalProcCall(List<RuntimeObject> args, IRuntimeStatus status) {
            if (getServer() != null || getClient() != null)
                return new RuntimeObject(false);
            String addr = String.valueOf(args.get(0).getObj());
            setClient(new ModuleNetClient(addr));
            getClient().start();
            return new RuntimeObject(true);
        }
    });
    info.addExternalFunc("g_net_msg_shutdown_client", new IRuntimeDebugExec() {

        @Override
        public String getDoc() {
            return "MSG CLIENT SHUTDOWN";
        }

        @Override
        public RuntimeObjectType[] getArgsType() {
            return null;
        }

        @Override
        public RuntimeObject ExternalProcCall(List<RuntimeObject> args, IRuntimeStatus status) {
            if (getClient() == null)
                return new RuntimeObject(false);
            getClient().exit();
            return new RuntimeObject(true);
        }
    });
    info.addExternalFunc("g_net_msg_get_client_status", new IRuntimeDebugExec() {

        @Override
        public String getDoc() {
            return "MSG CLIENT GET STATUS";
        }

        @Override
        public RuntimeObjectType[] getArgsType() {
            return null;
        }

        @Override
        public RuntimeObject ExternalProcCall(List<RuntimeObject> args, IRuntimeStatus status) {
            if (getClient() != null) {
                ModuleNetClient.Status s = getClient().getStatus();
                if (s == ModuleNetClient.Status.ERROR) {
                    lastError = getClient().getError();
                    setClient(null);
                }
                status.getService().getProcessService().sleep(status.getPid(), MSG_QUERY_TIME);
                return new RuntimeObject(BigInteger.valueOf(s.ordinal()));
            }
            return new RuntimeObject(BigInteger.valueOf(ModuleNetClient.Status.NULL.ordinal()));
        }
    });
    info.addExternalFunc("g_net_msg_client_send", new IRuntimeDebugExec() {

        @Override
        public String getDoc() {
            return "MSG CLIENT SEND";
        }

        @Override
        public RuntimeObjectType[] getArgsType() {
            return new RuntimeObjectType[] { RuntimeObjectType.kString };
        }

        @Override
        public RuntimeObject ExternalProcCall(List<RuntimeObject> args, IRuntimeStatus status) {
            if (getClient() != null) {
                ModuleNetClient.Status s = getClient().getStatus();
                if (s == ModuleNetClient.Status.RUNNING) {
                    status.getService().getProcessService().sleep(status.getPid(), MSG_SEND_TIME);
                    getClient().send(String.valueOf(args.get(0).getObj()));
                    return new RuntimeObject(true);
                }
            }
            return new RuntimeObject(false);
        }
    });
    info.addExternalFunc("g_net_msg_client_send_with_origin", new IRuntimeDebugExec() {

        @Override
        public String getDoc() {
            return "MSG CLIENT SEND(ORIGIN)";
        }

        @Override
        public RuntimeObjectType[] getArgsType() {
            return new RuntimeObjectType[] { RuntimeObjectType.kString, RuntimeObjectType.kString };
        }

        @Override
        public RuntimeObject ExternalProcCall(List<RuntimeObject> args, IRuntimeStatus status) {
            if (getClient() != null) {
                ModuleNetClient.Status s = getClient().getStatus();
                if (s == ModuleNetClient.Status.RUNNING) {
                    status.getService().getProcessService().sleep(status.getPid(), MSG_SEND_TIME);
                    getClient().send(String.valueOf(args.get(0).getObj()), String.valueOf(args.get(1).getObj()));
                    return new RuntimeObject(true);
                }
            }
            return new RuntimeObject(false);
        }
    });
    info.addExternalFunc("g_net_msg_server_send", new IRuntimeDebugExec() {

        @Override
        public String getDoc() {
            return "MSG SERVER SEND";
        }

        @Override
        public RuntimeObjectType[] getArgsType() {
            return new RuntimeObjectType[] { RuntimeObjectType.kString };
        }

        @Override
        public RuntimeObject ExternalProcCall(List<RuntimeObject> args, IRuntimeStatus status) {
            if (getServer() != null) {
                ModuleNetServer.Status s = getServer().getStatus();
                if (s == ModuleNetServer.Status.RUNNING) {
                    status.getService().getProcessService().sleep(status.getPid(), MSG_SEND_TIME);
                    getServer().send(String.valueOf(args.get(0).getObj()));
                    return new RuntimeObject(true);
                }
            }
            return new RuntimeObject(false);
        }
    });
    info.addExternalFunc("g_net_msg_server_send_error", new IRuntimeDebugExec() {

        @Override
        public String getDoc() {
            return "MSG SERVER SEND ERROR";
        }

        @Override
        public RuntimeObjectType[] getArgsType() {
            return new RuntimeObjectType[] { RuntimeObjectType.kString };
        }

        @Override
        public RuntimeObject ExternalProcCall(List<RuntimeObject> args, IRuntimeStatus status) {
            if (getServer() != null) {
                ModuleNetServer.Status s = getServer().getStatus();
                if (s == ModuleNetServer.Status.RUNNING) {
                    status.getService().getProcessService().sleep(status.getPid(), MSG_SEND_TIME);
                    getServer().send_error(String.valueOf(args.get(0).getObj()));
                    return new RuntimeObject(true);
                }
            }
            return new RuntimeObject(false);
        }
    });
    info.addExternalFunc("g_net_msg_server_send_with_origin", new IRuntimeDebugExec() {

        @Override
        public String getDoc() {
            return "MSG SERVER SEND(ORIGIN)";
        }

        @Override
        public RuntimeObjectType[] getArgsType() {
            return new RuntimeObjectType[] { RuntimeObjectType.kString, RuntimeObjectType.kString };
        }

        @Override
        public RuntimeObject ExternalProcCall(List<RuntimeObject> args, IRuntimeStatus status) {
            if (getServer() != null) {
                ModuleNetServer.Status s = getServer().getStatus();
                if (s == ModuleNetServer.Status.RUNNING) {
                    status.getService().getProcessService().sleep(status.getPid(), MSG_SEND_TIME);
                    getServer().send(String.valueOf(args.get(0).getObj()), String.valueOf(args.get(1).getObj()));
                    return new RuntimeObject(true);
                }
            }
            return new RuntimeObject(false);
        }
    });
    // client
    // -----------------------------------
    info.addExternalFunc("g_net_msg_get_error", new IRuntimeDebugExec() {

        @Override
        public String getDoc() {
            return "MSG SERVER GET ERROR";
        }

        @Override
        public RuntimeObjectType[] getArgsType() {
            return null;
        }

        @Override
        public RuntimeObject ExternalProcCall(List<RuntimeObject> args, IRuntimeStatus status) {
            return new RuntimeObject(lastError);
        }
    });
    info.addExternalFunc("g_net_msg_get_server_msg", new IRuntimeDebugExec() {

        @Override
        public String getDoc() {
            return "MSG SERVER GET MESSAGE";
        }

        @Override
        public RuntimeObjectType[] getArgsType() {
            return null;
        }

        @Override
        public RuntimeObject ExternalProcCall(List<RuntimeObject> args, IRuntimeStatus status) {
            return new RuntimeObject(getServer() == null ? null : getServer().getMessage());
        }
    });
    info.addExternalFunc("g_net_msg_get_client_msg", new IRuntimeDebugExec() {

        @Override
        public String getDoc() {
            return "MSG CLIENT GET MESSAGE";
        }

        @Override
        public RuntimeObjectType[] getArgsType() {
            return null;
        }

        @Override
        public RuntimeObject ExternalProcCall(List<RuntimeObject> args, IRuntimeStatus status) {
            return new RuntimeObject(getClient() == null ? null : getClient().getMessage());
        }
    });
    info.addExternalFunc("g_net_msg_get_client_addr", new IRuntimeDebugExec() {

        @Override
        public String getDoc() {
            return "MSG CLIENT GET ADDRESS";
        }

        @Override
        public RuntimeObjectType[] getArgsType() {
            return null;
        }

        @Override
        public RuntimeObject ExternalProcCall(List<RuntimeObject> args, IRuntimeStatus status) {
            return new RuntimeObject(getClient() == null ? null : getClient().getAddr());
        }
    });
    info.addExternalFunc("g_net_parse_json", new IRuntimeDebugExec() {

        @Override
        public String getDoc() {
            return "Parse json";
        }

        @Override
        public RuntimeObjectType[] getArgsType() {
            return new RuntimeObjectType[] { RuntimeObjectType.kString };
        }

        @Override
        public RuntimeObject ExternalProcCall(List<RuntimeObject> args, IRuntimeStatus status) {
            return parseJsonSafe(String.valueOf(args.get(0).getObj()));
        }
    });
    info.addExternalFunc("g_net_get_rss", new IRuntimeDebugExec() {

        @Override
        public String getDoc() {
            return "RSS GET(BAIDU)";
        }

        @Override
        public RuntimeObjectType[] getArgsType() {
            return new RuntimeObjectType[] { RuntimeObjectType.kString };
        }

        @SuppressWarnings("unchecked")
        @Override
        public RuntimeObject ExternalProcCall(List<RuntimeObject> args, IRuntimeStatus status) {
            String text = "";
            String txt = String.valueOf(args.get(0).getObj());
            logger.debug("Request url(rss): " + txt);
            RuntimeArray array = new RuntimeArray();
            final Pattern pattern = Pattern.compile("<br>(.*)<br />");
            try {
                SAXReader reader = new SAXReader();
                Document document = reader.read(txt);
                Node title = document.selectSingleNode("//title");
                array.add(new RuntimeObject(title.getText()));
                List<Node> list = document.selectNodes("//item");
                for (Node item : list) {
                    String itemTitle = item.valueOf("title");
                    array.add(new RuntimeObject(itemTitle));
                    String itemDescription = item.valueOf("description");
                    Matcher matcher = pattern.matcher(itemDescription);
                    if (matcher.find()) {
                        array.add(new RuntimeObject(matcher.group(1)));
                    } else {
                        array.add(new RuntimeObject(itemDescription.replace("<br />", "")));
                    }
                }
                return new RuntimeObject(array);
            } catch (Exception e) {
                e.printStackTrace();
            }
            return new RuntimeObject(array);
        }
    });
}
Also used : Pattern(java.util.regex.Pattern) RuntimeArray(priv.bajdcc.LALR1.grammar.runtime.data.RuntimeArray) InputStreamReader(java.io.InputStreamReader) ModuleNetClient(priv.bajdcc.LALR1.interpret.module.net.ModuleNetClient) Matcher(java.util.regex.Matcher) SAXReader(org.dom4j.io.SAXReader) Node(org.dom4j.Node) Document(org.dom4j.Document) URL(java.net.URL) URLConnection(java.net.URLConnection) BufferedReader(java.io.BufferedReader) List(java.util.List) ModuleNetServer(priv.bajdcc.LALR1.interpret.module.net.ModuleNetServer)

Example 4 with IRuntimeDebugExec

use of priv.bajdcc.LALR1.grammar.runtime.IRuntimeDebugExec in project jMiniLang by bajdcc.

the class ModuleProc method buildMethod.

private void buildMethod(IRuntimeDebugInfo info) {
    info.addExternalFunc("g_create_process", new IRuntimeDebugExec() {

        @Override
        public String getDoc() {
            return "创建进程";
        }

        @Override
        public RuntimeObjectType[] getArgsType() {
            return new RuntimeObjectType[] { RuntimeObjectType.kFunc };
        }

        @Override
        public RuntimeObject ExternalProcCall(List<RuntimeObject> args, IRuntimeStatus status) throws Exception {
            RuntimeFuncObject func = (RuntimeFuncObject) args.get(0).getObj();
            return new RuntimeObject(BigInteger.valueOf(status.createProcess(func)));
        }
    });
    info.addExternalFunc("g_create_process_args", new IRuntimeDebugExec() {

        @Override
        public String getDoc() {
            return "创建进程带参数";
        }

        @Override
        public RuntimeObjectType[] getArgsType() {
            return new RuntimeObjectType[] { RuntimeObjectType.kFunc, RuntimeObjectType.kObject };
        }

        @Override
        public RuntimeObject ExternalProcCall(List<RuntimeObject> args, IRuntimeStatus status) throws Exception {
            RuntimeFuncObject func = (RuntimeFuncObject) args.get(0).getObj();
            RuntimeObject obj = args.get(1);
            return new RuntimeObject(BigInteger.valueOf(status.createProcess(func, obj)));
        }
    });
    info.addExternalFunc("g_create_user_process", new IRuntimeDebugExec() {

        @Override
        public String getDoc() {
            return "创建用户态进程";
        }

        @Override
        public RuntimeObjectType[] getArgsType() {
            return new RuntimeObjectType[] { RuntimeObjectType.kFunc };
        }

        @Override
        public RuntimeObject ExternalProcCall(List<RuntimeObject> args, IRuntimeStatus status) throws Exception {
            RuntimeFuncObject func = (RuntimeFuncObject) args.get(0).getObj();
            return new RuntimeObject(BigInteger.valueOf(status.createUsrProcess(func)));
        }
    });
    info.addExternalFunc("g_create_user_process_args", new IRuntimeDebugExec() {

        @Override
        public String getDoc() {
            return "创建用户态进程带参数";
        }

        @Override
        public RuntimeObjectType[] getArgsType() {
            return new RuntimeObjectType[] { RuntimeObjectType.kFunc, RuntimeObjectType.kObject };
        }

        @Override
        public RuntimeObject ExternalProcCall(List<RuntimeObject> args, IRuntimeStatus status) throws Exception {
            RuntimeFuncObject func = (RuntimeFuncObject) args.get(0).getObj();
            RuntimeObject obj = args.get(1);
            return new RuntimeObject(BigInteger.valueOf(status.createUsrProcess(func, obj)));
        }
    });
    info.addExternalFunc("g_get_user_procs", new IRuntimeDebugExec() {

        @Override
        public String getDoc() {
            return "获取用户态进程ID列表";
        }

        @Override
        public RuntimeObjectType[] getArgsType() {
            return null;
        }

        @Override
        public RuntimeObject ExternalProcCall(List<RuntimeObject> args, IRuntimeStatus status) throws Exception {
            RuntimeArray arr = new RuntimeArray();
            List<Integer> list = status.getUsrProcs();
            for (Integer pid : list) {
                arr.add(new RuntimeObject(pid));
            }
            return new RuntimeObject(arr);
        }
    });
    info.addExternalFunc("g_get_pid", new IRuntimeDebugExec() {

        @Override
        public String getDoc() {
            return "获取进程ID";
        }

        @Override
        public RuntimeObjectType[] getArgsType() {
            return null;
        }

        @Override
        public RuntimeObject ExternalProcCall(List<RuntimeObject> args, IRuntimeStatus status) throws Exception {
            return new RuntimeObject(BigInteger.valueOf(status.getPid()));
        }
    });
    info.addExternalFunc("g_get_parent_pid", new IRuntimeDebugExec() {

        @Override
        public String getDoc() {
            return "获取父进程ID";
        }

        @Override
        public RuntimeObjectType[] getArgsType() {
            return null;
        }

        @Override
        public RuntimeObject ExternalProcCall(List<RuntimeObject> args, IRuntimeStatus status) throws Exception {
            return new RuntimeObject(BigInteger.valueOf(status.getParentPid()));
        }
    });
    info.addExternalFunc("g_get_process_priority", new IRuntimeDebugExec() {

        @Override
        public String getDoc() {
            return "获取进程优先级";
        }

        @Override
        public RuntimeObjectType[] getArgsType() {
            return null;
        }

        @Override
        public RuntimeObject ExternalProcCall(List<RuntimeObject> args, IRuntimeStatus status) throws Exception {
            return new RuntimeObject(BigInteger.valueOf(status.getPriority()));
        }
    });
    info.addExternalFunc("g_set_process_priority", new IRuntimeDebugExec() {

        @Override
        public String getDoc() {
            return "设置进程优先级";
        }

        @Override
        public RuntimeObjectType[] getArgsType() {
            return new RuntimeObjectType[] { RuntimeObjectType.kInt };
        }

        @Override
        public RuntimeObject ExternalProcCall(List<RuntimeObject> args, IRuntimeStatus status) throws Exception {
            BigInteger priority = (BigInteger) args.get(0).getObj();
            return new RuntimeObject(status.setPriority(priority.intValue()));
        }
    });
    info.addExternalFunc("g_join_process_once", new IRuntimeDebugExec() {

        @Override
        public String getDoc() {
            return "进程等待";
        }

        @Override
        public RuntimeObjectType[] getArgsType() {
            return new RuntimeObjectType[] { RuntimeObjectType.kInt };
        }

        @Override
        public RuntimeObject ExternalProcCall(List<RuntimeObject> args, IRuntimeStatus status) throws Exception {
            BigInteger pid = (BigInteger) args.get(0).getObj();
            return new RuntimeObject(status.getService().getProcessService().join(pid.intValue(), status.getPid()));
        }
    });
    info.addExternalFunc("g_live_process", new IRuntimeDebugExec() {

        @Override
        public String getDoc() {
            return "进程存活";
        }

        @Override
        public RuntimeObjectType[] getArgsType() {
            return new RuntimeObjectType[] { RuntimeObjectType.kInt };
        }

        @Override
        public RuntimeObject ExternalProcCall(List<RuntimeObject> args, IRuntimeStatus status) throws Exception {
            BigInteger pid = (BigInteger) args.get(0).getObj();
            return new RuntimeObject(status.getService().getProcessService().live(pid.intValue()));
        }
    });
    info.addExternalFunc("g_sleep", new IRuntimeDebugExec() {

        @Override
        public String getDoc() {
            return "进程睡眠";
        }

        @Override
        public RuntimeObjectType[] getArgsType() {
            return new RuntimeObjectType[] { RuntimeObjectType.kInt };
        }

        @Override
        public RuntimeObject ExternalProcCall(List<RuntimeObject> args, IRuntimeStatus status) throws Exception {
            BigInteger turn = (BigInteger) args.get(0).getObj();
            int time = turn.intValue();
            return new RuntimeObject(BigInteger.valueOf(status.getService().getProcessService().sleep(status.getPid(), time > 0 ? time : 0)));
        }
    });
    info.addExternalFunc("g_query_usr_proc", new IRuntimeDebugExec() {

        @Override
        public String getDoc() {
            return "枚举用户态进程";
        }

        @Override
        public RuntimeObjectType[] getArgsType() {
            return null;
        }

        @Override
        public RuntimeObject ExternalProcCall(List<RuntimeObject> args, IRuntimeStatus status) throws Exception {
            return new RuntimeObject(ProcInfoHelper.getProcInfo(status, status.getUsrProcs()));
        }
    });
    info.addExternalFunc("g_query_sys_proc", new IRuntimeDebugExec() {

        @Override
        public String getDoc() {
            return "枚举内核态进程";
        }

        @Override
        public RuntimeObjectType[] getArgsType() {
            return null;
        }

        @Override
        public RuntimeObject ExternalProcCall(List<RuntimeObject> args, IRuntimeStatus status) throws Exception {
            return new RuntimeObject(ProcInfoHelper.getProcInfo(status, status.getSysProcs()));
        }
    });
    info.addExternalFunc("g_query_all_proc", new IRuntimeDebugExec() {

        @Override
        public String getDoc() {
            return "枚举进程";
        }

        @Override
        public RuntimeObjectType[] getArgsType() {
            return null;
        }

        @Override
        public RuntimeObject ExternalProcCall(List<RuntimeObject> args, IRuntimeStatus status) throws Exception {
            return new RuntimeObject(ProcInfoHelper.getProcInfoAll(status));
        }
    });
    info.addExternalFunc("g_set_process_desc", new IRuntimeDebugExec() {

        @Override
        public String getDoc() {
            return "设置进程说明";
        }

        @Override
        public RuntimeObjectType[] getArgsType() {
            return new RuntimeObjectType[] { RuntimeObjectType.kString };
        }

        @Override
        public RuntimeObject ExternalProcCall(List<RuntimeObject> args, IRuntimeStatus status) throws Exception {
            status.setProcDesc(String.valueOf(args.get(0).getObj()));
            return null;
        }
    });
}
Also used : BigInteger(java.math.BigInteger) RuntimeArray(priv.bajdcc.LALR1.grammar.runtime.data.RuntimeArray) BigInteger(java.math.BigInteger) RuntimeFuncObject(priv.bajdcc.LALR1.grammar.runtime.data.RuntimeFuncObject) List(java.util.List) ArrayList(java.util.ArrayList) RuntimeException(priv.bajdcc.LALR1.grammar.runtime.RuntimeException)

Example 5 with IRuntimeDebugExec

use of priv.bajdcc.LALR1.grammar.runtime.IRuntimeDebugExec in project jMiniLang by bajdcc.

the class ModuleString method buildStringUtils.

private void buildStringUtils(IRuntimeDebugInfo info) {
    info.addExternalFunc("g_string_replace", new IRuntimeDebugExec() {

        @Override
        public String getDoc() {
            return "字符串替换";
        }

        @Override
        public RuntimeObjectType[] getArgsType() {
            return new RuntimeObjectType[] { RuntimeObjectType.kString, RuntimeObjectType.kString, RuntimeObjectType.kString };
        }

        @Override
        public RuntimeObject ExternalProcCall(List<RuntimeObject> args, IRuntimeStatus status) throws Exception {
            String str = (String) args.get(0).getObj();
            String pat = (String) args.get(1).getObj();
            String sub = (String) args.get(2).getObj();
            RuntimeArray arr = new RuntimeArray();
            return new RuntimeObject(str.replaceAll(pat, sub));
        }
    });
    info.addExternalFunc("g_string_split", new IRuntimeDebugExec() {

        @Override
        public String getDoc() {
            return "字符串分割";
        }

        @Override
        public RuntimeObjectType[] getArgsType() {
            return new RuntimeObjectType[] { RuntimeObjectType.kString, RuntimeObjectType.kString };
        }

        @Override
        public RuntimeObject ExternalProcCall(List<RuntimeObject> args, IRuntimeStatus status) throws Exception {
            String str = (String) args.get(0).getObj();
            String split = (String) args.get(1).getObj();
            RuntimeArray arr = new RuntimeArray();
            for (String item : str.split(split, Integer.MAX_VALUE)) {
                arr.add(new RuntimeObject(item));
            }
            return new RuntimeObject(arr);
        }
    });
    info.addExternalFunc("g_string_splitn", new IRuntimeDebugExec() {

        @Override
        public String getDoc() {
            return "字符串分割";
        }

        @Override
        public RuntimeObjectType[] getArgsType() {
            return new RuntimeObjectType[] { RuntimeObjectType.kString, RuntimeObjectType.kString, RuntimeObjectType.kInt };
        }

        @Override
        public RuntimeObject ExternalProcCall(List<RuntimeObject> args, IRuntimeStatus status) throws Exception {
            String str = (String) args.get(0).getObj();
            String split = (String) args.get(1).getObj();
            int n = (int) args.get(1).getObj();
            RuntimeArray arr = new RuntimeArray();
            for (String item : str.split(split, n)) {
                arr.add(new RuntimeObject(item));
            }
            return new RuntimeObject(arr);
        }
    });
    info.addExternalFunc("g_string_trim", new IRuntimeDebugExec() {

        @Override
        public String getDoc() {
            return "字符串去除头尾空白";
        }

        @Override
        public RuntimeObjectType[] getArgsType() {
            return new RuntimeObjectType[] { RuntimeObjectType.kString };
        }

        @Override
        public RuntimeObject ExternalProcCall(List<RuntimeObject> args, IRuntimeStatus status) throws Exception {
            String str = (String) args.get(0).getObj();
            return new RuntimeObject(str.trim());
        }
    });
    info.addExternalFunc("g_string_length", new IRuntimeDebugExec() {

        @Override
        public String getDoc() {
            return "字符串长度";
        }

        @Override
        public RuntimeObjectType[] getArgsType() {
            return new RuntimeObjectType[] { RuntimeObjectType.kString };
        }

        @Override
        public RuntimeObject ExternalProcCall(List<RuntimeObject> args, IRuntimeStatus status) throws Exception {
            String str = (String) args.get(0).getObj();
            return new RuntimeObject(BigInteger.valueOf(str.length()));
        }
    });
    info.addExternalFunc("g_string_empty", new IRuntimeDebugExec() {

        @Override
        public String getDoc() {
            return "字符串是否为空";
        }

        @Override
        public RuntimeObjectType[] getArgsType() {
            return new RuntimeObjectType[] { RuntimeObjectType.kString };
        }

        @Override
        public RuntimeObject ExternalProcCall(List<RuntimeObject> args, IRuntimeStatus status) throws Exception {
            return new RuntimeObject(args.get(0).getObj().toString().isEmpty());
        }
    });
    info.addExternalFunc("g_string_get", new IRuntimeDebugExec() {

        @Override
        public String getDoc() {
            return "字符串查询";
        }

        @Override
        public RuntimeObjectType[] getArgsType() {
            return new RuntimeObjectType[] { RuntimeObjectType.kString, RuntimeObjectType.kInt };
        }

        @Override
        public RuntimeObject ExternalProcCall(List<RuntimeObject> args, IRuntimeStatus status) throws Exception {
            String str = (String) args.get(0).getObj();
            BigInteger index = (BigInteger) args.get(1).getObj();
            return new RuntimeObject(str.charAt(index.intValue()));
        }
    });
    info.addExternalFunc("g_string_regex", new IRuntimeDebugExec() {

        @Override
        public String getDoc() {
            return "字符串正则匹配";
        }

        @Override
        public RuntimeObjectType[] getArgsType() {
            return new RuntimeObjectType[] { RuntimeObjectType.kString, RuntimeObjectType.kString };
        }

        @Override
        public RuntimeObject ExternalProcCall(List<RuntimeObject> args, IRuntimeStatus status) throws Exception {
            String str = (String) args.get(0).getObj();
            String regex = (String) args.get(1).getObj();
            Matcher m = Pattern.compile(regex).matcher(str);
            RuntimeArray arr = new RuntimeArray();
            while (m.find()) {
                arr.add(new RuntimeObject(m.group()));
            }
            return new RuntimeObject(arr);
        }
    });
    info.addExternalFunc("g_string_build", new IRuntimeDebugExec() {

        @Override
        public String getDoc() {
            return "从字节数组构造字符串";
        }

        @Override
        public RuntimeObjectType[] getArgsType() {
            return new RuntimeObjectType[] { RuntimeObjectType.kArray };
        }

        @Override
        public RuntimeObject ExternalProcCall(List<RuntimeObject> args, IRuntimeStatus status) throws Exception {
            RuntimeArray array = (RuntimeArray) args.get(0).getObj();
            StringBuilder sb = new StringBuilder();
            for (Object obj : array.toList()) {
                sb.append(obj);
            }
            return new RuntimeObject(sb.toString());
        }
    });
    info.addExternalFunc("g_string_atoi", new IRuntimeDebugExec() {

        @Override
        public String getDoc() {
            return "字符串转换成数字";
        }

        @Override
        public RuntimeObjectType[] getArgsType() {
            return new RuntimeObjectType[] { RuntimeObjectType.kString };
        }

        @Override
        public RuntimeObject ExternalProcCall(List<RuntimeObject> args, IRuntimeStatus status) throws Exception {
            String str = (String) args.get(0).getObj();
            try {
                BigInteger bi = new BigInteger(str);
                return new RuntimeObject(new BigInteger(str));
            } catch (NumberFormatException e) {
                return new RuntimeObject(BigInteger.valueOf(-1));
            }
        }
    });
    info.addExternalFunc("g_string_atoi_s", new IRuntimeDebugExec() {

        @Override
        public String getDoc() {
            return "字符串转换成数字(安全版本)";
        }

        @Override
        public RuntimeObjectType[] getArgsType() {
            return new RuntimeObjectType[] { RuntimeObjectType.kString };
        }

        @Override
        public RuntimeObject ExternalProcCall(List<RuntimeObject> args, IRuntimeStatus status) throws Exception {
            String str = (String) args.get(0).getObj();
            try {
                BigInteger bi = new BigInteger(str);
                return new RuntimeObject(new BigInteger(str));
            } catch (NumberFormatException e) {
                return null;
            }
        }
    });
    info.addExternalFunc("g_string_join_array", new IRuntimeDebugExec() {

        @Override
        public String getDoc() {
            return "字符串数组连接";
        }

        @Override
        public RuntimeObjectType[] getArgsType() {
            return new RuntimeObjectType[] { RuntimeObjectType.kArray, RuntimeObjectType.kString };
        }

        @Override
        public RuntimeObject ExternalProcCall(List<RuntimeObject> args, IRuntimeStatus status) throws Exception {
            RuntimeArray arr = (RuntimeArray) args.get(0).getObj();
            String delim = (String) args.get(1).getObj();
            return new RuntimeObject(String.join(delim, arr.toStringList()));
        }
    });
    info.addExternalFunc("g_string_toupper", new IRuntimeDebugExec() {

        @Override
        public String getDoc() {
            return "字符串大写";
        }

        @Override
        public RuntimeObjectType[] getArgsType() {
            return new RuntimeObjectType[] { RuntimeObjectType.kString };
        }

        @Override
        public RuntimeObject ExternalProcCall(List<RuntimeObject> args, IRuntimeStatus status) throws Exception {
            String delim = (String) args.get(0).getObj();
            return new RuntimeObject(delim.toUpperCase());
        }
    });
    info.addExternalFunc("g_string_tolower", new IRuntimeDebugExec() {

        @Override
        public String getDoc() {
            return "字符串小写";
        }

        @Override
        public RuntimeObjectType[] getArgsType() {
            return new RuntimeObjectType[] { RuntimeObjectType.kString };
        }

        @Override
        public RuntimeObject ExternalProcCall(List<RuntimeObject> args, IRuntimeStatus status) throws Exception {
            String delim = (String) args.get(0).getObj();
            return new RuntimeObject(delim.toLowerCase());
        }
    });
    info.addExternalFunc("g_string_rep", new IRuntimeDebugExec() {

        @Override
        public String getDoc() {
            return "字符串重复构造";
        }

        @Override
        public RuntimeObjectType[] getArgsType() {
            return new RuntimeObjectType[] { RuntimeObjectType.kString, RuntimeObjectType.kInt };
        }

        @Override
        public RuntimeObject ExternalProcCall(List<RuntimeObject> args, IRuntimeStatus status) throws Exception {
            String str = (String) args.get(0).getObj();
            BigInteger dup = (BigInteger) args.get(1).getObj();
            int n = dup.intValue();
            StringBuilder sb = new StringBuilder();
            for (int i = 0; i < n; i++) {
                sb.append(str);
            }
            return new RuntimeObject(sb.toString());
        }
    });
    info.addExternalFunc("g_string_to_number", new IRuntimeDebugExec() {

        @Override
        public String getDoc() {
            return "字符串转换数字";
        }

        @Override
        public RuntimeObjectType[] getArgsType() {
            return new RuntimeObjectType[] { RuntimeObjectType.kString };
        }

        @Override
        public RuntimeObject ExternalProcCall(List<RuntimeObject> args, IRuntimeStatus status) throws Exception {
            String str = (String) args.get(0).getObj();
            try {
                return new RuntimeObject(new BigInteger(str));
            } catch (Exception e1) {
                try {
                    return new RuntimeObject(new BigDecimal(str));
                } catch (Exception e2) {
                    return null;
                }
            }
        }
    });
    info.addExternalFunc("g_string_equal", new IRuntimeDebugExec() {

        @Override
        public String getDoc() {
            return "字符串相等比较";
        }

        @Override
        public RuntimeObjectType[] getArgsType() {
            return new RuntimeObjectType[] { RuntimeObjectType.kObject, RuntimeObjectType.kString };
        }

        @Override
        public RuntimeObject ExternalProcCall(List<RuntimeObject> args, IRuntimeStatus status) throws Exception {
            if (args.get(0).getType() == RuntimeObjectType.kString) {
                String str = (String) args.get(0).getObj();
                String cmp = (String) args.get(1).getObj();
                return new RuntimeObject(str.compareTo(cmp) == 0);
            }
            return new RuntimeObject(false);
        }
    });
    info.addExternalFunc("g_string_not_equal", new IRuntimeDebugExec() {

        @Override
        public String getDoc() {
            return "字符串不等比较";
        }

        @Override
        public RuntimeObjectType[] getArgsType() {
            return new RuntimeObjectType[] { RuntimeObjectType.kObject, RuntimeObjectType.kString };
        }

        @Override
        public RuntimeObject ExternalProcCall(List<RuntimeObject> args, IRuntimeStatus status) throws Exception {
            if (args.get(0).getType() == RuntimeObjectType.kString) {
                String str = (String) args.get(0).getObj();
                String cmp = (String) args.get(1).getObj();
                return new RuntimeObject(str.compareTo(cmp) != 0);
            }
            return new RuntimeObject(true);
        }
    });
    info.addExternalFunc("g_string_start_with", new IRuntimeDebugExec() {

        @Override
        public String getDoc() {
            return "字符串开头比较";
        }

        @Override
        public RuntimeObjectType[] getArgsType() {
            return new RuntimeObjectType[] { RuntimeObjectType.kString, RuntimeObjectType.kString };
        }

        @Override
        public RuntimeObject ExternalProcCall(List<RuntimeObject> args, IRuntimeStatus status) throws Exception {
            String str = (String) args.get(0).getObj();
            String cmp = (String) args.get(1).getObj();
            return new RuntimeObject(str.startsWith(cmp));
        }
    });
    info.addExternalFunc("g_string_end_with", new IRuntimeDebugExec() {

        @Override
        public String getDoc() {
            return "字符串结尾比较";
        }

        @Override
        public RuntimeObjectType[] getArgsType() {
            return new RuntimeObjectType[] { RuntimeObjectType.kString, RuntimeObjectType.kString };
        }

        @Override
        public RuntimeObject ExternalProcCall(List<RuntimeObject> args, IRuntimeStatus status) throws Exception {
            String str = (String) args.get(0).getObj();
            String cmp = (String) args.get(1).getObj();
            return new RuntimeObject(str.endsWith(cmp));
        }
    });
    info.addExternalFunc("g_string_substr", new IRuntimeDebugExec() {

        @Override
        public String getDoc() {
            return "字符串子串";
        }

        @Override
        public RuntimeObjectType[] getArgsType() {
            return new RuntimeObjectType[] { RuntimeObjectType.kString, RuntimeObjectType.kInt, RuntimeObjectType.kInt };
        }

        @Override
        public RuntimeObject ExternalProcCall(List<RuntimeObject> args, IRuntimeStatus status) throws Exception {
            String str = (String) args.get(0).getObj();
            BigInteger a = (BigInteger) args.get(1).getObj();
            BigInteger b = (BigInteger) args.get(2).getObj();
            return new RuntimeObject(str.substring(a.intValue(), b.intValue()));
        }
    });
    info.addExternalFunc("g_string_left", new IRuntimeDebugExec() {

        @Override
        public String getDoc() {
            return "字符串左子串";
        }

        @Override
        public RuntimeObjectType[] getArgsType() {
            return new RuntimeObjectType[] { RuntimeObjectType.kString, RuntimeObjectType.kInt };
        }

        @Override
        public RuntimeObject ExternalProcCall(List<RuntimeObject> args, IRuntimeStatus status) throws Exception {
            String str = (String) args.get(0).getObj();
            BigInteger a = (BigInteger) args.get(1).getObj();
            return new RuntimeObject(str.substring(0, a.intValue()));
        }
    });
    info.addExternalFunc("g_string_right", new IRuntimeDebugExec() {

        @Override
        public String getDoc() {
            return "字符串右子串";
        }

        @Override
        public RuntimeObjectType[] getArgsType() {
            return new RuntimeObjectType[] { RuntimeObjectType.kString, RuntimeObjectType.kInt };
        }

        @Override
        public RuntimeObject ExternalProcCall(List<RuntimeObject> args, IRuntimeStatus status) throws Exception {
            String str = (String) args.get(0).getObj();
            BigInteger a = (BigInteger) args.get(1).getObj();
            return new RuntimeObject(str.substring(a.intValue()));
        }
    });
}
Also used : RuntimeArray(priv.bajdcc.LALR1.grammar.runtime.data.RuntimeArray) Matcher(java.util.regex.Matcher) BigDecimal(java.math.BigDecimal) BigInteger(java.math.BigInteger)

Aggregations

BigInteger (java.math.BigInteger)5 RuntimeException (priv.bajdcc.LALR1.grammar.runtime.RuntimeException)4 RuntimeArray (priv.bajdcc.LALR1.grammar.runtime.data.RuntimeArray)4 BufferedReader (java.io.BufferedReader)2 List (java.util.List)2 Matcher (java.util.regex.Matcher)2 Grammar (priv.bajdcc.LALR1.grammar.Grammar)2 RuntimeFuncObject (priv.bajdcc.LALR1.grammar.runtime.data.RuntimeFuncObject)2 FileReader (java.io.FileReader)1 InputStreamReader (java.io.InputStreamReader)1 BigDecimal (java.math.BigDecimal)1 URL (java.net.URL)1 URLConnection (java.net.URLConnection)1 ArrayList (java.util.ArrayList)1 Pattern (java.util.regex.Pattern)1 Document (org.dom4j.Document)1 Node (org.dom4j.Node)1 SAXReader (org.dom4j.io.SAXReader)1 IRuntimeDebugExec (priv.bajdcc.LALR1.grammar.runtime.IRuntimeDebugExec)1 IRuntimeStatus (priv.bajdcc.LALR1.grammar.runtime.IRuntimeStatus)1