Example #1
0
        public static RawRsfScript ParseScript(string scriptData)
        {
            var script             = new RawRsfScript();
            var stream             = new AntlrInputStream(scriptData);
            var lexer              = new RabotoraScriptFormatLexer(stream);
            var lexerErrorListener = new RsfErrorListener <int>(script);

            lexer.RemoveErrorListeners();
            lexer.AddErrorListener(lexerErrorListener);
            var tokens = new CommonTokenStream(lexer);
            var parser = new RabotoraScriptFormatParser(tokens)
            {
                BuildParseTree = true
            };
            var parserErrorListener = new RsfErrorListener <IToken>(script);

            parser.RemoveErrorListeners();
            parser.AddErrorListener(parserErrorListener);
            var tree = parser.script();

            if (script.Error.Count == 0)
            {
                ParseTreeWalker.Default.Walk(new RsfTypeChecker(script), tree);
            }
            string warningStr = string.Join('\n', script.Warning);
            string errorStr   = string.Join('\n', script.Error);

            Console.ForegroundColor = ConsoleColor.Yellow;
            Console.WriteLine(warningStr);
            Console.ForegroundColor = ConsoleColor.Red;
            Console.Error.WriteLine(errorStr);
            Console.ResetColor();
            Console.WriteLine($" {script.Error} error(s), {script.Warning} warning(s)");
            return(script);
        }
Example #2
0
 private RabotoraScript(string scriptName, string scriptPath, RawRsfScript script)
 {
     ScriptName = scriptName;
     ScriptPath = scriptPath;
     RawScript  = script;
 }
Example #3
0
 public RsfErrorListener(RawRsfScript script, int lineOffset = 0)
 {
     LineOffset = lineOffset;
     Script     = script;
 }
Example #4
0
 public RsfTypeChecker(RawRsfScript script)
 {
     Script = script;
 }