コード例 #1
0
        public static void Run(
            TreeElement node,
            ILexer lexer,
            ITokenOffsetProvider offsetProvider,
            bool trimTokens,
            SeldomInterruptChecker interruptChecker,
            ITokenIntern intern)
        {
            Assertion.Assert(node.parent == null, "node.parent == null");

            var root = node as CompositeElement;
            if (root == null)
            {
                return;
            }

            var inserter = new NTriplesMissingTokensInserter(lexer, offsetProvider, interruptChecker, intern);
            lexer.Start();

            if (trimTokens)
            {
                using (var container = new DummyContainer(root))
                {
                    inserter.Run(container);
                }
            }
            else
            {
                var terminator = new EofToken(lexer.Buffer);
                root.AppendNewChild(terminator);
                inserter.Run(root);
                root.DeleteChildRange(terminator, terminator);
            }
        }
コード例 #2
0
 public IFile ParseFile()
 {
     return(myCommonIdentifierIntern.DoWithIdentifierIntern(intern =>
     {
         myTokenIntern = intern;
         var file = (LexFile)parseLexFile();
         InsertMissingTokens(file, false, intern);
         myTokenIntern = null;
         return file;
     }));
 }
コード例 #3
0
 public IFile ParseFile()
 {
     return commonIdentifierIntern.DoWithIdentifierIntern(intern =>
     {
         myTokenIntern = intern;
         var file = (NTriplesFile)parseNTriplesFile();
         InsertMissingTokens(file, false, intern);
         myTokenIntern = null;
         return file;
     });
 }
コード例 #4
0
        public static void Run(
            TreeElement node,
            ILexer lexer,
            ITokenOffsetProvider offsetProvider,
            bool trimTokens,
            SeldomInterruptChecker interruptChecker,
            ITokenIntern intern)
        {
            Assertion.Assert(node.parent == null, "node.parent == null");

            var root = node as CompositeElement;

            if (root == null)
            {
                return;
            }

            var inserter = new NTriplesMissingTokensInserter(lexer, offsetProvider, interruptChecker, intern);

            lexer.Start();

            if (trimTokens)
            {
                using (var container = new DummyContainer(root))
                {
                    inserter.Run(container);
                }
            }
            else
            {
                var terminator = new EofToken(lexer.Buffer);
                root.AppendNewChild(terminator);
                inserter.Run(root);
                root.DeleteChildRange(terminator, terminator);
            }
        }
コード例 #5
0
 public TokenFactory(ITokenIntern identifierIntern) =>
コード例 #6
0
        //private new readonly DataIntern<string> myWhitespaceIntern = new DataIntern<string>();

        private LexMissingTokensInserter(ILexer lexer, ITokenOffsetProvider offsetProvider, SeldomInterruptChecker interruptChecker, ITokenIntern intern)
            : base(offsetProvider, interruptChecker, intern)
        {
            myLexer = lexer;
        }
コード例 #7
0
        private void InsertMissingTokens(TreeElement root, ITokenIntern intern)
        {
            var interruptChecker = new SeldomInterruptChecker();

            ShaderLabMissingTokensInserter.Run(root, myOriginalLexer, this, interruptChecker, intern);
        }
コード例 #8
0
        public static void Run(TreeElement node, ILexer lexer, ITokenOffsetProvider offsetProvider, ShaderLabPreProcessor preProcessor, SeldomInterruptChecker interruptChecker, ITokenIntern intern)
        {
            Assertion.Assert(node.parent == null, "node.parent == null");

            var root = node as CompositeElement;

            if (root == null)
            {
                return;
            }

            // Append an EOF token so we insert filtered tokens right up to
            // the end of the file
            var eof = new EofToken(lexer.Buffer.Length);

            root.AppendNewChild(eof);

            var inserter = new ShaderLabMissingTokensInserter(lexer, offsetProvider, preProcessor, interruptChecker, intern);

            // Reset the lexer, walk the tree and call ProcessLeafElement on each leaf element
            lexer.Start();
            inserter.Run(root);

            root.DeleteChildRange(eof, eof);
        }
コード例 #9
0
 private ShaderLabMissingTokensInserter(ILexer lexer, ITokenOffsetProvider offsetProvider, ShaderLabPreProcessor preProcessor, SeldomInterruptChecker interruptChecker, ITokenIntern intern)
     : base(offsetProvider, interruptChecker, intern)
 {
     myLexer        = lexer;
     myPreProcessor = preProcessor;
 }
コード例 #10
0
 private T4MissingTokenInserter(
     ILexer lexer,
     ITokenOffsetProvider offsetProvider,
     ITokenIntern intern
     ) : base(offsetProvider, intern) => myLexer = lexer;
コード例 #11
0
 private void InsertMissingTokens(TreeElement result, bool trimMissingTokens, ITokenIntern intern)
 {
     LexMissingTokensInserter.Run(result, myOriginalLexer, this, trimMissingTokens, myCheckForInterrupt, intern);
 }
コード例 #12
0
 private TreeElement PrepareElement(TreeElement compositeElement, bool trimMissingTokens, ITokenIntern intern)
 {
     InsertMissingTokens(compositeElement, trimMissingTokens, intern);
     return(compositeElement);
 }
コード例 #13
0
 private void InsertMissingTokens(TreeElement result, bool trimMissingTokens, ITokenIntern intern)
 {
     NTriplesMissingTokensInserter.Run(result, this.originalLexer, this, trimMissingTokens, this.myCheckForInterrupt, intern);
 }
コード例 #14
0
 private NTriplesMissingTokensInserter(
     ILexer lexer, ITokenOffsetProvider offsetProvider, SeldomInterruptChecker interruptChecker, ITokenIntern intern)
     : base(offsetProvider, interruptChecker, intern)
 {
     this.myLexer = lexer;
 }