public void testScanner3() { var source = @"#if XXX class #else interface #endif C { } "; var codeErrorManager = new CodeErrorManager(); var preprocessor = new Preprocessor(codeErrorManager, source.toCharArray()); var scanner = new PreprocessedTextScanner(codeErrorManager, preprocessor.preprocess()); Assert.assertEquals(LexicalUnit.Keyword, scanner.nextLexicalUnit()); RestorePoint rp = scanner.createRestorePoint(); Assert.assertEquals(LexicalUnit.NewLine, scanner.nextLexicalUnit()); Assert.assertEquals(LexicalUnit.Identifier, scanner.nextLexicalUnit()); Assert.assertEquals(LexicalUnit.Whitespace, scanner.nextLexicalUnit()); Assert.assertEquals(LexicalUnit.OpenBrace, scanner.nextLexicalUnit()); Assert.assertEquals(LexicalUnit.NewLine, scanner.nextLexicalUnit()); scanner.restore(rp); Assert.assertEquals(LexicalUnit.Keyword, scanner.nextLexicalUnit()); Assert.assertEquals("interface", new String(scanner.Text, scanner.StartPosition, scanner.EndPosition - scanner.StartPosition)); Assert.assertEquals(LexicalUnit.NewLine, scanner.nextLexicalUnit()); Assert.assertEquals(LexicalUnit.Identifier, scanner.nextLexicalUnit()); Assert.assertEquals(LexicalUnit.Whitespace, scanner.nextLexicalUnit()); Assert.assertEquals(LexicalUnit.OpenBrace, scanner.nextLexicalUnit()); Assert.assertEquals(LexicalUnit.NewLine, scanner.nextLexicalUnit()); Assert.assertEquals(LexicalUnit.CloseBrace, scanner.nextLexicalUnit()); Assert.assertEquals(LexicalUnit.NewLine, scanner.nextLexicalUnit()); Assert.assertEquals(LexicalUnit.EndOfStream, scanner.nextLexicalUnit()); }
public void testScanner() { var source = @" class C { } "; var codeErrorManager = new CodeErrorManager(); var preprocessor = new Preprocessor(codeErrorManager, source.toCharArray()); var scanner = new PreprocessedTextScanner(codeErrorManager, preprocessor.preprocess()); Assert.assertEquals(LexicalUnit.NewLine, scanner.nextLexicalUnit()); Assert.assertEquals(LexicalUnit.Keyword, scanner.nextLexicalUnit()); Assert.assertEquals(LexicalUnit.Whitespace, scanner.nextLexicalUnit()); Assert.assertEquals(LexicalUnit.Identifier, scanner.nextLexicalUnit()); Assert.assertEquals(LexicalUnit.Whitespace, scanner.nextLexicalUnit()); Assert.assertEquals(LexicalUnit.OpenBrace, scanner.nextLexicalUnit()); Assert.assertEquals(LexicalUnit.NewLine, scanner.nextLexicalUnit()); Assert.assertEquals(LexicalUnit.CloseBrace, scanner.nextLexicalUnit()); Assert.assertEquals(LexicalUnit.NewLine, scanner.nextLexicalUnit()); Assert.assertEquals(LexicalUnit.EndOfStream, scanner.nextLexicalUnit()); }
private void parse(IFile file, char[] text, CodeErrorManager errorManager, Map <String, CompilationUnitNode> compilationUnits) { var filename = parameters.AllFiles.getProjectRelativeName(file); var preprocessor = new Preprocessor(errorManager, text); preprocessor.setFilename(filename); preprocessor.Symbols.addAll(parameters.PreprocessorSymbols); var preprocessedText = preprocessor.preprocess(); var parser = new Parser(); var scanner = new PreprocessedTextScanner(errorManager, preprocessedText); scanner.setFilename(filename); scanner.setTabWidth(Environment.getTabWidth()); var compilationUnit = parser.parseCompilationUnit(scanner); if (compilationUnit != null) { compilationUnit.setSymbols(preprocessor.Symbols); compilationUnits[filename] = compilationUnit; } }