Exemplo n.º 1
0
 public static Rule NoFail(Rule x)
 {
     if (x is SeqRule)
     {
         SeqRule r = new SeqRule();
         foreach (Rule child in x.Children)
             r.Add(NoFail(child));
         return r;
     }
     else
     {
         return new NoFailRule(x);
     }
 }
Exemplo n.º 2
0
 static public void TestPeg(Rule r, string s)
 {
     try
     {
         Console.WriteLine("Trying to parse input '" + s + "' according to rule " + r.ToString());
         ParseNode node = ParserState.Parse(r, s);
         if (node == null)
             Console.WriteLine("Test failed"); 
         else
             Console.WriteLine("Test succeeded, node = " + node.ToString());
     }
     catch (Exception e)
     {
         Console.WriteLine("Test failed with exception: " + e.Message);
     }
 }
Exemplo n.º 3
0
 static public void NegativeTestPeg(Rule r, string s)
 {
     try
     {
         Console.WriteLine("Trying to assure input '" + s + "' does not parse according to rule " + r.ToString());
         ParseNode node = ParserState.Parse(r, s);
         if (node == null)
             Console.WriteLine("Test passed");
         else
             Console.WriteLine("Test failed");
     }
     catch (Exception e)
     {
         Console.WriteLine("Test failed with exception: " + e.Message);
     }
 }
Exemplo n.º 4
0
 public ParseExceptionContext(string s, int begin, int end, Rule r, string msg)
 {
     location = new ParseLocation(s, begin, end);
     this.msg = msg;
     s.GetRowCol(begin, out row, out col);
     line = s.GetLine(begin);
     StringBuilder sb = new StringBuilder();
     int i = begin - 1;
     ptr = "^";
     while (i >= 0)
     {
         if (s[i] == '\n')
             break;
         if (s[i] == '\t')
             ptr = "\t" + ptr;
         else
             ptr = " " + ptr;
         --i;
     }
     sb.Append('^');
 }
Exemplo n.º 5
0
 public ChoiceRule(Rule[] xs)
 {
     foreach (Rule r in xs)
         Trace.Assert(r != null);
     mRules = xs;
 }
Exemplo n.º 6
0
 public PlusRule(Rule r)
 {
     Trace.Assert(r != null);
     mRule = r;
 }
Exemplo n.º 7
0
 public NoFailRule(Rule r, string s)
 {
     Trace.Assert(r != null);
     mRule = r;
     msMsg = s;
 }
Exemplo n.º 8
0
 public AstNodeRule(Object label, Rule r)
 {
     Trace.Assert(r != null);
     mLabel = label;
     mRule = r;
 }
Exemplo n.º 9
0
 public static Rule WhileNot(Rule elem, Rule term) { return new WhileNotRule(elem, term); }
Exemplo n.º 10
0
 public static Rule SemiColonList(Rule r)
 {
     return Opt(r + Star(Token(";") + NoFail(r)));
 }
Exemplo n.º 11
0
 public static Rule Choice(Rule x0, Rule x1, Rule x2)
 {
     return(new ChoiceRule(new Rule[] { x0, x1, x2 }));
 }
Exemplo n.º 12
0
 public static Rule Seq(Rule x0, Rule x1, Rule x2, Rule x3, Rule x4) { return new SeqRule(new Rule[] { x0, x1, x2, x3, x4 }); }
Exemplo n.º 13
0
 public static Rule Seq(Rule x0, Rule x1, Rule x2, Rule x3, Rule x4)
 {
     return(new SeqRule(new Rule[] { x0, x1, x2, x3, x4 }));
 }
Exemplo n.º 14
0
 public static Rule Seq(Rule x0, Rule x1, Rule x2, Rule x3, Rule x4, Rule x5, Rule x6)
 {
     return(new SeqRule(new Rule[] { x0, x1, x2, x3, x4, x5, x6 }));
 }
Exemplo n.º 15
0
 public static Rule Seq(Rule x0, Rule x1, Rule x2)
 {
     return(new SeqRule(new Rule[] { x0, x1, x2 }));
 }
Exemplo n.º 16
0
 public static Rule NoFail(Rule r, string s)
 {
     return(new NoFailRule(r, s));
 }
Exemplo n.º 17
0
 public static Rule AstNode(Object label, Rule x)
 {
     return(new AstNodeRule(label, x));
 }
Exemplo n.º 18
0
 public WhileNotRule(Rule elem, Rule term)
 {
     mElem = elem;
     mTerm = term;
 }
Exemplo n.º 19
0
 public static Rule Choice(Rule x0, Rule x1, Rule x2, Rule x3, Rule x4)
 {
     return(new ChoiceRule(new Rule[] { x0, x1, x2, x3, x4 }));
 }
Exemplo n.º 20
0
 public static Rule NoFail(Rule r, string s) { return new NoFailRule(r, s); }
Exemplo n.º 21
0
 public static Rule Opt(Rule x)
 {
     return(new OptRule(x));
 }
