Beispiel #1
0
 public ImportedTokensDocument(CopyDirective copyDirective, ProcessedTokensDocument importedDocumentSource, PerfStatsForImportedDocument perfStats)
 {
     CopyDirective                = copyDirective;
     SourceDocument               = importedDocumentSource;
     HasReplacingDirective        = copyDirective.ReplaceOperations.Count > 0;
     PerfStatsForImportedDocument = perfStats;
 }
Beispiel #2
0
        public ImportedToken(Token originalToken, CopyDirective copyDirective)
            : base(originalToken.TokenType, originalToken.StartIndex, originalToken.StopIndex, originalToken.UsesVirtualSpaceAtEndOfLine, originalToken.TokensLine,
                   originalToken.HasOpeningDelimiter, originalToken.HasClosingDelimiter, originalToken.ExpectedClosingDelimiter)
        {
            this.OriginalToken = originalToken;
            this.CopyDirective = copyDirective;

            HasError       = originalToken.HasError;
            UsesDelimiters = originalToken.UsesDelimiters;
            LiteralValue   = originalToken.LiteralValue;
        }
        /// <summary>
        /// Implement COPY REPLACING on top of an underlying tokens line iterator
        /// </summary>
        public ReplaceTokensLinesIterator(ITokensLinesIterator sourceIterator, CopyDirective copyReplacingDirective)
        {
            this.sourceIterator         = sourceIterator;
            this.CopyReplacingDirective = copyReplacingDirective;

            if (copyReplacingDirective.ReplaceOperations.Count > 0)
            {
                if (copyReplacingDirective.ReplaceOperations.Count == 1)
                {
                    currentPosition.ReplaceOperation = copyReplacingDirective.ReplaceOperations[0];
                }
                else
                {
                    currentPosition.ReplaceOperations = copyReplacingDirective.ReplaceOperations;
                }
            }
        }
Beispiel #4
0
        private void CalculateIsAcrossSourceFile()
        {
            if (_isAcrossSourceFile == null || _isInsideCopy == null)
            {
                FirstCopyDirective = null;
                CopyDirective firstSource = null; //null = in the main source file

                if (ConsumedTokens != null && ConsumedTokens.Count > 1)
                {
                    //Get CopyDirective of first ConsumedToken
                    var firstConsumedToken = ConsumedTokens[0] as ImportedToken;
                    if (firstConsumedToken != null)
                    {
                        firstSource = firstConsumedToken.CopyDirective;
                    }

                    foreach (var consumedToken in ConsumedTokens)
                    {
                        var           it            = consumedToken as ImportedToken;
                        CopyDirective copyDirective = it != null ? it.CopyDirective : null;
                        if (copyDirective != firstSource)
                        {
                            _isAcrossSourceFile = true;
                            _isInsideCopy       = true;
                            FirstCopyDirective  = copyDirective ?? firstSource;
                            return;
                        }
                    }
                    _isAcrossSourceFile = false;
                    _isInsideCopy       = firstSource != null;
                    FirstCopyDirective  = firstSource;
                }
                else
                {
                    _isInsideCopy       = false;
                    _isAcrossSourceFile = false;
                }
            }
        }
Beispiel #5
0
        public override void EnterExecSqlIncludeStatement(CobolCompilerDirectivesParser.ExecSqlIncludeStatementContext context)
        {
            var copyDirective = new CopyDirective(CompilerDirectiveType.EXEC_SQL_INCLUDE, ParseTreeUtils.GetFirstToken(context.EXEC()));

            CompilerDirective = copyDirective;

            if (context.copyCompilerStatementBody() != null)
            {
                var textNameContext = context.copyCompilerStatementBody().qualifiedTextName().textName();
                if (textNameContext != null)
                {
                    string textName = GetTextName(textNameContext);
                    copyDirective.TextName       = textName;
                    copyDirective.TextNameSymbol = ParseTreeUtils.GetFirstToken(textNameContext);
                }

                var libraryNameContext = context.copyCompilerStatementBody().qualifiedTextName().libraryName();
                if (libraryNameContext != null)
                {
                    copyDirective.LibraryName       = GetLibraryName(libraryNameContext);
                    copyDirective.LibraryNameSymbol = ParseTreeUtils.GetFirstToken(libraryNameContext);
                }
            }
        }
        public virtual void EnterExecSqlIncludeStatement(Token execToken)
        {
            var copyDirective = new CopyDirective(CompilerDirectiveType.EXEC_SQL_INCLUDE, execToken);

            CompilerDirective = copyDirective;
        }