explicit implementation of IDisposable to match MS corlib
[mono.git] / mcs / jay / skeleton.cs
index 79553fc39ead4c2c9c7a1e5e8741eb7926fd33d9..eafd7e9a69adb5adfc3826c73bbd11e793c4372d 100644 (file)
 .
  prolog                ## %{ ... %} prior to the first %%
 
+.
+.  /** error output stream.
+.      It should be changeable.
+.    */
+.  public System.IO.TextWriter ErrorOutput = System.Console.Out;
 .
 .  /** simplified error message.
 .      @see <a href="#yyerror(java.lang.String, java.lang.String[])">yyerror</a>
 .    */
 .  public void yyerror (string message, string[] expected) {
 .    if ((expected != null) && (expected.Length  > 0)) {
-.      System.Console.Write (message+", expecting");
+.      ErrorOutput.Write (message+", expecting");
 .      for (int n = 0; n < expected.Length; ++ n)
-.        System.Console.Write (" "+expected[n]);
-.        System.Console.WriteLine ();
+.        ErrorOutput.Write (" "+expected[n]);
+.        ErrorOutput.WriteLine ();
 .    } else
-.      System.Console.WriteLine (message);
+.      ErrorOutput.WriteLine (message);
 .  }
 .
 .  /** debugging support, requires the package jay.yydebug.
@@ -171,7 +176,7 @@ t              debug.shift(yyState, yyTable[yyN], yyErrorFlag-1);
 .            switch (yyErrorFlag) {
 .  
 .            case 0:
-.              yyerror("syntax error", yyExpecting(yyState));
+.              yyerror(String.Format ("syntax error, got token `{0}'", yyname (yyToken)), yyExpecting(yyState));
 t              if (debug != null) debug.error("syntax error");
 .              goto case 1;
 .            case 1: case 2:
@@ -261,7 +266,7 @@ t        if (debug != null) debug.shift(yyStates[yyTop], yyState);
 .       
 .       class yyDebugSimple : yyDebug {
 .               void println (string s){
-.                       Console.WriteLine (s);
+.                       Console.Error.WriteLine (s);
 .               }
 .               
 .               public void push (int state, Object value) {