Exemplo n.º 22
0
 public WhileNotRule(Rule elem, Rule term)
 {
     mElem = elem;
     mTerm = term;
 }
Exemplo n.º 23
0
 public static Rule Star(Rule x)
 {
     return(new StarRule(x));
 }
Exemplo n.º 24
0
 public static Rule Token(Rule r)
 {
     return r + WS;
 }
Exemplo n.º 25
0
 public static Rule Plus(Rule x)
 {
     return(new PlusRule(x));
 }
Exemplo n.º 26
0
 public static Rule Bracketed(Rule r)
 {
     return (Token("[") + NoFail(r + Token("]")));
 }
Exemplo n.º 27
0
 public static Rule Not(Rule x)
 {
     return(new NotRule(x));
 }
Exemplo n.º 28
0
 public StarRule(Rule r)
 {
     Trace.Assert(r != null);
     mRule = r;
 }
Exemplo n.º 29
0
 public static Rule WhileNot(Rule elem, Rule term)
 {
     return(new WhileNotRule(elem, term));
 }
Exemplo n.º 30
0
 public NoFailRule(Rule r, string s)
 {
     Trace.Assert(r != null);
     mRule = r;
     msMsg = s;
 }
Exemplo n.º 31
0
 public static Rule DelimitedGroup(String x, Rule r, String y)
 {
     return(Seq(CharSeq(x), Star(r), NoFail(CharSeq(y), "expected " + y)));
 }
Exemplo n.º 32
0
 public StarRule(Rule r)
 {
     Trace.Assert(r != null);
     mRule = r;
 }
Exemplo n.º 33
0
 public PlusRule(Rule r)
 {
     Trace.Assert(r != null);
     mRule = r;
 }
Exemplo n.º 34
0
 public NotRule(Rule r)
 {
     Trace.Assert(r != null);
     mRule = r;
 }
Exemplo n.º 35
0
 public static Rule Choice(Rule x0, Rule x1, Rule x2) { return new ChoiceRule(new Rule[] { x0, x1, x2 }); }
Exemplo n.º 36
0
 public static Rule AstNode(Object label, Rule x) { return new AstNodeRule(label, x); }
Exemplo n.º 37
0
 public static Rule Opt(Rule x) { return new OptRule(x); }
Exemplo n.º 38
0
 public static Rule Seq(Rule x0, Rule x1, Rule x2) { return new SeqRule(new Rule[] { x0, x1, x2 }); }
Exemplo n.º 39
0
 public static Rule Plus(Rule x) { return new PlusRule(x); }
Exemplo n.º 40
0
 public static Rule Seq(Rule x0, Rule x1, Rule x2, Rule x3, Rule x4, Rule x5, Rule x6) { return new SeqRule(new Rule[] { x0, x1, x2, x3, x4, x5, x6 }); }
Exemplo n.º 41
0
 public NotRule(Rule r)
 {
     Trace.Assert(r != null);
     mRule = r;
 }
Exemplo n.º 42
0
 public static Rule Choice(Rule x0, Rule x1, Rule x2, Rule x3, Rule x4) { return new ChoiceRule(new Rule[] { x0, x1, x2, x3, x4 }); }
Exemplo n.º 43
0
 public static Rule Token(Rule r)
 {
     return(r + WS);
 }
Exemplo n.º 44
0
 public static Rule Star(Rule x) { return new StarRule(x); }
Exemplo n.º 45
0
 public static Rule CommaList(Rule r)
 {
     return(Opt(r + Star(Token(",") + NoFail(r))));
 }
Exemplo n.º 46
0
 public static Rule Not(Rule x) { return new NotRule(x); }
Exemplo n.º 47
0
 public static Rule SemiColonList(Rule r)
 {
     return(Opt(r + Star(Token(";") + NoFail(r))));
 }
Exemplo n.º 48
0
 public static Rule DelimitedGroup(String x, Rule r, String y) { return Seq(CharSeq(x), Star(r), NoFail(CharSeq(y), "expected " + y)); }
Exemplo n.º 49
0
 public static Rule Paranthesized(Rule r)
 {
     return(Token("(") + NoFail(r + Token(")")));
 }
Exemplo n.º 50
0
 public static Rule CommaList(Rule r)
 {
     return Opt(r + Star(Token(",") + NoFail(r)));
 }
Exemplo n.º 51
0
 public static Rule Bracketed(Rule r)
 {
     return(Token("[") + NoFail(r + Token("]")));
 }
Exemplo n.º 52
0
 public static Rule Paranthesized(Rule r)
 {
     return (Token("(") + NoFail(r + Token(")")));
 }
Exemplo n.º 53
0
 public static Rule BracedGroup(Rule r)
 {
     return(Token("{") + Star(r) + NoFail(Token("}")));
 }
Exemplo n.º 54
0
 public static Rule BracedGroup(Rule r)
 {
     return (Token("{") + Star(r) + NoFail(Token("}")));
 }
Exemplo n.º 55
0
 public AstNodeRule(Object label, Rule r)
 {
     Trace.Assert(r != null);
     mLabel = label;
     mRule  = r;
 }