Пример #1
0
        internal static void CanParseSourceRegex(string source, string regex, Func <VbaParser, ParserRuleContext> rule)
        {
            var parser = VbaCompilerHelper.BuildVbaParser(source);

            var result = rule(parser);

            Assert.Null(result.exception);
            Assert.True(Regex.IsMatch(result.ToStringTree(parser), regex));
        }
Пример #2
0
        internal static void CanParseSource(string source, string expectedTree, Func <VbaParser, ParserRuleContext> rule)
        {
            var parser = VbaCompilerHelper.BuildVbaParser(source);

            var result = rule(parser);

            Assert.Null(result.exception);
            ParseTreeHelper.TreesAreEqual(expectedTree, result.ToStringTree(parser));
        }
Пример #3
0
        public void CannotParseInvalidIdentifierInTypeMemberDeclaration()
        {
            const string typeDeclarationTemplate = "Type MyType\r\n{0} As String\r\nEnd Type";
            // the only invalid keyword is 'Me'.
            var source = string.Format(typeDeclarationTemplate, "Me");
            var parser = VbaCompilerHelper.BuildVbaParser(source);

            Assert.Throws <ParseCanceledException>(() => parser.typeDeclaration());
        }
Пример #4
0
        public void CanParseDirectiveElement(string source, string expectedTree)
        {
            var parser = VbaCompilerHelper.BuildVbaParser(source);

            var result = parser.directiveElement();

            Assert.Null(result.exception);
            ParseTreeHelper.TreesAreEqual(expectedTree, result.ToStringTree(parser));
        }
Пример #5
0
        private void CannotParseAnyTrueKeywords(string sourceTemplate, Func <VbaParser, ParserRuleContext> rule)
        {
            foreach (var id in VbaLexer.TrueKeywords)
            {
                var source = string.Format(sourceTemplate, id);
                var parser = VbaCompilerHelper.BuildVbaParser(source);

                Assert.Throws <ParseCanceledException>(() => rule(parser));
            }
        }