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