Search in sources :

Example 1 with Grammar

use of priv.bajdcc.LALR1.grammar.Grammar in project jMiniLang by bajdcc.

the class RuntimeMachine method runProcess.

@Override
public int runProcess(String name) throws Exception {
    BufferedReader br = new BufferedReader(new FileReader(name));
    StringBuilder sb = new StringBuilder();
    String line;
    while ((line = br.readLine()) != null) {
        sb.append(line);
        sb.append(System.lineSeparator());
    }
    br.close();
    logger.debug("Loading file: " + name);
    Grammar grammar = new Grammar(sb.toString());
    return process.createProcess(pid, true, name, grammar.getCodePage(), 0, null);
}
Also used : BufferedReader(java.io.BufferedReader) FileReader(java.io.FileReader) Grammar(priv.bajdcc.LALR1.grammar.Grammar)

Example 2 with Grammar

use of priv.bajdcc.LALR1.grammar.Grammar in project jMiniLang by bajdcc.

the class RuntimeProcess method getPage.

public RuntimeCodePage getPage(String name) throws Exception {
    String vfs = null;
    if (arrCodes.containsKey(name) || (vfs = service.getFileService().getVfs(name)) != null) {
        String code = vfs == null ? arrCodes.get(name) : vfs;
        if (arrPages.containsKey(code)) {
            return arrPages.get(code);
        } else {
            logger.debug("Loading page: " + name);
            try {
                Grammar grammar = new Grammar(code);
                RuntimeCodePage page = grammar.getCodePage();
                service.getFileService().addVfs(name, code);
                arrPages.put(name, page);
                return page;
            } catch (SyntaxException e) {
                String filename = pageFileMap.get(name);
                e.setFileName(filename == null ? "Unknown Source" : (filename + ".txt"));
                e.setPageName(name);
                System.err.println("#PAGE ERROR# --> " + name);
                throw e;
            }
        }
    }
    return null;
}
Also used : SyntaxException(priv.bajdcc.LALR1.syntax.handler.SyntaxException) Grammar(priv.bajdcc.LALR1.grammar.Grammar)

Example 3 with Grammar

use of priv.bajdcc.LALR1.grammar.Grammar in project jMiniLang by bajdcc.

the class TestGrammar2 method main.

public static void main(String[] args) {
    try {
        String[] exprs = new String[] { "var a = 1;", "var a = 4 + 4;", "var a = !(!true * (++4 / !4 + 4 ? 5 & 6 && true ^ !\"ddd\" | 'r' : 8.0+9*9));", "var a = 3.0 + 4.0 / 7 * 8.9;", "var a = 3000.0 << ++2.0;", "var a = true << 9 ? 1 + 3 : 2;", "var a = 5;let a = a + 4 + a ? 3 : 5;var t = func main1(){};", "var d= func [\"d\",\"t\"] ~()->a;", "var d = func ~()->4;", "var a = call (func ~(a) {call (func b(c){var b = '5'+ 66; call b(666);})();}) (6);", "var a = call (func ~(a) {\n" + "call (func b(c){\n" + "var c = '5'+ 1;\n" + "var d = c;\n" + "//call b(666);\n" + "let c = 7;\n" + "})(7);\n" + "}) (44);", "var a = call\n" + "(func ~(x, y) -> x + y)\n" + " (1, 2);\n", "var d = 4;" + "var c = d || 6;" };
        /*
			 * 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(exprs[exprs.length - 1]);
        System.out.println(grammar.toString());
        RuntimeCodePage page = grammar.getCodePage();
        System.out.println(page.toString());
        RuntimeMachine machine = new RuntimeMachine();
        machine.run("test1", page);
    // 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 : RuntimeException(priv.bajdcc.LALR1.grammar.runtime.RuntimeException) SyntaxException(priv.bajdcc.LALR1.syntax.handler.SyntaxException) RegexException(priv.bajdcc.util.lexer.error.RegexException) RuntimeMachine(priv.bajdcc.LALR1.grammar.runtime.RuntimeMachine) Grammar(priv.bajdcc.LALR1.grammar.Grammar) RuntimeCodePage(priv.bajdcc.LALR1.grammar.runtime.RuntimeCodePage) SyntaxException(priv.bajdcc.LALR1.syntax.handler.SyntaxException) RuntimeException(priv.bajdcc.LALR1.grammar.runtime.RuntimeException) RegexException(priv.bajdcc.util.lexer.error.RegexException)

Example 4 with Grammar

use of priv.bajdcc.LALR1.grammar.Grammar 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 5 with Grammar

use of priv.bajdcc.LALR1.grammar.Grammar in project jMiniLang by bajdcc.

the class ModuleClass method getCodePage.

@Override
public RuntimeCodePage getCodePage() throws Exception {
    if (runtimeCodePage != null)
        return runtimeCodePage;
    String base = ResourceLoader.load(getClass());
    Grammar grammar = new Grammar(base);
    RuntimeCodePage page = grammar.getCodePage();
    IRuntimeDebugInfo info = page.getInfo();
    return runtimeCodePage = page;
}
Also used : Grammar(priv.bajdcc.LALR1.grammar.Grammar) RuntimeCodePage(priv.bajdcc.LALR1.grammar.runtime.RuntimeCodePage) IRuntimeDebugInfo(priv.bajdcc.LALR1.grammar.runtime.IRuntimeDebugInfo)

Aggregations

Grammar (priv.bajdcc.LALR1.grammar.Grammar)37 RuntimeCodePage (priv.bajdcc.LALR1.grammar.runtime.RuntimeCodePage)21 RegexException (priv.bajdcc.util.lexer.error.RegexException)20 RuntimeException (priv.bajdcc.LALR1.grammar.runtime.RuntimeException)17 SyntaxException (priv.bajdcc.LALR1.syntax.handler.SyntaxException)17 ByteArrayInputStream (java.io.ByteArrayInputStream)14 ByteArrayOutputStream (java.io.ByteArrayOutputStream)14 Interpreter (priv.bajdcc.LALR1.interpret.Interpreter)14 BufferedReader (java.io.BufferedReader)5 FileReader (java.io.FileReader)5 IRuntimeDebugInfo (priv.bajdcc.LALR1.grammar.runtime.IRuntimeDebugInfo)5 RuntimeMachine (priv.bajdcc.LALR1.grammar.runtime.RuntimeMachine)2 RuntimeObject (priv.bajdcc.LALR1.grammar.runtime.RuntimeObject)2 Grammar (priv.bajdcc.LL1.grammar.Grammar)2 GrammarException (priv.bajdcc.LL1.grammar.error.GrammarException)2 SyntaxException (priv.bajdcc.LL1.syntax.handler.SyntaxException)2 IOException (java.io.IOException)1 BigInteger (java.math.BigInteger)1 Scanner (java.util.Scanner)1 IRuntimeDebugExec (priv.bajdcc.LALR1.grammar.runtime.IRuntimeDebugExec)1