Represents the repetition of an expression.
Inheritance: Expression
            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;
            }
Exemple #6
0
 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;
            }