public override CstNode GenerateTreeFromCode(
            FileInfo codeFile, Encoding encoding = null,
            bool throwingParseError = DefaultThrowingParseError)
        {
            var time = codeFile.LastWriteTime.ToString();

            foreach (var invalidChar in Path.GetInvalidFileNameChars())
            {
                time = time.Replace(invalidChar, '_');
            }
            var cacheFileInfo =
                new FileInfo(
                    codeFile.FullName + time + Code2XmlConstants.SyntaxTreeCacheExtension);

            if (cacheFileInfo.Exists)
            {
                Console.WriteLine("Cached");
                return(CstNode.Deserialize(cacheFileInfo));
            }
            var tree = DelegatingCstGenerator.GenerateTreeFromCode(
                codeFile, encoding, throwingParseError);

            tree.Serialize(cacheFileInfo);
            Console.WriteLine("Saved");
            return(tree);
        }
        public override CstNode GenerateTreeFromCode(
            FileInfo codeFile, Encoding encoding = null,
            bool throwingParseError = DefaultThrowingParseError)
        {
            var id = codeFile.FullName + codeFile.LastWriteTime;

            if (Path2Element.ContainsKey(id))
            {
                return(Path2Element[id]);
            }
            var tree = DelegatingCstGenerator.GenerateTreeFromCode(
                codeFile, encoding, throwingParseError);

            Path2Element[id] = tree;
            return(tree);
        }
 public override CstNode GenerateTreeFromCodeFragment(TextReader codeReader)
 {
     return(DelegatingCstGenerator.GenerateTreeFromCodeFragment(codeReader));
 }
 public override CstNode GenerateTreeFromCodeFragmentText(string code)
 {
     return(DelegatingCstGenerator.GenerateTreeFromCodeFragmentText(code));
 }
 public override CstNode GenerateTreeFromCode(
     TextReader codeReader, bool throwingParseError = DefaultThrowingParseError)
 {
     return(DelegatingCstGenerator.GenerateTreeFromCode(codeReader, throwingParseError));
 }
 public override CstNode GenerateTreeFromCodeText(
     string code, bool throwingParseError = DefaultThrowingParseError)
 {
     return(DelegatingCstGenerator.GenerateTreeFromCodeText(code, throwingParseError));
 }