Ejemplo n.º 1
0
        public static List<CatAstNode> Parse(string s)
        {
            Peg.Parser parser = new Peg.Parser(s);

            try
            {
                bool bResult = parser.Parse(CatGrammar.CatProgram());
                if (!bResult)
                    throw new Exception("failed to parse input");
            }
            catch (Exception e)
            {
                Output.WriteLine("Parsing error occured with message: " + e.Message);
                Output.WriteLine(parser.ParserPosition);
                throw e;
            }

            AstProgram tmp = new AstProgram(parser.GetAst());
            return tmp.mStatements;
        }
Ejemplo n.º 2
0
        public static List <CatAstNode> Parse(string s)
        {
            Peg.Parser parser = new Peg.Parser(s);

            try {
                bool bResult = parser.Parse(CatGrammar.CatProgram());
                if (!bResult)
                {
                    throw new Exception("failed to parse input");
                }
            } catch (Exception e) {
                Output.WriteLine("Parsing error occured with message: " + e.Message);
                Output.WriteLine(parser.ParserPosition);
                throw e;
            }

            AstProgram tmp = new AstProgram(parser.GetAst());

            return(tmp.mStatements);
        }
Ejemplo n.º 3
0
 public override bool Match(Parser p)
 {
     int pos = p.GetPos();
     if (mRule.Match(p))
     {
         p.SetPos(pos);
         return false;
     }
     Trace.Assert(p.GetPos() == pos);
     return true;
 }
Ejemplo n.º 4
0
 public override bool Match(Parser p)
 {
     return p.AtEnd();
 }
Ejemplo n.º 5
0
 public override bool Match(Parser p)
 {
     if (!mRule.Match(p))
         return false;
     while (mRule.Match(p))
     { }
     return true;
 }
Ejemplo n.º 6
0
 public override bool Match(Parser p)
 {
     while (mRule.Match(p))
     { }
     return true;
 }
Ejemplo n.º 7
0
 public override bool Match(Parser p)
 {
     if (p.AtEnd()) return false;
     if (p.GetChar() >= mFirst && p.GetChar() <= mLast)
     {
         p.GotoNext();
         return true;
     }
     return false;
 }
Ejemplo n.º 8
0
 public override bool Match(Parser p)
 {
     if (!p.AtEnd())
     {
         p.GotoNext();
         return true;
     }
     return false;
 }
Ejemplo n.º 9
0
 public override bool Match(Parser p)
 {
     // TODO: make a more descriptive error message.
     if (!mRule.Match(p))
         throw new Exception(msMsg);
     return true;
 }
Ejemplo n.º 10
0
 public override bool Match(Parser p)
 {
     return mDeleg().Match(p);
 }
Ejemplo n.º 11
0
 public override bool Match(Parser p)
 {
     p.CreateNode(mLabel);
     bool result = mRule.Match(p);
     if (result)
     {
         p.CompleteNode();
     }
     else
     {
         p.AbandonNode();
     }
     return result;
 }
Ejemplo n.º 12
0
 public abstract bool Match(Parser p);
Ejemplo n.º 13
0
 public void Complete(Parser p)
 {
     mnCount = p.GetPos() - mnBegin;
 }
Ejemplo n.º 14
0
 public PegAstNode Add(Parser p, Object label)
 {
     PegAstNode ret = new PegAstNode(p.GetPos(), msText, this, label);
     mChildren.Add(ret);
     return ret;
 }
Ejemplo n.º 15
0
 public override bool Match(Parser p)
 {
     if (p.AtEnd()) return false;
     if (p.GetChar() == mData)
     {
         p.GotoNext();
         return true;
     }
     return false;
 }
Ejemplo n.º 16
0
 public override bool Match(Parser p)
 {
     if (p.AtEnd()) return false;
     int pos = p.GetPos();
     foreach (char c in mData)
     {
         if (p.GetChar() != c)
         {
             p.SetPos(pos);
             return false;
         }
         p.GotoNext();
     }
     return true;
 }
Ejemplo n.º 17
0
 public override bool Match(Parser p)
 {
     int iter = p.GetPos();
     foreach (Rule r in mRules)
     {
         if (!r.Match(p))
         {
             p.SetPos(iter);
             return false;
         }
     }
     return true;
 }
Ejemplo n.º 18
0
 public override bool Match(Parser p)
 {
     if (p.AtEnd())
         return false;
     foreach (char c in mData)
     {
         if (c == p.GetChar())
         {
             p.GotoNext();
             return true;
         }
     }
     return false;
 }
Ejemplo n.º 19
0
 public override bool Match(Parser p)
 {
     foreach (Rule r in mRules)
     {
         if (r.Match(p))
             return true;
     }
     return false;
 }
Ejemplo n.º 20
0
 public override bool Match(Parser p)
 {
     int pos = p.GetPos();
     while (!mTerm.Match(p))
     {
         if (!mElem.Match(p))
         {
             p.SetPos(pos);
             return false;
         }
     }
     return true;
 }
Ejemplo n.º 21
0
 public override bool Match(Parser p)
 {
     mRule.Match(p);
     return true;
 }