Exemplo n.º 1
0
 /// <summary>
 /// Parses a Fast program from given stream.
 /// </summary>
 public static MonaProgram Parse(Stream stream, string filename = null)
 {
     try
     {
         var  parser = new MonaParser(stream, filename);
         bool ok     = parser.Parse();
         if (ok)
         {
             parser.program.Typecheck();
             return(parser.program);
         }
         else
         {
             throw new MonaParseException();
         }
     }
     catch (Exception e)
     {
         if (e is MonaParseException)
         {
             throw e;
         }
         else
         {
             throw new MonaParseException("unexpected error", e);
         }
     }
 }
Exemplo n.º 2
0
 public override void Print(StringBuilder sb)
 {
     sb.Append("(");
     arg1.Print(sb);
     sb.Append(" ");
     sb.Append(MonaParser.DescribeTokens(token.Kind));
     sb.Append(" ");
     arg2.Print(sb);
     sb.Append(")");
 }
Exemplo n.º 3
0
 public override void Print(StringBuilder sb)
 {
     if (token != null)
     {
         sb.AppendLine(MonaParser.DescribeTokens(token.Kind) + ";");
     }
     foreach (var decl in declarations)
     {
         decl.Print(sb);
         sb.AppendLine(";");
     }
 }
Exemplo n.º 4
0
        /// <summary>
        /// Parses a Fast program from given stream.
        /// </summary>
        public static Program Parse(Stream stream, string filename = null)
        {
            var  parser = new MonaParser(stream, filename);
            bool ok     = parser.Parse();

            if (ok)
            {
                return(parser.program);
            }
            else
            {
                throw new MonaParseException("Error: mona parser failed", filename);
            }
        }