public IFile ParseFile() { using (var def = Lifetime.Define()) { var builder = new PsiBuilder(myLexer, SpringFileNodeType.Instance, new TokenFactory(), def.Lifetime); var fileMark = builder.Mark(); StringBuilder b = new StringBuilder(); foreach (var tok in myLexer.Tokens()) { b.Append(tok + " "); } b.ToString(); ParseDefines(builder); builder.Done(fileMark, SpringFileNodeType.Instance, null); var file = (IFile)builder.BuildTree(); SprintTreeScopeUtl.InitScopes(file); var sb = new StringBuilder(); DebugUtil.DumpPsi(new StringWriter(sb), file); sb.ToString(); return(file); } }
public IFile ParseFile() { using (var def = Lifetime.Define()) { var builder = new PsiBuilder(myLexer, SpringFileNodeType.Instance, new TokenFactory(), def.Lifetime); var fileMark = builder.Mark(); ParseSeq(builder); builder.Done(fileMark, SpringFileNodeType.Instance, null); var file = (IFile)builder.BuildTree(); var stringBuilder = new StringBuilder(); DebugUtil.DumpPsi(new StringWriter(stringBuilder), file); stringBuilder.ToString(); return(file); } }
protected override void DoTest(IProject testProject) { ShellInstance.GetComponent <TestIdGenerator>().Reset(); using (var textControl = OpenTextControl(testProject)) { ExecuteWithGold(textControl.Document, sw => { var files = textControl .Document .GetPsiSourceFiles(Solution) .SelectMany(s => s.GetPsiFiles <TLanguage>()) .ToList(); files.Sort((file1, file2) => String.Compare(file1.Language.Name, file2.Language.Name, StringComparison.Ordinal)); foreach (var psiFile in files) { // Assert all chameleons are closed by default var chameleons = psiFile.ThisAndDescendants <IChameleonNode>(); while (chameleons.MoveNext()) { var chameleonNode = chameleons.Current; if (chameleonNode.IsOpened && !(chameleonNode is IComment)) { Assertion.Fail("Found chameleon node that was opened after parser is invoked: '{0}'", chameleonNode.GetText()); } chameleons.SkipThisNode(); } // Dump the PSI tree, opening all chameleons sw.WriteLine("Language: {0}", psiFile.Language); DebugUtil.DumpPsi(sw, psiFile); sw.WriteLine(); if (((IFileImpl)psiFile).SecondaryRangeTranslator is RangeTranslatorWithGeneratedRangeMap rangeTranslator) { WriteCommentedText(sw, "//", rangeTranslator.Dump(psiFile)); } // Verify textual contents var originalText = textControl.Document.GetText(); Assert.AreEqual(originalText, psiFile.GetText(), "Reconstructed text mismatch"); CheckRange(originalText, psiFile); } }); } }
protected override void DoOneTest(string testName) { Logger.Catch(() => { testName = testName + ".js"; var testFile = GetTestDataFilePath2(testName); ExecuteWithGold(testName, writer => { var expressions = File.ReadAllLines(testFile.FullPath); foreach (var angularJsExpression in expressions) { var buffer = new StringBuffer(angularJsExpression); var lexer = new AngularJsLexerGenerated(buffer); var parser = new AngularJsParser(lexer); try { var parsedFile = parser.ParseFile(); Assert.NotNull(parsedFile); writer.WriteLine("Expression: «{0}»", angularJsExpression); writer.WriteLine("Language: {0}", parsedFile.Language); DebugUtil.DumpPsi(writer, parsedFile); writer.WriteLine(); var containingFile = parsedFile.GetContainingFile(); if (containingFile != null) { var rangeTranslator = ((IFileImpl)containingFile).SecondaryRangeTranslator as RangeTranslatorWithGeneratedRangeMap; if (rangeTranslator != null) { WriteCommentedText(writer, "//", rangeTranslator.Dump(containingFile)); } } } catch (Exception e) { writer.WriteLine(e); } } }); }); }
protected override void DoTest(IProject testProject) { var projectFile = testProject.GetAllProjectFiles().FirstNotNull(); Assert.NotNull(projectFile); var text = projectFile.Location.ReadAllText2(); var buffer = new StringBuffer(text.Text); var languageService = ShaderLabLanguage.Instance.LanguageService().NotNull(); var lexer = languageService.GetPrimaryLexerFactory().CreateLexer(buffer); var psiModule = Solution.PsiModules().GetPrimaryPsiModule(testProject, TargetFrameworkId.Default); var parser = languageService.CreateParser(lexer, psiModule, null); var psiFile = parser.ParseFile().NotNull(); if (DebugUtil.HasErrorElements(psiFile)) { DebugUtil.DumpPsi(Console.Out, psiFile); Assert.Fail("File contains error elements"); } Assert.AreEqual(text.Text, psiFile.GetText(), "Reconstructed text mismatch"); CheckRange(text.Text, psiFile); }
public IFile ParseFile() { using (var def = Lifetime.Define()) { var builder = new PsiBuilder(myLexer, SpringFileNodeType.Instance, new TokenFactory(), def.Lifetime); SpringLangLexer antlrLexer = new SpringLangLexer(new AntlrInputStream(myLexer.Buffer.GetText())); SpringLangParser antlrParser = new SpringLangParser(new CommonTokenStream(antlrLexer)); BuilderVisitor visitor = new BuilderVisitor(builder); visitor.Visit(antlrParser.program()); // ParseBlock(builder); var file = (IFile)builder.BuildTree(); var stringBuilder = new StringBuilder(); DebugUtil.DumpPsi(new StringWriter(stringBuilder), file); stringBuilder.ToString(); return(file); } }