示例#1
0
        public LexTranslator(GSharpLex oldLex, GSharpLex newLex)
        {
            this.oldLex = oldLex;
            this.newLex = newLex;

            log.debug("Compiling LexMap...");
            log.debug("Old Lexicon: " + oldLex.TokenMap.Printable());
            log.debug("New Lexicon: " + newLex.TokenMap.Printable());

            newLex.TokenMap.Reverse().ForEach((s, t) => compiledMap.Put(s, oldLex.TokenMap.Get(t)));
            oldLex.TokenMap.Reverse().ForEach((s, t) => compiledMap.Put(s, newLex.TokenMap.Get(t)));

            log.debug("Compiled Lexicon Table: " + compiledMap.Printable());
        }
示例#2
0
        public static void run(String code, GSharpLex lex)
        {
            ILexModifier[] modifiers = { new LexTranslator(lex, new GSharpLex()), new ElseifFixer() };

            log.debug("Raw Code\n//CODE START\n" + code + "\n//CODE END");
            log.debug("Applying Code Modifiers...");

            foreach (var mod in modifiers)
            {
                code = mod.accept(code);
            }

            log.debug("Modified Code\n//CODE START\n" + code + "\n//CODE END");

            runLua(code);
        }
示例#3
0
        public static void run(String code)
        {
            if (Static.isLua)
            {
                RunGEngine.runLua(code);
                return;
            }

            GSharpLex ifcienciaLex = new GSharpLex();
            Map<EnumToken, string> map = ifcienciaLex.TokenMap;
            map.Put(EnumToken.COMPILEFIRST, "compileprimeiro");
            map.Put(EnumToken.COMPILELAST, "compileultimo");
            map.Put(EnumToken.DEFINE, "definir");
            map.Put(EnumToken.INCLUDE, "incluir");
            map.Put(EnumToken.REQUIRE, "requerir");
            map.Put(EnumToken.REQUIREFIRST, "requireprimeiro");
            map.Put(EnumToken.REQUIRELAST, "requireultimo");
            map.Put(EnumToken.AND, "e");
            map.Put(EnumToken.BREAK, "quebrar");
            map.Put(EnumToken.DO, "faça");
            map.Put(EnumToken.ELSE, "senão");
            map.Put(EnumToken.END, "fim");
            map.Put(EnumToken.FALSE, "falso");
            map.Put(EnumToken.FOR, "para");
            map.Put(EnumToken.FUNCTION, "função");
            map.Put(EnumToken.IF, "se");
            map.Put(EnumToken.IN, "em");
            map.Put(EnumToken.LOCAL, "local");
            map.Put(EnumToken.NIL, "nulo");
            map.Put(EnumToken.NOT, "não");
            map.Put(EnumToken.OR, "ou");
            map.Put(EnumToken.REPEAT, "repetir");
            map.Put(EnumToken.RETURN, "retornar");
            map.Put(EnumToken.THEN, "então");
            map.Put(EnumToken.TRUE, "verdadeiro");
            map.Put(EnumToken.UNTIL, "até");
            map.Put(EnumToken.WHILE, "enquanto");

            RunGEngine.run(code, ifcienciaLex);
        }