예제 #1
0
 public void SetUp()
 {
     _classListener = new ClassListener(
         new MethodListener(
             new StatementListener()
             ),
         new MemberDeclarationListener());
 }
예제 #2
0
        public ClassObject parse(string code)
        {
            AntlrInputStream      ips    = new AntlrInputStream(code);
            SomeLanguageLexer     lexer  = new SomeLanguageLexer(ips);
            UnbufferedTokenStream tokens = new UnbufferedTokenStream(lexer);
            SomeLanguageParser    parser = new SomeLanguageParser(tokens);

            ClassListener classListener = new ClassListener();

            parser.classDeclaration().EnterRule(classListener);
            return(classListener.getParsedClass());
        }
예제 #3
0
        public bool Read()
        {
            if (!File.Exists(Filepath))
            {
                Logger.Write("File not found : " + Filepath, LogType.Error);
                return(false);
            }
            string text = File.ReadAllText(Filepath);

            NovaParsingErrorHandler parsingErrorHandler = new NovaParsingErrorHandler();

            var inputStream = new AntlrInputStream(text);
            var lexer       = new NovaLexer(inputStream);

            lexer.RemoveErrorListener(ConsoleErrorListener <int> .Instance);

            var commonTokenStream = new CommonTokenStream(lexer);
            var parser            = new NovaParser(commonTokenStream);

            parser.RemoveErrorListener(ConsoleErrorListener <IToken> .Instance);
            parser.AddErrorListener(parsingErrorHandler);

            NovaParser.CompilationUnitContext ectx = parser.compilationUnit();

            foreach (var importDeclaration in ectx.importDeclaration())
            {
                Usings.Add(new Using(UsingType.Ref, importDeclaration.fileName().GetText()));
            }
            ClassListener classListener = new ClassListener(this);

            foreach (var typeDeclaration in ectx.typeDeclaration())
            {
                typeDeclaration.EnterRule(classListener);
            }

            //Console.WriteLine(ectx.ToStringTree(parser));

            return(parsingErrorHandler.ErrorsCount == 0);
        }