protected virtual IAcceptInputTransition <T> ActivateRegexNFATransitionFromRegexRange(RegexRange <T> regex) { if (regex == null) { throw new ArgumentNullException(nameof(regex)); } return(new BasicRegexFATransition <T>(regex.Condition)); }
protected override IAcceptInputTransition <T> ActivateRegexNFATransitionFromRegexRange(RegexRange <T> regex) { if (regex == null) { throw new ArgumentNullException(nameof(regex)); } if (this.AccreditedSet.Any(t => regex.Condition(t))) { return(BasicRegexFATransition <T> .Adapt(new RangeSetRegexFATransition <T, BasicRegexNFAState <T> >(new RangeSet <T>(new[] { (IRange <T>)regex }, this.rangeSet.RangeInfo)))); } else { return(new BasicRegexFATransition <T>(t => false)); } }
protected override IAcceptInputTransition <T> ActivateRegexNFATransitionFromRegexRange(RegexRange <T> regex) { if (regex == null) { throw new ArgumentNullException(nameof(regex)); } var result = this.DynamicInvokeShunt(BasicRegexStateMachineActivationContextInfo <T> .ActivateRegexNFATransitionFromRegexRangeSource, regex); if (result.Success) { return((IAcceptInputTransition <T>)result.ReturnValue); } else { if (this.AccreditedSet.Any(t => regex.Condition(t))) { return(new RangeSetRegexFATransition <T, BasicRegexNFAState <T> >(new RangeSet <T>(new[] { (IRange <T>)regex }, this.rangeInfo))); } else { return(new BasicRegexFATransition <T, BasicRegexNFAState <T> >(t => false)); } } }
public RangeDebugView(RegexRange <T> regex) { this.regex = regex; }
private void _epasaRegexButton_Click(object sender, EventArgs e) { try { //var unescapedSafeAnsiCharPattern = // RegexPattern.With.Set(RegexPattern.With.Literal(SafeUnescapedAnsiCharSet)); var unescapedSafeAnsiCharPatterns = SafeUnescapedAnsiCharSet .Select(c => RegexPattern.With.Literal(c.ToString())); var escapedSafeAnsiCharPatterns = SafeEscapedAnsiCharSet .Select(c => RegexPattern.With.Literal("\\").Literal(c.ToString())); var safeAnsiCharPattern = RegexPattern.With.Choice.EitherAny( unescapedSafeAnsiCharPatterns.Concat(escapedSafeAnsiCharPatterns).ToArray() ); var safeAnsiStringPattern = new RegexPattern(safeAnsiCharPattern) .Repeat.OneOrMore; var pascal64StartPattern = RegexPattern.With .Set(RegexPattern.With.Literal(Pascal64StartCharSet, true)); // account name needs to omit brackets! var pascal64StringPattern = new RegexPattern(pascal64StartPattern) .Set(RegexPattern.With.Literal(Pascal64CharSet, true)).Repeat.InRange(2, 63); var hexNibblePattern = RegexPattern.With .Set(RegexRange.OfMany(Tuple.Create('0', '9'), Tuple.Create('a', 'f'))); var hexBytePattern = RegexPattern.With .Group( new RegexPattern(hexNibblePattern).Repeat.Exactly(2) ); var hexStringPattern = new RegexPattern(hexBytePattern).Repeat.OneOrMore; var base58CharPattern = RegexPattern.With .Set(RegexPattern.With.Literal(Base58CharSet)); var base58StringPattern = new RegexPattern(base58CharPattern).Repeat.OneOrMore; var integerPattern = RegexPattern .With.Digit.Repeat.OneOrMore; var accountNamePattern = RegexPattern .With.NamedGroup("AccountName", pascal64StringPattern); var accountNumberPattern = RegexPattern .With.NamedGroup("AccountNumber", integerPattern) .Literal("-") .NamedGroup("Checksum", RegexPattern.With.Digit.Repeat.Exactly(2)); var pasaPattern = RegexPattern .With.Choice.Either(accountNamePattern, accountNumberPattern); var payloadPattern = RegexPattern.With .Choice.EitherAny( RegexPattern.With.NamedGroup("ASCIIPayload", RegexPattern.With.Literal("\"").Group(safeAnsiStringPattern).Literal("\"")).Repeat.Optional, RegexPattern.With.NamedGroup("HexPayload", RegexPattern.With.Literal("0x").Group(hexStringPattern)).Repeat.Optional, RegexPattern.With.NamedGroup("Base58Payload", base58StringPattern).Repeat.Optional ); var publicPayloadPattern = RegexPattern.With .Literal("[") .NamedGroup("NoEncryption", payloadPattern).Repeat.Optional .Literal("]", true); var receiverPayloadPattern = RegexPattern.With .Literal("(") .NamedGroup("ReceiverEncrypted", payloadPattern).Repeat.Optional .Literal(")"); var senderPayloadPattern = RegexPattern.With .Literal("<") .NamedGroup("SenderEncrypted", payloadPattern).Repeat.Optional .Literal(">"); var aesPayloadPattern = RegexPattern.With .Literal("<") .NamedGroup("AESEncrypted", payloadPattern).Repeat.Optional .Literal(">") .Literal(":") .NamedGroup("Password", safeAnsiStringPattern); var extendedAddressPattern = RegexPattern.With .Choice.EitherAny( publicPayloadPattern, receiverPayloadPattern, senderPayloadPattern, aesPayloadPattern ); var epasaChecksumPattern = new RegexPattern(hexBytePattern) .Repeat.Exactly(2); var epasaPattern = RegexPattern .With.AtBeginning .NamedGroup("PASA", pasaPattern) .RegEx(new RegexPattern(extendedAddressPattern)).Repeat.Optional .Group( RegexPattern.With .Literal(":") .NamedGroup("EPASAChecksum", epasaChecksumPattern) .AtEnd ).Repeat.Optional; _standardTextBox.Clear(); _standardTextBox.AppendText(epasaPattern.ToString()); Match subregex; { //subregex = new Regex(unescapedSafeAnsiCharPattern, RegexOptions.None).Match("77-44[0x1234]:121f"); _standardTextBox.AppendLine("const string safeAnsiCharPattern = \"" + safeAnsiCharPattern + "\""); _standardTextBox.AppendLine("const string safeAnsiStringPattern = \"" + safeAnsiStringPattern + "\""); _standardTextBox.AppendLine("const string pascal64StartPattern = \"" + pascal64StartPattern + "\""); _standardTextBox.AppendLine("const string pascal64StringPattern = \"" + pascal64StringPattern + "\""); _standardTextBox.AppendLine("const string hexNibblePattern = \"" + hexNibblePattern + "\""); _standardTextBox.AppendLine("const string hexBytePattern = \"" + hexBytePattern + "\""); _standardTextBox.AppendLine("const string hexStringPattern = \"" + hexStringPattern + "\""); _standardTextBox.AppendLine("const string base58CharPattern = \"" + base58CharPattern + "\""); _standardTextBox.AppendLine("const string base58StringPattern = \"" + base58StringPattern + "\""); _standardTextBox.AppendLine("const string integerPattern = \"" + integerPattern + "\""); _standardTextBox.AppendLine("const string accountNamePattern = \"" + accountNamePattern + "\""); _standardTextBox.AppendLine("const string accountNumberPattern = \"" + accountNumberPattern + "\""); _standardTextBox.AppendLine("const string pasaPattern = \"" + pasaPattern + "\""); _standardTextBox.AppendLine("const string payloadPattern = \"" + payloadPattern + "\""); _standardTextBox.AppendLine("const string publicPayloadPattern = \"" + publicPayloadPattern + "\""); _standardTextBox.AppendLine("const string receiverPayloadPattern = \"" + receiverPayloadPattern + "\""); _standardTextBox.AppendLine("const string senderPayloadPattern = \"" + senderPayloadPattern + "\""); _standardTextBox.AppendLine("const string aesPayloadPattern = \"" + aesPayloadPattern + "\""); _standardTextBox.AppendLine("const string extendedAddressPattern = \"" + extendedAddressPattern + "\""); _standardTextBox.AppendLine("const string epasaChecksumPattern = \"" + epasaChecksumPattern + "\""); _standardTextBox.AppendLine("const string epasaPattern = \"" + epasaPattern + "\""); } _standardTextBox.AppendLine(""); var regex = new Regex(epasaPattern, RegexOptions.None); var result = regex.Match("77-44[0x123]:121f"); result = regex.Match("77-44[0x123]"); result = regex.Match("77-44[B58xdf]:121f"); result = regex.Match("77-44"); result = regex.Match("account-name"); result = regex.Match("account-name:abcd"); _standardTextBox.AppendLine(result.ToString()); } catch (Exception error) { ExceptionDialog.Show(this, error); } }