93 lines
2.3 KiB
C#
93 lines
2.3 KiB
C#
using System;
|
|
|
|
namespace System.Text.RegularExpressions.Syntax
|
|
{
|
|
// Token: 0x020002E2 RID: 738
|
|
internal class CaptureAssertion : Assertion
|
|
{
|
|
// Token: 0x06001AD3 RID: 6867 RVA: 0x00062E1C File Offset: 0x0006101C
|
|
public CaptureAssertion(Literal l)
|
|
{
|
|
this.literal = l;
|
|
}
|
|
|
|
// Token: 0x17000832 RID: 2098
|
|
// (get) Token: 0x06001AD4 RID: 6868 RVA: 0x00062E2C File Offset: 0x0006102C
|
|
// (set) Token: 0x06001AD5 RID: 6869 RVA: 0x00062E34 File Offset: 0x00061034
|
|
public CapturingGroup CapturingGroup
|
|
{
|
|
get
|
|
{
|
|
return this.group;
|
|
}
|
|
set
|
|
{
|
|
this.group = value;
|
|
}
|
|
}
|
|
|
|
// Token: 0x06001AD6 RID: 6870 RVA: 0x00062E40 File Offset: 0x00061040
|
|
public override void Compile(ICompiler cmp, bool reverse)
|
|
{
|
|
if (this.group == null)
|
|
{
|
|
this.Alternate.Compile(cmp, reverse);
|
|
return;
|
|
}
|
|
int index = this.group.Index;
|
|
LinkRef linkRef = cmp.NewLink();
|
|
if (base.FalseExpression == null)
|
|
{
|
|
cmp.EmitIfDefined(index, linkRef);
|
|
base.TrueExpression.Compile(cmp, reverse);
|
|
}
|
|
else
|
|
{
|
|
LinkRef linkRef2 = cmp.NewLink();
|
|
cmp.EmitIfDefined(index, linkRef2);
|
|
base.TrueExpression.Compile(cmp, reverse);
|
|
cmp.EmitJump(linkRef);
|
|
cmp.ResolveLink(linkRef2);
|
|
base.FalseExpression.Compile(cmp, reverse);
|
|
}
|
|
cmp.ResolveLink(linkRef);
|
|
}
|
|
|
|
// Token: 0x06001AD7 RID: 6871 RVA: 0x00062EDC File Offset: 0x000610DC
|
|
public override bool IsComplex()
|
|
{
|
|
if (this.group == null)
|
|
{
|
|
return this.Alternate.IsComplex();
|
|
}
|
|
return (base.TrueExpression != null && base.TrueExpression.IsComplex()) || (base.FalseExpression != null && base.FalseExpression.IsComplex()) || base.GetFixedWidth() <= 0;
|
|
}
|
|
|
|
// Token: 0x17000833 RID: 2099
|
|
// (get) Token: 0x06001AD8 RID: 6872 RVA: 0x00062F48 File Offset: 0x00061148
|
|
private ExpressionAssertion Alternate
|
|
{
|
|
get
|
|
{
|
|
if (this.alternate == null)
|
|
{
|
|
this.alternate = new ExpressionAssertion();
|
|
this.alternate.TrueExpression = base.TrueExpression;
|
|
this.alternate.FalseExpression = base.FalseExpression;
|
|
this.alternate.TestExpression = this.literal;
|
|
}
|
|
return this.alternate;
|
|
}
|
|
}
|
|
|
|
// Token: 0x040015B8 RID: 5560
|
|
private ExpressionAssertion alternate;
|
|
|
|
// Token: 0x040015B9 RID: 5561
|
|
private CapturingGroup group;
|
|
|
|
// Token: 0x040015BA RID: 5562
|
|
private Literal literal;
|
|
}
|
|
}
|