public IMatch Match(string myString) { var authority = new Sequance(new Optional(new Sequance(new Userinfo(), new Character('@'))), new Host(), new Optional(new Port())); return(authority.Match(myString)); }
public RequestLine() { var token = new OneOrMore(new Choice( new Character('!'), new Range('#', '\''), new Range('*', '+'), new Range('-', '.'), new Range('^', '`'), new Range('0', '9'), new Range('a', 'z'), new Range('A', 'Z'), new Character('|'), new Character('~'))); var digits = new OneOrMore(new Range('0', '9')); var extensionMethod = token; var method = new Choice( new Text("OPTIONAL"), new Text("GET"), new Text("HEAD"), new Text("POST"), new Text("PUT"), new Text("DELETE"), new Text("CONNECT"), new Text("TRACE")); var slash = new Character('/'); var period = new Character('.'); var space = new Character(' '); var lineEnd = new Text("\r\n"); var httpVersion = new Sequance(new Text("HTTP"), slash, digits, period, digits); this.pattern = new Sequance(method, space, new RequestURI(), space, httpVersion, lineEnd); }
public IMatch Match(string myString) { IPattern method = new Choice(new Text("OPTIONS"), new Text("GET"), new Text("HEAD"), new Text("POST"), new Text("PUT"), new Text("DELETE"), new Text("TRACE"), new Text("CONNECT")); IPattern requestLine = new Sequance(method, new Text("HTTP/1.1\r")); return(requestLine.Match(myString)); }
public IMatch Match(string myString) { var uri = new Sequance(new Optional(new Scheme()), new Optional(new Text("//")), new Optional(new Authority()), new Path(), new Optional(new Sequance(new Character('?'), new Querry())), new Optional(new Sequance(new Character('#'), new Fragment()))); return(uri.Match(myString)); }
public IMatch Match(string scheme) { var alpha = new Choice(new Range('a', 'z'), new Range('A', 'Z')); var schemeContent = new Sequance(alpha, new OneOrMore(new Choice(alpha, new Range('0', '9'), new Any("+-.")))); var schemeEndChar = new Character(':'); var schemeComplete = new Sequance(schemeContent, schemeEndChar); return(schemeComplete.Match(scheme)); }
public IMatch Match(string myString) { var digit = new Range('0', '9'); var maxPort = new Sequance(new Range('6', '6'), new Range('5', '5'), new Range('0', '5'), new Range('0', '3'), new Range('0', '5')); var maxPortTwo = new Sequance(new Range('0', '6'), new Range('0', '4'), new Many(digit, 1, 4)); var port = new Sequance(new Character(':'), new Choice(maxPort, maxPortTwo, new Many(digit, 1, 4))); return(port.Match(myString)); }
public void ForabcdForabShouldReturncdForTrue() { var ab = new Sequance( new Character('a'), new Character('b')); IMatch actual = ab.Match("abcd"); Assert.Equal("cd", actual.RemainingText()); }
public void ForNullShouldReturnNull() { var ab = new Sequance( new Character('a'), new Character('b')); IMatch actual = ab.Match(null); Assert.Null(actual.RemainingText()); }
public void ForNullShouldReturnfalse() { var ab = new Sequance( new Character('a'), new Character('b')); IMatch actual = ab.Match(null); Assert.False(actual.Succes()); }
public void ForabcdForabShouldReturnTrue() { var ab = new Sequance( new Character('a'), new Character('b')); IMatch actual = ab.Match("abcd"); Assert.True(actual.Succes()); }
public void ForEmptyStringShouldReturnEmptyString() { var ab = new Sequance( new Character('a'), new Character('b')); IMatch actual = ab.Match(""); Assert.Equal("", actual.RemainingText()); }
public void ForEmptyStringShouldReturnFalse() { var ab = new Sequance( new Character('a'), new Character('b')); IMatch actual = ab.Match(""); Assert.False(actual.Succes()); }
public void ForStringdefForabShouldReturndefWhenFalse() { var ab = new Sequance( new Character('a'), new Character('b')); IMatch actual = ab.Match("def"); Assert.Equal("def", actual.RemainingText()); }
public IMatch Match(string myString) { Choice alpha = new Choice(new Range('a', 'z'), new Range('A', 'Z')); Range digit = new Range('0', '9'); Choice unreserved = new Choice(alpha, digit, new Any("-._~")); Any subDelims = new Any("!$&'()*+,;="); Sequance usserInfo = new Sequance(unreserved, new Many(new Choice(unreserved, subDelims)), new Character(':')); return(usserInfo.Match(myString)); }
public void TestMatch_RemainingText() { var digit = new Sequance( new Character('0'), new Character('1'), new Range('A', 'E') ); var answear = digit.Match("01AF"); Assert.Equal("F", answear.RemainingText()); }
public void For_String_def_For_a_b_Should_Return_def_When_False() { var ab = new Sequance( new Character('a'), new Character('b') ); IMatch actual = ab.Match("def"); Assert.Equal("def", actual.RemainingText()); }
public void For_def_For_a_b_Should_Return_False() { var ab = new Sequance( new Character('a'), new Character('b') ); IMatch actual = ab.Match("def"); Assert.False(actual.Succes()); }
public void TestListJsonString(string remainingText) { var digits = new OneOrMore(new Ranges('0', '9')); var whitespace = new Many(new Any(" \r\n\t")); var separator = new Sequance(whitespace, new Charact(';'), whitespace); var list = new MyList(digits, separator); var match = list.Match("1; 22 ;\n 333 \t; 22"); Assert.True(match.Success()); Assert.Equal(remainingText, match.RemainingText()); }
public void ForStringabcShouldReturnabc() { var digits = new OneOrMore(new Range('0', '9')); var whitespace = new Many(new Any(" \r\n\t")); var separator = new Sequance(whitespace, new Character(';'), whitespace); var list = new List(digits, separator); IMatch actual = list.Match("abc"); Assert.Equal("abc", actual.RemainingText()); }
public void ForDigitsSeparatorsNewLineAndTabShouldReturnEmptyString() { var digits = new OneOrMore(new Range('0', '9')); var whitespace = new Many(new Any(" \r\n\t")); var separator = new Sequance(whitespace, new Character(';'), whitespace); var list = new List(digits, separator); IMatch actual = list.Match("1; 22 ;\n 333 \t; 22"); Assert.Equal(string.Empty, actual.RemainingText()); }
public void For_Number_And_NewLine_Should_Return_NewLine() { var digits = new OneOrMore(new Range('0', '9')); var whitespace = new Many(new Any(" \r\n\t")); var separator = new Sequance(whitespace, new Character(';'), whitespace); var list = new List(digits, separator); IMatch actual = list.Match("1 \n"); Assert.Equal(" \n", actual.RemainingText()); //IMatch actual = list.Match("1; 22 ;\n 333 "); //Assert.Equal(string.Empty, actual.RemainingText()); }
public void For_ax_String_abc_Character_shoud_Return_False_And_ax() { var ab = new Sequance( new Character('a'), new Character('b')); var abc = new Sequance( ab, new Character('c')); IMatch actual = abc.Match("ax"); Assert.Equal("ax", actual.RemainingText()); }
public void For_ax_String_abc_Character_shoud_Return_False() { var ab = new Sequance( new Character('a'), new Character('b')); var abc = new Sequance( ab, new Character('c')); IMatch actual = abc.Match("ax"); Assert.False(actual.Succes()); }
public void ForaxStringabcCharactershoudReturnFalse() { var ab = new Sequance( new Character('a'), new Character('b')); var abc = new Sequance( ab, new Character('c')); IMatch actual = abc.Match("ax"); Assert.False(actual.Succes()); }
public void ForaxStringabcCharactershoudReturnFalseAndax() { var ab = new Sequance( new Character('a'), new Character('b')); var abc = new Sequance( ab, new Character('c')); IMatch actual = abc.Match("ax"); Assert.Equal("ax", actual.RemainingText()); }
public IMatch Match(string myString) { var unreserved = new Choice(new Range('a', 'z'), new Range('A', 'Z'), new Range('0', '9'), new Any("._~")); var subDelims = new Any("!$&'()*+,;="); var pathAbempty = new OneOrMore(new Sequance(new Character('/'), new OneOrMore(new Pchar()))); var pathAbsolute = new Sequance(new Character('/'), new OneOrMore(new Sequance(new Pchar(), new OneOrMore(new Sequance(new Character('/'), new OneOrMore(new Pchar())))))); var pathNoscheme = new Sequance(new Choice(unreserved, subDelims, new Character('@')), new OneOrMore(new Sequance(new Character('/'), new OneOrMore(new Pchar())))); var pathRootless = new Sequance(new Pchar(), new OneOrMore(new Sequance(new Character('/'), new OneOrMore(new Pchar())))); var pathEmpty = new Character('/'); var path = new Choice(pathAbempty, pathAbsolute, pathNoscheme, pathRootless, pathEmpty); return(path.Match(myString)); }
public HttpUri() { var alpha = new Choice(new Range('a', 'z'), new Range('A', 'Z')); var digit = new Range('0', '9'); var scheme = new Sequance(alpha, new Choice(alpha, digit, new Any("+-."))); var hex = new Choice(digit, new Range('A', 'F'), new Range('a', 'f')); var escaped = new Sequance(new Character('%'), hex, hex); var alphanum = new Choice(alpha, digit); var mark = new Any("-_.!~*'()"); var unreserved = new Choice(alphanum, mark); var userinfo = new Many(new Choice(unreserved, escaped, new Any(";:&=+$,"))); var IPv4address = new Many(new Many(digit, 1, 3), 4, 4); var domainlabel = new Choice(alphanum, new Sequance(alphanum, new Many(new Choice(alphanum, new Character('-'))), alphanum)); var toplabel = new Choice(alpha, new Sequance(alpha, new Many(new Choice(alphanum, new Character('-'))), alphanum)); var hostname = new Sequance(new Many (new Sequance(domainlabel, new Character('.'))), toplabel, new Optional(new Character('.'))); var host = new Choice(hostname, IPv4address); var port = new Many(digit); var hostport = new Sequance(host, new Optional(new Sequance(new Character(';'), port))); var server = new Optional( new Sequance(new Optional(new Sequance(userinfo, new Character('@'))), hostport)); var reg_name = new Many(new Choice(unreserved, escaped, new Any("$,;:@&=+"))); var authority = new Choice(server, reg_name); var pchar = new Choice(unreserved, escaped, new Any(":@&=+$,")); var param = new Many(pchar); var segment = new Sequance(new Many(pchar), new Many(new Sequance(new Character(';'), param))); var path_segments = new Sequance(segment, new Many(new Sequance(new Character('/'), segment))); var abs_path = new Sequance(new Character('/'), path_segments); var reserved = new Any(";/?:@&=+$,"); var uric = new Choice(reserved, unreserved, escaped); var uric_no_slash = new Choice(unreserved, escaped, new Any(";?:@&=+$,")); var opaque_part = new Sequance(uric_no_slash, new Many(uric)); var path = new Optional(new Choice(abs_path, opaque_part)); var query = new Many(uric); var fragment = new Many(uric); var rel_segment = new OneOrMore(new Choice(unreserved, escaped, new Any(":@&=+$,"))); var rel_path = new Sequance(rel_segment, new Optional(abs_path)); var net_path = new Sequance(new Text("//"), authority, new Optional(abs_path)); var hier_part = new Sequance(new Choice(net_path, abs_path), new Optional(new Sequance(new Character('?'), query))); var relativeURI = new Sequance(new Choice(net_path, abs_path, rel_path), new Optional(new Sequance(new Character('?'), query))); var absoluteURI = new Sequance(scheme, new Character(':'), new Choice(hier_part, opaque_part)); pattern = new Choice(absoluteURI, relativeURI); }
public void TestSequanceOfCharSuccess(string text, string remaining) { var ab = new Sequance( new Charact('a'), new Charact('b') ); var abc = new Sequance( ab, new Charact('c') ); var match = abc.Match(text); Assert.True(match.Success()); Assert.Equal(remaining, match.RemainingText()); }
public void For_abc_Should_Return_abc() { var hex = new Choice( new Range('0', '9'), new Range('a', 'f'), new Range('A', 'F')); var hexSeq = new Sequance( new Character('u'), new Sequance( hex, hex, hex, hex)); IMatch actual = hexSeq.Match("abc"); Assert.Equal("abc", actual.RemainingText()); }
public void For_Null_Hex_Should_Return_Null() { var hex = new Choice( new Range('0', '9'), new Range('a', 'f'), new Range('A', 'F')); var hexSeq = new Sequance( new Character('u'), new Sequance( hex, hex, hex, hex)); IMatch actual = hexSeq.Match(null); Assert.Null(actual.RemainingText()); }