public ImportedTokensDocument(CopyDirective copyDirective, ProcessedTokensDocument importedDocumentSource, PerfStatsForImportedDocument perfStats) { CopyDirective = copyDirective; SourceDocument = importedDocumentSource; HasReplacingDirective = copyDirective.ReplaceOperations.Count > 0; PerfStatsForImportedDocument = perfStats; }
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; } } }
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; } } }
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; }