protected override void WalkRepetitionExpression(RepetitionExpression repetitionExpression) { base.WalkRepetitionExpression(repetitionExpression); if (this.zeroWidth[repetitionExpression.Expression] && (repetitionExpression.Quantifier.Delimiter == null || this.zeroWidth[repetitionExpression.Quantifier.Delimiter])) { var containsAssertions = this.containsAssertions[repetitionExpression.Expression] || (repetitionExpression.Quantifier.Delimiter != null && this.containsAssertions[repetitionExpression.Quantifier.Delimiter]); var cursor = repetitionExpression.Quantifier.Start; if (repetitionExpression.Quantifier.Max == null) { if (containsAssertions) { this.result.AddCompilerError(cursor, () => Resources.PEG0021_WARNING_ZeroWidthRepetition); } else { this.result.AddCompilerError(cursor, () => Resources.PEG0021_ERROR_ZeroWidthRepetition); } } else if (repetitionExpression.Quantifier.Min != repetitionExpression.Quantifier.Max) { if (containsAssertions) { this.result.AddCompilerError(cursor, () => Resources.PEG0022_WARNING_ZeroWidthRepetition); } else { this.result.AddCompilerError(cursor, () => Resources.PEG0022_ERROR_ZeroWidthRepetition); } } } }
protected override void WalkRepetitionExpression(RepetitionExpression repetitionExpression) { if (repetitionExpression.Quantifier.Max == 0 || repetitionExpression.Quantifier.Max < repetitionExpression.Quantifier.Min) { this.result.AddCompilerError(repetitionExpression.Quantifier.Start, () => Resources.PEG0015_WARNING_QuantifierInvalid); } if (repetitionExpression.Quantifier.Max == 1 && repetitionExpression.Quantifier.Delimiter != null) { this.result.AddCompilerError(repetitionExpression.Quantifier.Start, () => Resources.PEG0024_WARNING_UnusedDelimiter); } base.WalkRepetitionExpression(repetitionExpression); }
protected virtual void WalkRepetitionExpression(RepetitionExpression repetitionExpression) { this.WalkExpression(repetitionExpression.Expression); if (repetitionExpression.Quantifier.Delimiter != null) { this.WalkExpression(repetitionExpression.Quantifier.Delimiter); } }
protected override void WalkRepetitionExpression(RepetitionExpression repetitionExpression) { base.WalkRepetitionExpression(repetitionExpression); this.Set(repetitionExpression, repetitionExpression.Expression, type => "IList<" + type + ">"); }
protected override void WalkRepetitionExpression(RepetitionExpression repetitionExpression) { base.WalkRepetitionExpression(repetitionExpression); var result = this.containsAssertions[repetitionExpression.Expression]; if (repetitionExpression.Quantifier.Delimiter != null) { result |= this.containsAssertions[repetitionExpression.Quantifier.Delimiter]; } this.containsAssertions[repetitionExpression] = result; }
protected override void WalkRepetitionExpression(RepetitionExpression repetitionExpression) => this.RenderRepetitionExpression(repetitionExpression, this.writer, this.currentIndentation);
protected override void WalkRepetitionExpression(RepetitionExpression repetitionExpression) { base.WalkRepetitionExpression(repetitionExpression); bool? result; if (repetitionExpression.Quantifier.Min == 0) { result = true; } else if (repetitionExpression.Quantifier.Min <= 1 || repetitionExpression.Quantifier.Delimiter == null) { result = this.zeroWidth[repetitionExpression.Expression]; } else { result = this.zeroWidth[repetitionExpression.Expression] & this.zeroWidth[repetitionExpression.Quantifier.Delimiter]; } this.zeroWidth[repetitionExpression] = result; }