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()); }
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); }
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); }