scripts
This commit is contained in:
@@ -0,0 +1,151 @@
|
||||
using System;
|
||||
|
||||
namespace System.Text.RegularExpressions.Syntax
|
||||
{
|
||||
// Token: 0x020002E0 RID: 736
|
||||
internal class Repetition : CompositeExpression
|
||||
{
|
||||
// Token: 0x06001AC1 RID: 6849 RVA: 0x00062B40 File Offset: 0x00060D40
|
||||
public Repetition(int min, int max, bool lazy)
|
||||
{
|
||||
base.Expressions.Add(null);
|
||||
this.min = min;
|
||||
this.max = max;
|
||||
this.lazy = lazy;
|
||||
}
|
||||
|
||||
// Token: 0x1700082C RID: 2092
|
||||
// (get) Token: 0x06001AC2 RID: 6850 RVA: 0x00062B6C File Offset: 0x00060D6C
|
||||
// (set) Token: 0x06001AC3 RID: 6851 RVA: 0x00062B7C File Offset: 0x00060D7C
|
||||
public Expression Expression
|
||||
{
|
||||
get
|
||||
{
|
||||
return base.Expressions[0];
|
||||
}
|
||||
set
|
||||
{
|
||||
base.Expressions[0] = value;
|
||||
}
|
||||
}
|
||||
|
||||
// Token: 0x1700082D RID: 2093
|
||||
// (get) Token: 0x06001AC4 RID: 6852 RVA: 0x00062B8C File Offset: 0x00060D8C
|
||||
// (set) Token: 0x06001AC5 RID: 6853 RVA: 0x00062B94 File Offset: 0x00060D94
|
||||
public int Minimum
|
||||
{
|
||||
get
|
||||
{
|
||||
return this.min;
|
||||
}
|
||||
set
|
||||
{
|
||||
this.min = value;
|
||||
}
|
||||
}
|
||||
|
||||
// Token: 0x1700082E RID: 2094
|
||||
// (get) Token: 0x06001AC6 RID: 6854 RVA: 0x00062BA0 File Offset: 0x00060DA0
|
||||
// (set) Token: 0x06001AC7 RID: 6855 RVA: 0x00062BA8 File Offset: 0x00060DA8
|
||||
public int Maximum
|
||||
{
|
||||
get
|
||||
{
|
||||
return this.max;
|
||||
}
|
||||
set
|
||||
{
|
||||
this.max = value;
|
||||
}
|
||||
}
|
||||
|
||||
// Token: 0x1700082F RID: 2095
|
||||
// (get) Token: 0x06001AC8 RID: 6856 RVA: 0x00062BB4 File Offset: 0x00060DB4
|
||||
// (set) Token: 0x06001AC9 RID: 6857 RVA: 0x00062BBC File Offset: 0x00060DBC
|
||||
public bool Lazy
|
||||
{
|
||||
get
|
||||
{
|
||||
return this.lazy;
|
||||
}
|
||||
set
|
||||
{
|
||||
this.lazy = value;
|
||||
}
|
||||
}
|
||||
|
||||
// Token: 0x06001ACA RID: 6858 RVA: 0x00062BC8 File Offset: 0x00060DC8
|
||||
public override void Compile(ICompiler cmp, bool reverse)
|
||||
{
|
||||
if (this.Expression.IsComplex())
|
||||
{
|
||||
LinkRef linkRef = cmp.NewLink();
|
||||
cmp.EmitRepeat(this.min, this.max, this.lazy, linkRef);
|
||||
this.Expression.Compile(cmp, reverse);
|
||||
cmp.EmitUntil(linkRef);
|
||||
}
|
||||
else
|
||||
{
|
||||
LinkRef linkRef2 = cmp.NewLink();
|
||||
cmp.EmitFastRepeat(this.min, this.max, this.lazy, linkRef2);
|
||||
this.Expression.Compile(cmp, reverse);
|
||||
cmp.EmitTrue();
|
||||
cmp.ResolveLink(linkRef2);
|
||||
}
|
||||
}
|
||||
|
||||
// Token: 0x06001ACB RID: 6859 RVA: 0x00062C58 File Offset: 0x00060E58
|
||||
public override void GetWidth(out int min, out int max)
|
||||
{
|
||||
this.Expression.GetWidth(out min, out max);
|
||||
min *= this.min;
|
||||
if (max == 2147483647 || this.max == 65535)
|
||||
{
|
||||
max = int.MaxValue;
|
||||
}
|
||||
else
|
||||
{
|
||||
max *= this.max;
|
||||
}
|
||||
}
|
||||
|
||||
// Token: 0x06001ACC RID: 6860 RVA: 0x00062CB0 File Offset: 0x00060EB0
|
||||
public override AnchorInfo GetAnchorInfo(bool reverse)
|
||||
{
|
||||
int fixedWidth = base.GetFixedWidth();
|
||||
if (this.Minimum == 0)
|
||||
{
|
||||
return new AnchorInfo(this, fixedWidth);
|
||||
}
|
||||
AnchorInfo anchorInfo = this.Expression.GetAnchorInfo(reverse);
|
||||
if (anchorInfo.IsPosition)
|
||||
{
|
||||
return new AnchorInfo(this, anchorInfo.Offset, fixedWidth, anchorInfo.Position);
|
||||
}
|
||||
if (!anchorInfo.IsSubstring)
|
||||
{
|
||||
return new AnchorInfo(this, fixedWidth);
|
||||
}
|
||||
if (anchorInfo.IsComplete)
|
||||
{
|
||||
string substring = anchorInfo.Substring;
|
||||
StringBuilder stringBuilder = new StringBuilder(substring);
|
||||
for (int i = 1; i < this.Minimum; i++)
|
||||
{
|
||||
stringBuilder.Append(substring);
|
||||
}
|
||||
return new AnchorInfo(this, 0, fixedWidth, stringBuilder.ToString(), anchorInfo.IgnoreCase);
|
||||
}
|
||||
return new AnchorInfo(this, anchorInfo.Offset, fixedWidth, anchorInfo.Substring, anchorInfo.IgnoreCase);
|
||||
}
|
||||
|
||||
// Token: 0x040015B5 RID: 5557
|
||||
private int min;
|
||||
|
||||
// Token: 0x040015B6 RID: 5558
|
||||
private int max;
|
||||
|
||||
// Token: 0x040015B7 RID: 5559
|
||||
private bool lazy;
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user