Пример #1
0
 protected void CheckParseOK(Parser p, string probe, Object expected)
 {
     Object ret = p.Parse(ToBytes(probe));
       Assert.That(ret, Is.Not.Null);
       //System.Console.WriteLine(ToString(ret));
       //System.Console.WriteLine(ToString(expected));
       if (!DeepEquals(ret, expected))
     Assert.Fail();
       else
     Assert.Pass();
 }
Пример #2
0
 public static Parser Action(Parser p, HAction action)
 {
     ulong actionNo = Hammer.RegisterAction(action);
       return new Parser(hammer.h_tag(p.wrapped, actionNo)).Pin(p).Pin(action);
 }
Пример #3
0
 public void Bind(Parser p)
 {
     hammer.h_bind_indirect(this.wrapped, p.wrapped);
 }
Пример #4
0
 internal static Parser CharParser(Parser p)
 {
     return new Parser(hammer.h_tag(p.wrapped, charify_action)).Pin(p);
 }
Пример #5
0
 internal static IntPtr[] BuildParserArray(Parser[] parsers)
 {
     IntPtr[] rlist = new IntPtr[parsers.Length+1];
       for (int i = 0; i < parsers.Length; i++)
     {
       rlist[i] = HParser.getCPtr(parsers[i].wrapped).Handle;
     }
       rlist[parsers.Length] = IntPtr.Zero;
       return rlist;
 }
Пример #6
0
 public static Parser Int_range(Parser p, System.Int64 i1, System.Int64 i2)
 {
     return new Parser(hammer.h_int_range(p.wrapped, i1, i2));
 }
Пример #7
0
 protected void CheckParseFail(Parser p, string probe)
 {
     Object ret = p.Parse(ToBytes(probe));
       Assert.That(ret, Is.Null);
 }
Пример #8
0
 public static Parser Butnot(Parser p1, Parser p2)
 {
     return new Parser(hammer.h_butnot(p1.wrapped, p2.wrapped));
 }
Пример #9
0
 public static Parser Right(Parser p1, Parser p2)
 {
     return new Parser(hammer.h_right(p1.wrapped, p2.wrapped));
 }
Пример #10
0
 public static Parser Repeat_n(Parser p, uint count)
 {
     return new Parser(hammer.h_repeat_n(p.wrapped, count));
 }
Пример #11
0
 public static Parser Optional(Parser p)
 {
     return new Parser(hammer.h_optional(p.wrapped)).Pin(p);
 }
Пример #12
0
 public static Parser Not(Parser p)
 {
     return new Parser(hammer.h_not(p.wrapped)).Pin(p);
 }
Пример #13
0
 // Multi-arg parsers
 public static Parser Middle(Parser p1, Parser p2, Parser p3)
 {
     return new Parser(hammer.h_middle(p1.wrapped, p2.wrapped, p3.wrapped));
 }
Пример #14
0
 public static Parser Many1(Parser p)
 {
     return new Parser(hammer.h_many1(p.wrapped)).Pin(p);
 }
Пример #15
0
 // 2-arg parsers
 public static Parser Left(Parser p1, Parser p2)
 {
     return new Parser(hammer.h_left(p1.wrapped, p2.wrapped)).Pin(p1).Pin(p2);
 }
Пример #16
0
 public static Parser And(Parser p)
 {
     return new Parser(hammer.h_and(p.wrapped)).Pin(p);
 }
Пример #17
0
 public static Parser AttrBool(Parser p, HPredicate predicate)
 {
     ulong predNo = Hammer.RegisterPredicate(predicate);
       return new Parser(hammer.h_tag(p.wrapped, predNo)).Pin(p).Pin(predicate);
 }
Пример #18
0
 public static Parser SepBy1(Parser p, Parser sep)
 {
     return new Parser(hammer.h_sepBy1(p.wrapped, sep.wrapped)).Pin(p);
 }
Пример #19
0
 public static Parser Difference(Parser p1, Parser p2)
 {
     return new Parser(hammer.h_difference(p1.wrapped, p2.wrapped));
 }
Пример #20
0
 public static Parser Whitespace(Parser p)
 {
     return new Parser(hammer.h_whitespace(p.wrapped)).Pin(p);
 }
Пример #21
0
 public static Parser Xor(Parser p1, Parser p2)
 {
     return new Parser(hammer.h_xor(p1.wrapped, p2.wrapped));
 }
Пример #22
0
 // 1-arg parsers
 public static Parser Ignore(Parser p)
 {
     return new Parser(hammer.h_ignore(p.wrapped)).Pin(p);
 }