Beispiel #1
0
        public override void Translate(DirectoryInfo genPath)
        {
            Directory.CreateDirectory(genPath.FullName);
            // remove existing files
            foreach (var file in genPath.EnumerateFiles())
            {
                file.Delete();
            }
            // and dirs
            foreach (DirectoryInfo dir in genPath.GetDirectories())
            {
                dir.Delete(true);
            }
            foreach (var key in Table.Modules.Keys)
            {
                if (Table.Modules[key].IsEmpty)
                {
                    continue;
                }
                AntlrInputStream  inputStream       = new AntlrInputStream(Table.Modules[key].ModuleData.Data);
                SLangGrammarLexer lexer             = new SLangGrammarLexer(inputStream);
                CommonTokenStream commonTokenStream = new CommonTokenStream(lexer);
                var parser = new SLangGrammarParser(commonTokenStream);
                parser.AddErrorListener(new SLangErrorListener(Table.Modules[key].ModuleData));

                var translatorVisitor = new CppTranslator(new StreamWriter($"{genPath}/{key}.h"), new StreamWriter($"{genPath}/{key}.cpp"), Table, Table.Modules[key], genPath);
                translatorVisitor.Visit(parser.start());
            }
        }
Beispiel #2
0
        private SLangGrammarParser GenerateParser(string sourceCode)
        {
            AntlrInputStream  inputStream       = new AntlrInputStream(sourceCode);
            SLangGrammarLexer lexer             = new SLangGrammarLexer(inputStream);
            CommonTokenStream commonTokenStream = new CommonTokenStream(lexer);

            return(new SLangGrammarParser(commonTokenStream));
        }