[Mono-list] Trying to build debugger out of CVS

Martin Baulig martin@gnome.org
01 Mar 2003 11:35:57 +0100


--=-=-=

"Elan Feingold" <efeingold@mn.rr.com> writes:

> make[2]: Entering directory `/home/elan/Incoming/Mono/debugger/lib'
> 
> /usr/local/bin/mcs -o Interpreter.exe -r Mono.GetOptions -r Mono.CSharp.Debugger -r Mono.Debugger.dll -r
> Mono.Debugger.Backend.dll ../frontends/command-line/*.cs ../frontends/scripting/*.cs
> 
> ../frontends/scripting/Tokenizer.cs(11) error CS0246: Cannot find type `yyParser.yyInput'

Hi,

that's declard in frontends/scripting/Parser.cs - a file which is generated from Parser.jay.

Make sure you have jay (from mcs/jay) installed and that it's actually generating that file.

Here's the latest version:


--=-=-=
Content-Type: application/octet-stream
Content-Disposition: attachment; filename=Parser.cs

// created by jay 0.7 (c) 1998 Axel.Schreiner@informatik.uni-osnabrueck.de

#line 2 "Parser.jay"
using System.Text;
using System.IO;
using System.Collections;
using System;

namespace Mono.Debugger.Frontends.CommandLine
{
	public class Parser
	{
		string name;
		ScriptingContext current_context;
		MyTextReader reader;
		bool do_quit = false;

		protected bool yacc_verbose_flag = false;

		public bool yacc_verbose {
			set {
				yacc_verbose_flag = value;
			}

			get {
				return yacc_verbose_flag;
			}
		}

		public bool Quit {
			get {
				return do_quit;
			}
		}

		Tokenizer lexer;

		public Tokenizer Lexer {
			get {
				return lexer;
			}
		}		   

#line default

  /** simplified error message.
      @see <a href="#yyerror(java.lang.String, java.lang.String[])">yyerror</a>
    */
  public void yyerror (string message) {
    yyerror(message, null);
  }

  /** (syntax) error message.
      Can be overwritten to control message format.
      @param message text to be displayed.
      @param expected vector of acceptable tokens, if available.
    */
  public void yyerror (string message, string[] expected) {
    if ((expected != null) && (expected.Length  > 0)) {
      System.Console.Write (message+", expecting");
      for (int n = 0; n < expected.Length; ++ n)
        System.Console.Write (" "+expected[n]);
        System.Console.WriteLine ();
    } else
      System.Console.WriteLine (message);
  }

  /** debugging support, requires the package jay.yydebug.
      Set to null to suppress debugging messages.
    */
  protected yydebug.yyDebug debug;

  protected static  int yyFinal = 2;
  public static  string [] yyRule = {
    "$accept : command_loop",
    "command_loop :",
    "command_loop : command_loop command EOL",
    "command_loop : command_loop EOL",
    "command_loop : command_loop EOF",
    "command_loop : QUIT EOL",
    "command : CONTINUE opt_process",
    "command : STEP opt_process",
    "command : NEXT opt_process",
    "command : STEPI opt_process",
    "command : NEXTI opt_process",
    "command : FINISH opt_process",
    "command : BACKTRACE opt_process",
    "command : UP opt_process",
    "command : DOWN opt_process",
    "command : KILL opt_process",
    "command : SHOW PROCESSES",
    "command : SHOW REGISTERS opt_process opt_frame_number",
    "command : SHOW PARAMETERS opt_process opt_frame_number",
    "command : SHOW LOCALS opt_process opt_frame_number",
    "command : SHOW MODULES",
    "command : SHOW SOURCES opt_number_list",
    "command : SHOW METHODS opt_number_list",
    "command : SHOW BREAKPOINTS",
    "command : SHOW THREADGROUPS",
    "command : SHOW TYPE variable_expression",
    "command : BREAK opt_thread_group source_expression",
    "command : BREAKPOINT INTEGER ENABLE",
    "command : BREAKPOINT INTEGER DISABLE",
    "command : BREAKPOINT INTEGER DELETE",
    "command : PRINT expression",
    "command : FRAME opt_process opt_frame_number",
    "command : DISASSEMBLE opt_process opt_frame_number",
    "command : DISASSEMBLE METHOD opt_process opt_frame_number",
    "command : START INTEGER program_arguments",
    "command : START program_arguments",
    "command : PROCESS opt_process",
    "command : BACKGROUND opt_process",
    "command : STOP opt_process",
    "command : SET BANG IDENTIFIER ASSIGN variable_expression",
    "command : MODULE number_list module_operations",
    "command : MODULE ALL module_operations",
    "command : assert_command",
    "command : SAVE STRING",
    "command : THREADGROUP CREATE STRING opt_number_list",
    "command : THREADGROUP ADD STRING opt_number_list",
    "command : THREADGROUP REMOVE STRING opt_number_list",
    "command : HELP SHOW",
    "command : HELP",
    "command : LIST source_expression",
    "command : LIST CONTINUE",
    "kind : UNKNOWN",
    "kind : FUNDAMENTAL",
    "kind : ARRAY",
    "kind : STRUCT",
    "kind : CLASS",
    "kind : POINTER",
    "assert_command : ASSERT KIND kind variable_expression",
    "assert_command : ASSERT ACCESSIBLE variable_expression",
    "assert_command : ASSERT NOT ACCESSIBLE variable_expression",
    "assert_command : ASSERT TYPE STRING variable_expression",
    "assert_command : ASSERT CONTENTS STRING variable_expression",
    "assert_command : ASSERT LINE INTEGER",
    "expression : opt_process opt_frame_number PERCENT IDENTIFIER",
    "expression : LENGTH OPEN_PARENS variable_expression CLOSE_PARENS",
    "expression : LOWER OPEN_PARENS variable_expression CLOSE_PARENS",
    "expression : UPPER OPEN_PARENS variable_expression CLOSE_PARENS",
    "expression : NUMBER",
    "expression : INTEGER",
    "expression : expression binary_operator expression",
    "expression : OPEN_PARENS expression CLOSE_PARENS",
    "expression : variable_expression",
    "variable_expression : STAR variable_expression",
    "variable_expression : BANG IDENTIFIER",
    "variable_expression : opt_process opt_frame_number DOLLAR IDENTIFIER",
    "variable_expression : variable_expression DOT IDENTIFIER",
    "variable_expression : variable_expression OPEN_BRACKET expression CLOSE_BRACKET",
    "variable_expression : PARENT OPEN_PARENS variable_expression CLOSE_PARENS",
    "program_arguments : program_arglist",
    "program_arglist : STRING",
    "program_arglist : program_arglist STRING",
    "opt_thread_group :",
    "opt_thread_group : OP_LT IDENTIFIER OP_GT",
    "opt_thread_group : OP_LT GLOBAL OP_GT",
    "opt_process :",
    "opt_process : AT INTEGER",
    "opt_frame_number :",
    "opt_frame_number : HASH INTEGER",
    "opt_line :",
    "opt_line : COLON INTEGER",
    "source_expression : opt_process opt_frame_number",
    "source_expression : opt_process opt_frame_number IDENTIFIER opt_line",
    "source_expression : opt_process opt_frame_number INTEGER",
    "source_expression : STRING",
    "source_expression : STRING COLON INTEGER",
    "source_expression : BANG INTEGER",
    "opt_number_list :",
    "opt_number_list : number_list",
    "number_list : INTEGER",
    "number_list : number_list COMMA INTEGER",
    "module_operation : IGNORE",
    "module_operation : UNIGNORE",
    "module_operation : BANG IGNORE",
    "module_operation : STEP",
    "module_operation : BANG STEP",
    "module_operation : SHOW BREAKPOINTS",
    "module_operations : module_operation",
    "module_operations : module_operations module_operation",
    "binary_operator : STAR",
    "binary_operator : PLUS",
    "binary_operator : MINUS",
    "binary_operator : DIV",
  };
  protected static  string [] yyName = {    
    "end-of-file",null,null,null,null,null,null,null,null,null,null,null,
    null,null,null,null,null,null,null,null,null,null,null,null,null,null,
    null,null,null,null,null,null,null,null,null,null,null,null,null,null,
    null,null,null,null,null,null,null,null,null,null,null,null,null,null,
    null,null,null,null,null,null,null,null,null,null,null,null,null,null,
    null,null,null,null,null,null,null,null,null,null,null,null,null,null,
    null,null,null,null,null,null,null,null,null,null,null,null,null,null,
    null,null,null,null,null,null,null,null,null,null,null,null,null,null,
    null,null,null,null,null,null,null,null,null,null,null,null,null,null,
    null,null,null,null,null,null,null,null,null,null,null,null,null,null,
    null,null,null,null,null,null,null,null,null,null,null,null,null,null,
    null,null,null,null,null,null,null,null,null,null,null,null,null,null,
    null,null,null,null,null,null,null,null,null,null,null,null,null,null,
    null,null,null,null,null,null,null,null,null,null,null,null,null,null,
    null,null,null,null,null,null,null,null,null,null,null,null,null,null,
    null,null,null,null,null,null,null,null,null,null,null,null,null,null,
    null,null,null,null,null,null,null,null,null,null,null,null,null,null,
    null,null,null,null,null,null,null,null,null,null,null,null,null,null,
    null,null,null,null,null,null,null,"QUIT","EOL","EOF","NONE","ERROR",
    "IDENTIFIER","INTEGER","NUMBER","STRING","HASH","AT","PERCENT",
    "DOLLAR","DOT","BANG","COMMA","ASSIGN","STAR","PLUS","MINUS","DIV",
    "OPEN_PARENS","CLOSE_PARENS","OPEN_BRACKET","CLOSE_BRACKET","OP_LT",
    "OP_GT","COLON","PROCESSES","REGISTERS","PARAMETERS","LOCALS","TYPE",
    "METHOD","PARENT","LENGTH","LOWER","UPPER","KIND","ACCESSIBLE",
    "CONTENTS","LINE","NOT","UNKNOWN","FUNDAMENTAL","ARRAY","STRUCT",
    "CLASS","POINTER","MODULES","SOURCES","METHODS","BREAKPOINTS",
    "THREADGROUPS","GLOBAL","FRAME","START","SHOW","PROCESS","CONTINUE",
    "BACKTRACE","UP","DOWN","STEP","NEXT","STEPI","NEXTI","FINISH",
    "BREAK","PRINT","DISASSEMBLE","SET","ASSERT","BREAKPOINT","SAVE",
    "KILL","THREADGROUP","SEARCH","LIST","SELECT","BACKGROUND","STOP",
    "MODULE","IGNORE","UNIGNORE","ALL","ENABLE","DISABLE","DELETE",
    "CREATE","ADD","REMOVE","HELP",
  };

  /** index-checked interface to yyName[].
      @param token single character or %token value.
      @return token name or [illegal] or [unknown].
    */
  public static string yyname (int token) {
    if ((token < 0) || (token > yyName.Length)) return "[illegal]";
    string name;
    if ((name = yyName[token]) != null) return name;
    return "[unknown]";
  }

  /** computes list of expected tokens on error by tracing the tables.
      @param state for which to compute the list.
      @return list of token names.
    */
  protected string[] yyExpecting (int state) {
    int token, n, len = 0;
    bool[] ok = new bool[yyName.Length];

    if ((n = yySindex[state]) != 0)
      for (token = n < 0 ? -n : 0;
           (token < yyName.Length) && (n+token < yyTable.Length); ++ token)
        if (yyCheck[n+token] == token && !ok[token] && yyName[token] != null) {
          ++ len;
          ok[token] = true;
        }
    if ((n = yyRindex[state]) != 0)
      for (token = n < 0 ? -n : 0;
           (token < yyName.Length) && (n+token < yyTable.Length); ++ token)
        if (yyCheck[n+token] == token && !ok[token] && yyName[token] != null) {
          ++ len;
          ok[token] = true;
        }

    string [] result = new string[len];
    for (n = token = 0; n < len;  ++ token)
      if (ok[token]) result[n++] = yyName[token];
    return result;
  }

  /** the generated parser, with debugging messages.
      Maintains a state and a value stack, currently with fixed maximum size.
      @param yyLex scanner.
      @param yydebug debug message writer implementing yyDebug, or null.
      @return result of the last reduction, if any.
      @throws yyException on irrecoverable parse error.
    */
  public Object yyparse (yyParser.yyInput yyLex, Object yyd)
				 {
    this.debug = (yydebug.yyDebug)yyd;
    return yyparse(yyLex);
  }

  /** initial size and increment of the state/value stack [default 256].
      This is not final so that it can be overwritten outside of invocations
      of yyparse().
    */
  protected int yyMax;

  /** executed at the beginning of a reduce action.
      Used as $$ = yyDefault($1), prior to the user-specified action, if any.
      Can be overwritten to provide deep copy, etc.
      @param first value for $1, or null.
      @return first.
    */
  protected Object yyDefault (Object first) {
    return first;
  }

  /** the generated parser.
      Maintains a state and a value stack, currently with fixed maximum size.
      @param yyLex scanner.
      @return result of the last reduction, if any.
      @throws yyException on irrecoverable parse error.
    */
  public Object yyparse (yyParser.yyInput yyLex)
				{
    if (yyMax <= 0) yyMax = 256;			// initial size
    int yyState = 0;                                   // state stack ptr
    int [] yyStates = new int[yyMax];	                // state stack 
    Object yyVal = null;                               // value stack ptr
    Object [] yyVals = new Object[yyMax];	        // value stack
    int yyToken = -1;					// current input
    int yyErrorFlag = 0;				// #tks to shift

    int yyTop = 0;
    goto skip;
    yyLoop:
    yyTop++;
    skip:
    for (;; ++ yyTop) {
      if (yyTop >= yyStates.Length) {			// dynamically increase
        int[] i = new int[yyStates.Length+yyMax];
        yyStates.CopyTo (i, 0);
        yyStates = i;
        Object[] o = new Object[yyVals.Length+yyMax];
        yyVals.CopyTo (o, 0);
        yyVals = o;
      }
      yyStates[yyTop] = yyState;
      yyVals[yyTop] = yyVal;
      if (debug != null) debug.push(yyState, yyVal);

      yyDiscarded: for (;;) {	// discarding a token does not change stack
        int yyN;
        if ((yyN = yyDefRed[yyState]) == 0) {	// else [default] reduce (yyN)
          if (yyToken < 0) {
            yyToken = yyLex.advance() ? yyLex.token() : 0;
            if (debug != null)
              debug.lex(yyState, yyToken, yyname(yyToken), yyLex.value());
          }
          if ((yyN = yySindex[yyState]) != 0 && ((yyN += yyToken) >= 0)
              && (yyN < yyTable.Length) && (yyCheck[yyN] == yyToken)) {
            if (debug != null)
              debug.shift(yyState, yyTable[yyN], yyErrorFlag-1);
            yyState = yyTable[yyN];		// shift to yyN
            yyVal = yyLex.value();
            yyToken = -1;
            if (yyErrorFlag > 0) -- yyErrorFlag;
            goto yyLoop;
          }
          if ((yyN = yyRindex[yyState]) != 0 && (yyN += yyToken) >= 0
              && yyN < yyTable.Length && yyCheck[yyN] == yyToken)
            yyN = yyTable[yyN];			// reduce (yyN)
          else
            switch (yyErrorFlag) {
  
            case 0:
              yyerror("syntax error", yyExpecting(yyState));
              if (debug != null) debug.error("syntax error");
              goto case 1;
            case 1: case 2:
              yyErrorFlag = 3;
              do {
                if ((yyN = yySindex[yyStates[yyTop]]) != 0
                    && (yyN += Token.yyErrorCode) >= 0 && yyN < yyTable.Length
                    && yyCheck[yyN] == Token.yyErrorCode) {
                  if (debug != null)
                    debug.shift(yyStates[yyTop], yyTable[yyN], 3);
                  yyState = yyTable[yyN];
                  yyVal = yyLex.value();
                  goto yyLoop;
                }
                if (debug != null) debug.pop(yyStates[yyTop]);
              } while (-- yyTop >= 0);
              if (debug != null) debug.reject();
              throw new yyParser.yyException("irrecoverable syntax error");
  
            case 3:
              if (yyToken == 0) {
                if (debug != null) debug.reject();
                throw new yyParser.yyException("irrecoverable syntax error at end-of-file");
              }
              if (debug != null)
                debug.discard(yyState, yyToken, yyname(yyToken),
  							yyLex.value());
              yyToken = -1;
              goto yyDiscarded;		// leave stack alone
            }
        }
        int yyV = yyTop + 1-yyLen[yyN];
        if (debug != null)
          debug.reduce(yyState, yyStates[yyV-1], yyN, yyRule[yyN], yyLen[yyN]);
        yyVal = yyDefault(yyV > yyTop ? null : yyVals[yyV]);
        switch (yyN) {
case 2:
#line 152 "Parser.jay"
  {
		((Command) yyVals[-1+yyTop]).Execute (current_context);
	  }
  break;
case 5:
#line 158 "Parser.jay"
  {
		do_quit = true;
		reader.Close ();
	  }
  break;
case 6:
#line 166 "Parser.jay"
  {
		yyVal = new StepCommand ((ProcessExpression) yyVals[0+yyTop], WhichStepCommand.Continue);
	  }
  break;
case 7:
#line 170 "Parser.jay"
  {
		yyVal = new StepCommand ((ProcessExpression) yyVals[0+yyTop], WhichStepCommand.Step);
	  }
  break;
case 8:
#line 174 "Parser.jay"
  {
		yyVal = new StepCommand ((ProcessExpression) yyVals[0+yyTop], WhichStepCommand.Next);
	  }
  break;
case 9:
#line 178 "Parser.jay"
  {
		yyVal = new StepCommand ((ProcessExpression) yyVals[0+yyTop], WhichStepCommand.StepInstruction);
	  }
  break;
case 10:
#line 182 "Parser.jay"
  {
		yyVal = new StepCommand ((ProcessExpression) yyVals[0+yyTop], WhichStepCommand.NextInstruction);
	  }
  break;
case 11:
#line 186 "Parser.jay"
  {
		yyVal = new StepCommand ((ProcessExpression) yyVals[0+yyTop], WhichStepCommand.Finish);
	  }
  break;
case 12:
#line 190 "Parser.jay"
  {
		yyVal = new BacktraceCommand ((ProcessExpression) yyVals[0+yyTop]);
	  }
  break;
case 13:
#line 194 "Parser.jay"
  {
		yyVal = new UpCommand ((ProcessExpression) yyVals[0+yyTop]);
	  }
  break;
case 14:
#line 198 "Parser.jay"
  {
		yyVal = new DownCommand ((ProcessExpression) yyVals[0+yyTop]);
	  }
  break;
case 15:
#line 202 "Parser.jay"
  {
		yyVal = new KillProcessCommand ((ProcessExpression) yyVals[0+yyTop]);
	  }
  break;
case 16:
#line 206 "Parser.jay"
  {
		yyVal = new ShowProcessesCommand ();
	  }
  break;
case 17:
#line 210 "Parser.jay"
  {
		yyVal = new ShowRegistersCommand ((ProcessExpression) yyVals[-1+yyTop], (int) yyVals[0+yyTop]);
	  }
  break;
case 18:
#line 214 "Parser.jay"
  {
		yyVal = new ShowParametersCommand ((ProcessExpression) yyVals[-1+yyTop], (int) yyVals[0+yyTop]);
	  }
  break;
case 19:
#line 218 "Parser.jay"
  {
		yyVal = new ShowLocalsCommand ((ProcessExpression) yyVals[-1+yyTop], (int) yyVals[0+yyTop]);
	  }
  break;
case 20:
#line 222 "Parser.jay"
  {
		yyVal = new ShowModulesCommand ();
	  }
  break;
case 21:
#line 226 "Parser.jay"
  {
		int[] modules = new int [((ArrayList) yyVals[0+yyTop]).Count];
		((ArrayList) yyVals[0+yyTop]).CopyTo (modules, 0);

		yyVal = new ShowSourcesCommand (modules);
	  }
  break;
case 22:
#line 233 "Parser.jay"
  {
		int[] sources = new int [((ArrayList) yyVals[0+yyTop]).Count];
		((ArrayList) yyVals[0+yyTop]).CopyTo (sources, 0);

		yyVal = new ShowMethodsCommand (sources);
	  }
  break;
case 23:
#line 240 "Parser.jay"
  {
		yyVal = new ShowBreakpointsCommand ();
	  }
  break;
case 24:
#line 244 "Parser.jay"
  {
		yyVal = new ShowThreadGroupsCommand ();
	  }
  break;
case 25:
#line 248 "Parser.jay"
  {
		yyVal = new ShowVariableTypeCommand ((VariableExpression) yyVals[0+yyTop]);
	  }
  break;
case 26:
#line 252 "Parser.jay"
  {
		yyVal = new BreakCommand ((ThreadGroupExpression) yyVals[-1+yyTop], (SourceExpression) yyVals[0+yyTop]);
	  }
  break;
case 27:
#line 256 "Parser.jay"
  {
		yyVal = new BreakpointEnableCommand ((int) yyVals[-1+yyTop]);
	  }
  break;
case 28:
#line 260 "Parser.jay"
  {
		yyVal = new BreakpointDisableCommand ((int) yyVals[-1+yyTop]);
	  }
  break;
case 29:
#line 264 "Parser.jay"
  {
		yyVal = new BreakpointDeleteCommand ((int) yyVals[-1+yyTop]);
	  }
  break;
case 30:
#line 268 "Parser.jay"
  {
		yyVal = new PrintCommand ((Expression) yyVals[0+yyTop]);
	  }
  break;
case 31:
#line 272 "Parser.jay"
  {
		yyVal = new FrameCommand ((ProcessExpression) yyVals[-1+yyTop], (int) yyVals[0+yyTop]);
	  }
  break;
case 32:
#line 276 "Parser.jay"
  {
		yyVal = new DisassembleCommand ((ProcessExpression) yyVals[-1+yyTop], (int) yyVals[0+yyTop]);
	  }
  break;
case 33:
#line 280 "Parser.jay"
  {
		yyVal = new DisassembleMethodCommand ((ProcessExpression) yyVals[-1+yyTop], (int) yyVals[0+yyTop]);
	  }
  break;
case 34:
#line 284 "Parser.jay"
  {
		yyVal = new StartCommand ((string []) yyVals[0+yyTop], (int) yyVals[-1+yyTop]);
	  }
  break;
case 35:
#line 288 "Parser.jay"
  {
		yyVal = new StartCommand ((string []) yyVals[0+yyTop]);
	  }
  break;
case 36:
#line 292 "Parser.jay"
  {
		yyVal = new SelectProcessCommand ((ProcessExpression) yyVals[0+yyTop]);
	  }
  break;
case 37:
#line 296 "Parser.jay"
  {
		yyVal = new BackgroundProcessCommand ((ProcessExpression) yyVals[0+yyTop]);
	  }
  break;
case 38:
#line 300 "Parser.jay"
  {
		yyVal = new StopProcessCommand ((ProcessExpression) yyVals[0+yyTop]);
	  }
  break;
case 39:
#line 304 "Parser.jay"
  {
		yyVal = new ScriptingVariableAssignCommand ((string) yyVals[-2+yyTop], (VariableExpression) yyVals[0+yyTop]);
	  }
  break;
case 40:
#line 308 "Parser.jay"
  {
		int[] modules = new int [((ArrayList) yyVals[-1+yyTop]).Count];
		((ArrayList) yyVals[-1+yyTop]).CopyTo (modules, 0);
		ModuleOperation[] operations = new ModuleOperation [((ArrayList) yyVals[0+yyTop]).Count];
		((ArrayList) yyVals[0+yyTop]).CopyTo (operations, 0);
		yyVal = new ModuleOperationCommand (modules, operations);
	  }
  break;
case 41:
#line 316 "Parser.jay"
  {
		ModuleOperation[] operations = new ModuleOperation [((ArrayList) yyVals[-1+yyTop]).Count];
		((ArrayList) yyVals[-1+yyTop]).CopyTo (operations, 0);
		yyVal = new ModuleOperationCommand (operations);
	  }
  break;
case 42:
#line 322 "Parser.jay"
  {
		yyVal = yyVals[0+yyTop];
	  }
  break;
case 43:
#line 326 "Parser.jay"
  {
		yyVal = new SaveCommand ((string) yyVals[0+yyTop]);
	  }
  break;
case 44:
#line 330 "Parser.jay"
  {
		int[] threads = new int [((ArrayList) yyVals[0+yyTop]).Count];
		((ArrayList) yyVals[0+yyTop]).CopyTo (threads, 0);

		yyVal = new ThreadGroupCreateCommand ((string) yyVals[-1+yyTop], threads);
	  }
  break;
case 45:
#line 337 "Parser.jay"
  {
		int[] threads = new int [((ArrayList) yyVals[0+yyTop]).Count];
		((ArrayList) yyVals[0+yyTop]).CopyTo (threads, 0);

		yyVal = new ThreadGroupAddCommand ((string) yyVals[-1+yyTop], threads);
	  }
  break;
case 46:
#line 344 "Parser.jay"
  {
		int[] threads = new int [((ArrayList) yyVals[0+yyTop]).Count];
		((ArrayList) yyVals[0+yyTop]).CopyTo (threads, 0);

		yyVal = new ThreadGroupRemoveCommand ((string) yyVals[-1+yyTop], threads);
	  }
  break;
case 47:
#line 351 "Parser.jay"
  {
		yyVal = new HelpCommand ("show");
	  }
  break;
case 48:
#line 355 "Parser.jay"
  {
		yyVal = new HelpCommand ("");
	  }
  break;
case 49:
#line 359 "Parser.jay"
  {
		yyVal = new ListCommand ((SourceExpression) yyVals[0+yyTop]);
	  }
  break;
case 50:
#line 363 "Parser.jay"
  {
		yyVal = new ListCommand (null);
	  }
  break;
case 51:
#line 370 "Parser.jay"
  {
		yyVal = TargetObjectKind.Unknown;
	  }
  break;
case 52:
#line 374 "Parser.jay"
  {
		yyVal = TargetObjectKind.Fundamental;
	  }
  break;
case 53:
#line 378 "Parser.jay"
  {
		yyVal = TargetObjectKind.Array;
	  }
  break;
case 54:
#line 382 "Parser.jay"
  {
		yyVal = TargetObjectKind.Struct;
	  }
  break;
case 55:
#line 386 "Parser.jay"
  {
		yyVal = TargetObjectKind.Class;
	  }
  break;
case 56:
#line 390 "Parser.jay"
  {
		yyVal = TargetObjectKind.Pointer;
	  }
  break;
case 57:
#line 397 "Parser.jay"
  {
		yyVal = new AssertKindCommand ((TargetObjectKind) yyVals[-1+yyTop], (VariableExpression) yyVals[0+yyTop]);
	  }
  break;
case 58:
#line 401 "Parser.jay"
  {
		yyVal = new AssertAccessibleCommand ((VariableExpression) yyVals[0+yyTop], true);
	  }
  break;
case 59:
#line 405 "Parser.jay"
  {
		yyVal = new AssertAccessibleCommand ((VariableExpression) yyVals[0+yyTop], false);
	  }
  break;
case 60:
#line 409 "Parser.jay"
  {
		yyVal = new AssertTypeCommand ((string) yyVals[-1+yyTop], (VariableExpression) yyVals[0+yyTop]);
	  }
  break;
case 61:
#line 413 "Parser.jay"
  {
		yyVal = new AssertContentsCommand ((string) yyVals[-1+yyTop], (VariableExpression) yyVals[0+yyTop]);
	  }
  break;
case 62:
#line 417 "Parser.jay"
  {
		yyVal = new AssertLineCommand ((int) yyVals[0+yyTop]);
	  }
  break;
case 63:
#line 424 "Parser.jay"
  {
		yyVal = new RegisterExpression ((ProcessExpression) yyVals[-3+yyTop], (int) yyVals[-2+yyTop], (string) yyVals[0+yyTop]);
	  }
  break;
case 64:
#line 428 "Parser.jay"
  {
		yyVal = new ArrayLengthExpression ((VariableExpression) yyVals[-1+yyTop]);
	  }
  break;
case 65:
#line 432 "Parser.jay"
  {
		yyVal = new ArrayLowerBoundExpression ((VariableExpression) yyVals[-1+yyTop]);
	  }
  break;
case 66:
#line 436 "Parser.jay"
  {
		yyVal = new ArrayUpperBoundExpression ((VariableExpression) yyVals[-1+yyTop]);
	  }
  break;
case 67:
#line 440 "Parser.jay"
  {
		yyVal = new NumberExpression ((int) yyVals[0+yyTop]);
	  }
  break;
case 68:
#line 444 "Parser.jay"
  {
		yyVal = new NumberExpression ((int) yyVals[0+yyTop]);
	  }
  break;
case 69:
#line 448 "Parser.jay"
  {
		yyVal = new BinaryOperator ((BinaryOperator.Kind) yyVals[-1+yyTop], (Expression) yyVals[-2+yyTop], (Expression) yyVals[0+yyTop]);
	  }
  break;
case 70:
#line 452 "Parser.jay"
  {
		yyVal = new ExpressionGroup ((Expression) yyVals[-1+yyTop]);
	  }
  break;
case 71:
#line 456 "Parser.jay"
  {
		yyVal = yyVals[0+yyTop];
	  }
  break;
case 72:
#line 463 "Parser.jay"
  {
		yyVal = new VariableDereferenceExpression ((VariableExpression) yyVals[0+yyTop]);
	  }
  break;
case 73:
#line 467 "Parser.jay"
  {
		yyVal = new ScriptingVariableReference ((string) yyVals[0+yyTop]);
	  }
  break;
case 74:
#line 471 "Parser.jay"
  {
		yyVal = new VariableReferenceExpression ((ProcessExpression) yyVals[-3+yyTop], (int) yyVals[-2+yyTop], (string) yyVals[0+yyTop]);
	  }
  break;
case 75:
#line 475 "Parser.jay"
  {
		yyVal = new StructAccessExpression ((VariableExpression) yyVals[-2+yyTop], (string) yyVals[0+yyTop]);
	  }
  break;
case 76:
#line 479 "Parser.jay"
  {
		yyVal = new ArrayAccessExpression ((VariableExpression) yyVals[-3+yyTop], (Expression) yyVals[-1+yyTop]);
	  }
  break;
case 77:
#line 483 "Parser.jay"
  {
		yyVal = new ParentClassExpression ((VariableExpression) yyVals[-1+yyTop]);
	  }
  break;
case 78:
#line 490 "Parser.jay"
  {
		ArrayList args = (ArrayList) yyVals[0+yyTop];
		string[] retval = new string [args.Count];
		args.CopyTo (retval, 0);
		yyVal = retval;
	  }
  break;
case 79:
#line 500 "Parser.jay"
  {
		ArrayList args = new ArrayList ();
		args.Add (yyVals[0+yyTop]);

		yyVal = args;
	  }
  break;
case 80:
#line 507 "Parser.jay"
  {
		ArrayList args = (ArrayList) yyVals[-1+yyTop];
		args.Add (yyVals[0+yyTop]);

		yyVal = args;
	  }
  break;
case 81:
#line 517 "Parser.jay"
  {
		yyVal = new ThreadGroupExpression ("main");
	  }
  break;
case 82:
#line 521 "Parser.jay"
  {
		yyVal = new ThreadGroupExpression ((string) yyVals[0+yyTop]);
	  }
  break;
case 83:
#line 525 "Parser.jay"
  {
		yyVal = new ThreadGroupExpression ("global");
	  }
  break;
case 84:
#line 532 "Parser.jay"
  {
		yyVal = new ProcessExpression (-1);
	  }
  break;
case 85:
#line 536 "Parser.jay"
  {
		yyVal = new ProcessExpression ((int) yyVals[0+yyTop]);
	  }
  break;
case 86:
#line 543 "Parser.jay"
  {
		yyVal = -1;
	  }
  break;
case 87:
#line 547 "Parser.jay"
  {
		yyVal = yyVals[0+yyTop];
	  }
  break;
case 88:
#line 554 "Parser.jay"
  {
		yyVal = -1;
	  }
  break;
case 89:
#line 558 "Parser.jay"
  {
		yyVal = yyVals[0+yyTop];
	  }
  break;
case 90:
#line 565 "Parser.jay"
  {
		yyVal = new SourceExpression ((ProcessExpression) yyVals[-1+yyTop], (int) yyVals[0+yyTop], null, -1);
	  }
  break;
case 91:
#line 569 "Parser.jay"
  {
		yyVal = new SourceExpression ((ProcessExpression) yyVals[-3+yyTop], (int) yyVals[-2+yyTop], (string) yyVals[-1+yyTop], (int) yyVals[0+yyTop]);
	  }
  break;
case 92:
#line 573 "Parser.jay"
  {
		yyVal = new SourceExpression ((ProcessExpression) yyVals[-2+yyTop], (int) yyVals[-1+yyTop], (int) yyVals[0+yyTop]);
	  }
  break;
case 93:
#line 577 "Parser.jay"
  {
		yyVal = new SourceExpression ((string) yyVals[0+yyTop]);
	  }
  break;
case 94:
#line 581 "Parser.jay"
  {
		yyVal = new SourceExpression ((string) yyVals[-2+yyTop], (int) yyVals[0+yyTop]);
	  }
  break;
case 95:
#line 585 "Parser.jay"
  {
		yyVal = new SourceExpression ((int) yyVals[0+yyTop]);
	  }
  break;
case 96:
#line 592 "Parser.jay"
  {
		yyVal = new ArrayList ();
	  }
  break;
case 98:
#line 600 "Parser.jay"
  {
		ArrayList args = new ArrayList ();
		args.Add (yyVals[0+yyTop]);

		yyVal = args;
	  }
  break;
case 99:
#line 607 "Parser.jay"
  {
		ArrayList args = (ArrayList) yyVals[-2+yyTop];
		args.Add (yyVals[0+yyTop]);

		yyVal = args;
	  }
  break;
case 100:
#line 617 "Parser.jay"
  {
		yyVal = ModuleOperation.Ignore;
	  }
  break;
case 101:
#line 621 "Parser.jay"
  {
		yyVal = ModuleOperation.UnIgnore;
	  }
  break;
case 102:
#line 625 "Parser.jay"
  {
		yyVal = ModuleOperation.UnIgnore;
	  }
  break;
case 103:
#line 629 "Parser.jay"
  {
		yyVal = ModuleOperation.Step;
	  }
  break;
case 104:
#line 633 "Parser.jay"
  {
		yyVal = ModuleOperation.DontStep;
	  }
  break;
case 105:
#line 637 "Parser.jay"
  {
		yyVal = ModuleOperation.ShowBreakpoints;
	  }
  break;
case 106:
#line 644 "Parser.jay"
  {
		ArrayList args = new ArrayList ();
		args.Add (yyVals[0+yyTop]);

		yyVal = args;
	  }
  break;
case 107:
#line 651 "Parser.jay"
  {
		ArrayList args = (ArrayList) yyVals[-1+yyTop];
		args.Add (yyVals[0+yyTop]);

		yyVal = args;
	  }
  break;
case 108:
#line 661 "Parser.jay"
  {
		yyVal = BinaryOperator.Kind.Mult;
	  }
  break;
case 109:
#line 665 "Parser.jay"
  {
		yyVal = BinaryOperator.Kind.Plus;
	  }
  break;
case 110:
#line 669 "Parser.jay"
  {
		yyVal = BinaryOperator.Kind.Minus;
	  }
  break;
case 111:
#line 673 "Parser.jay"
  {
		yyVal = BinaryOperator.Kind.Div;
	  }
  break;
#line default
        }
        yyTop -= yyLen[yyN];
        yyState = yyStates[yyTop];
        int yyM = yyLhs[yyN];
        if (yyState == 0 && yyM == 0) {
          if (debug != null) debug.shift(0, yyFinal);
          yyState = yyFinal;
          if (yyToken < 0) {
            yyToken = yyLex.advance() ? yyLex.token() : 0;
            if (debug != null)
               debug.lex(yyState, yyToken,yyname(yyToken), yyLex.value());
          }
          if (yyToken == 0) {
            if (debug != null) debug.accept(yyVal);
            return yyVal;
          }
          goto yyLoop;
        }
        if (((yyN = yyGindex[yyM]) != 0) && ((yyN += yyState) >= 0)
            && (yyN < yyTable.Length) && (yyCheck[yyN] == yyState))
          yyState = yyTable[yyN];
        else
          yyState = yyDgoto[yyM];
        if (debug != null) debug.shift(yyStates[yyTop], yyState);
	 goto yyLoop;
      }
    }
  }

   static  short [] yyLhs  = {              -1,
    0,    0,    0,    0,    0,    1,    1,    1,    1,    1,
    1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
    1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
    1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
    1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
   13,   13,   13,   13,   13,   13,   12,   12,   12,   12,
   12,   12,    8,    8,    8,    8,    8,    8,    8,    8,
    8,    5,    5,    5,    5,    5,    5,    9,   15,   15,
    6,    6,    6,    2,    2,    3,    3,   16,   16,    7,
    7,    7,    7,    7,    7,    4,    4,   10,   10,   17,
   17,   17,   17,   17,   17,   11,   11,   14,   14,   14,
   14,
  };
   static  short [] yyLen = {           2,
    0,    3,    2,    2,    2,    2,    2,    2,    2,    2,
    2,    2,    2,    2,    2,    2,    4,    4,    4,    2,
    3,    3,    2,    2,    3,    3,    3,    3,    3,    2,
    3,    3,    4,    3,    2,    2,    2,    2,    5,    3,
    3,    1,    2,    4,    4,    4,    2,    1,    2,    2,
    1,    1,    1,    1,    1,    1,    4,    3,    4,    4,
    4,    3,    4,    4,    4,    4,    1,    1,    3,    3,
    1,    2,    2,    4,    3,    4,    4,    1,    1,    2,
    0,    3,    3,    0,    2,    0,    2,    0,    2,    2,
    4,    3,    1,    3,    2,    0,    1,    1,    3,    1,
    1,    2,    1,    2,    2,    1,    2,    1,    1,    1,
    1,
  };
   static  short [] yyDefRed = {            0,
    0,    0,    5,    3,    4,    0,    0,    0,    0,    0,
    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
    0,    0,    0,   42,    0,    0,    0,   79,   35,    0,
   16,    0,    0,    0,    0,   20,    0,    0,   23,   24,
   36,    6,   12,   13,   14,    7,    8,    9,   10,   11,
    0,    0,   68,   67,    0,    0,    0,    0,    0,    0,
    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
    0,    0,    0,    0,   43,   15,    0,    0,    0,    0,
    0,   50,    0,   49,   37,   38,   98,    0,    0,   47,
    2,   85,    0,   31,   34,   80,    0,    0,    0,    0,
    0,   21,    0,   22,    0,    0,   26,   73,    0,    0,
    0,    0,    0,    0,    0,    0,    0,  108,  109,  110,
  111,    0,    0,   32,    0,    0,   51,   52,   53,   54,
   55,   56,    0,    0,    0,   62,    0,   27,   28,   29,
    0,    0,    0,    0,   95,    0,    0,    0,  103,  100,
  101,    0,  106,    0,    0,   87,   17,   18,   19,    0,
   82,   83,   70,    0,    0,    0,    0,    0,    0,   75,
    0,    0,   33,    0,    0,    0,    0,    0,   44,   45,
   46,   94,    0,   92,  104,  102,  105,  107,   99,   77,
   64,   65,   66,   63,   74,   76,    0,    0,   91,   89,
  };
  protected static  short [] yyDgoto  = {             2,
   33,  110,  104,  112,   73,   62,   94,   74,   39,  113,
  162,   34,  143,  132,   40,  209,  163,
  };
  protected static  short [] yySindex = {         -198,
 -189, -172,    0,    0,    0, -239, -221, -175, -239, -239,
 -239, -239, -239, -239, -239, -239, -239, -239, -192,  -88,
 -230, -152,  -82, -166, -135, -239, -210, -235, -239, -239,
 -260, -127,  -96,    0,  -67,  -54,  -39,    0,    0,  -26,
    0, -239, -239, -239, -240,    0,  -65,  -65,    0,    0,
    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
 -244,  -47,    0,    0,  -43, -240,  -88,  -57,  -38,  -35,
  -34,  -54, -227,  -66, -239,  -54,  -17,  -19,  -73, -240,
  -18,  -15,  -42, -163,    0,    0,  -16,  -14,  -13,  -31,
   -8,    0,  -54,    0,    0,    0,    0, -248, -252,    0,
    0,    0,   -7,    0,    0,    0,  -54,  -54,  -54,  -54,
 -227,    0,  -22,    0,  -25,  -20,    0,    0, -227,  -41,
 -240, -240, -240, -240,  -99,   -5,  -88,    0,    0,    0,
    0,  -88,  -54,    0,  -12, -240,    0,    0,    0,    0,
    0,    0, -240, -227, -240,    0, -240,    0,    0,    0,
  -65,  -65,  -65,   -1,    0,  -68, -279,  -40,    0,    0,
    0, -248,    0,    2, -248,    0,    0,    0,    0,   -3,
    0,    0,    0, -215, -196, -185, -174,    5,    6,    0,
 -103,  -66,    0, -240, -227, -227, -227, -227,    0,    0,
    0,    0,  -11,    0,    0,    0,    0,    0,    0,    0,
    0,    0,    0,    0,    0,    0, -227,    7,    0,    0,
  };
  protected static  short [] yyRindex = {            1,
    0,    0,    0,    0,    0, -209,    0,    0,   13,   13,
   13,   13,   13,   13,   13,   13,   13,   13,  -74, -165,
 -209,    0,    0,    0,    0,   13,    0, -137,   13,   13,
    0,   14,    0,    0,    0,   16,    0,    0,    0,   17,
    0, -209, -209, -209, -142,    0,   18,   18,    0,    0,
    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
    0, -137,    0,    0,    0, -142, -165,    0,    0,    0,
    0,  -46, -229,   19, -209,   16,    0,    0,    0, -142,
    0,    0,    0,    0,    0,    0,    0,    0,    0,   20,
    0,    0,  -21,    0,    0,    0,    0,    0,    0,    0,
    0,    0,    0,    0,    0,    0,   16,   16,   16,   10,
   22,    0,   23,    0,    0,    0,    0,    0, -159,    0,
 -142, -142, -142, -142,    0,    0, -165,    0,    0,    0,
    0, -165,   16,    0,    0, -142,    0,    0,    0,    0,
    0,    0, -142,   24, -142,    0, -142,    0,    0,    0,
   18,   18,   18,    0,    0,   25,    0,    0,    0,    0,
    0,   26,    0,    0,   27,    0,    0,    0,    0,    0,
    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
    0, -225,    0, -142,   28,   29,   30,   31,    0,    0,
    0,    0,   32,    0,    0,    0,    0,    0,    0,    0,
    0,    0,    0,    0,    0,    0,   33,    0,    0,    0,
  };
  protected static  short [] yyGindex = {            0,
    0,   -4,   92,  -44,  -45,    0,  202,  -52,  255,  262,
  195,    0,    0,    0,    0,    0,  -92,
  };
  protected static  short [] yyTable = {           111,
    1,   36,   97,  114,   51,   52,   53,   54,   55,   56,
   57,   58,   59,   60,  120,   72,   76,  115,  157,  164,
  119,   86,  157,   93,   95,   96,   35,   35,   71,   90,
   65,   35,   69,   66,  144,   91,   35,  107,  108,  109,
  195,   37,  126,   38,   71,   71,   71,   71,   84,   71,
   68,   71,  127,   69,  126,   69,   84,   93,    1,   75,
  196,  158,   72,  200,  127,  158,  116,  159,    3,  198,
  133,  159,  198,  126,  181,  174,  175,  176,  177,  182,
   92,   98,  201,  127,  126,    4,    5,  160,  161,   61,
  185,  160,  161,  202,  127,  126,   84,  186,   72,  187,
   84,  188,   84,   84,  203,  127,  189,  190,  191,   41,
   42,   43,   44,   45,   72,   72,   72,   72,   77,   72,
   84,   72,   72,   84,   84,   84,   84,   72,   84,   85,
   46,   47,   48,   49,   50,   87,   88,   89,  207,    6,
    7,    8,    9,   10,   11,   12,   13,   14,   15,   16,
   17,   18,   19,   20,   21,   22,   23,   24,   25,   26,
   27,  101,   28,  125,   29,   30,   31,  134,  178,  179,
  128,  129,  130,  131,   63,   64,   32,  206,   35,  148,
  149,  150,   65,   81,  156,   66,  100,   81,   81,   67,
   81,   81,   81,  193,  194,  102,   81,   97,  167,  168,
  169,  170,   68,   69,   70,   71,   78,  128,  129,  130,
  131,  103,   79,   80,   81,   82,   83,   90,  118,   35,
  121,   86,   86,   91,  183,   38,  137,  138,  139,  140,
  141,  142,  128,  129,  130,  131,   86,  173,  106,  122,
   86,   86,  123,  124,  135,  136,  145,  146,  151,  164,
  152,  153,  154,  147,  155,  166,  180,  171,    1,    1,
  184,  192,  172,  117,  199,  179,  204,  205,  197,  210,
   84,   48,  208,   86,   78,   96,   30,   93,   86,   25,
   97,   58,   90,   41,   40,   60,   57,   61,   59,   88,
   39,  105,   99,  165,    0,    0,    0,    0,    0,    0,
    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
    0,    0,    1,    1,    1,    1,    1,    1,    1,    1,
    1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
    1,    1,    1,    1,    0,    1,    0,    1,    1,    1,
    0,    0,    0,    0,    0,    0,    0,    0,    0,    1,
  };
  protected static  short [] yyCheck = {            45,
    0,    6,  263,   48,    9,   10,   11,   12,   13,   14,
   15,   16,   17,   18,   67,   20,   21,  262,  271,  272,
   66,   26,  271,   28,   29,   30,  267,  267,  258,  265,
  271,  267,  258,  274,   80,  271,  267,   42,   43,   44,
  320,  263,  270,  265,  274,  275,  276,  277,  258,  279,
  291,  281,  280,  279,  270,  281,  266,   62,  257,  290,
  340,  314,   67,  279,  280,  314,  311,  320,  258,  162,
   75,  320,  165,  270,  127,  121,  122,  123,  124,  132,
  316,  342,  279,  280,  270,  258,  259,  340,  341,  282,
  136,  340,  341,  279,  280,  270,  263,  143,  258,  145,
  266,  147,  268,  269,  279,  280,  151,  152,  153,  285,
  286,  287,  288,  289,  274,  275,  276,  277,  271,  279,
  258,  281,  127,  266,  262,  263,  269,  132,  266,  265,
  306,  307,  308,  309,  310,  346,  347,  348,  184,  312,
  313,  314,  315,  316,  317,  318,  319,  320,  321,  322,
  323,  324,  325,  326,  327,  328,  329,  330,  331,  332,
  333,  258,  335,   72,  337,  338,  339,   76,  268,  269,
  274,  275,  276,  277,  263,  264,  349,  281,  267,  343,
  344,  345,  271,  258,   93,  274,  314,  262,  263,  278,
  265,  266,  267,  262,  263,  263,  271,  263,  107,  108,
  109,  110,  291,  292,  293,  294,  289,  274,  275,  276,
  277,  266,  295,  296,  297,  298,  299,  265,  262,  267,
  278,  268,  269,  271,  133,  265,  300,  301,  302,  303,
  304,  305,  274,  275,  276,  277,  258,  279,  265,  278,
  262,  263,  278,  278,  262,  265,  265,  263,  265,  272,
  265,  265,  284,  296,  263,  263,  262,  283,  258,  259,
  273,  263,  283,   62,  263,  269,  262,  262,  309,  263,
  258,  258,  284,  258,  258,  258,  258,  258,  269,  258,
  258,  258,  258,  258,  258,  258,  258,  258,  258,  258,
  258,   37,   31,   99,   -1,   -1,   -1,   -1,   -1,   -1,
   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
   -1,   -1,  312,  313,  314,  315,  316,  317,  318,  319,
  320,  321,  322,  323,  324,  325,  326,  327,  328,  329,
  330,  331,  332,  333,   -1,  335,   -1,  337,  338,  339,
   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,  349,
  };

#line 678 "Parser.jay"

public Parser (ScriptingContext context, string name)
{
	this.name = name;
	this.reader = new MyTextReader ();
	this.current_context = context;

	lexer = new Tokenizer (context, reader, name);
}

public bool Parse (string text)
{
	try {
		reader.Text = text;
		lexer.restart ();
		if (yacc_verbose_flag)
			yyparse (lexer, new yydebug.yyDebugSimple ());
		else
			yyparse (lexer);
		return true;
	} catch (Exception e){
		// Please do not remove this, it is used during debugging
		// of the grammar
		//
		current_context.Error (lexer.location + "  : Parsing error ");
		current_context.Error (e.ToString ());
		return false;
	}
}

/* end end end */
}
#line default
namespace yydebug {
        using System;
	 public interface yyDebug {
		 void push (int state, Object value);
		 void lex (int state, int token, string name, Object value);
		 void shift (int from, int to, int errorFlag);
		 void pop (int state);
		 void discard (int state, int token, string name, Object value);
		 void reduce (int from, int to, int rule, string text, int len);
		 void shift (int from, int to);
		 void accept (Object value);
		 void error (string message);
		 void reject ();
	 }
	 
	 class yyDebugSimple : yyDebug {
		 void println (string s){
			 Console.WriteLine (s);
		 }
		 
		 public void push (int state, Object value) {
			 println ("push\tstate "+state+"\tvalue "+value);
		 }
		 
		 public void lex (int state, int token, string name, Object value) {
			 println("lex\tstate "+state+"\treading "+name+"\tvalue "+value);
		 }
		 
		 public void shift (int from, int to, int errorFlag) {
			 switch (errorFlag) {
			 default:				// normally
				 println("shift\tfrom state "+from+" to "+to);
				 break;
			 case 0: case 1: case 2:		// in error recovery
				 println("shift\tfrom state "+from+" to "+to
					     +"\t"+errorFlag+" left to recover");
				 break;
			 case 3:				// normally
				 println("shift\tfrom state "+from+" to "+to+"\ton error");
				 break;
			 }
		 }
		 
		 public void pop (int state) {
			 println("pop\tstate "+state+"\ton error");
		 }
		 
		 public void discard (int state, int token, string name, Object value) {
			 println("discard\tstate "+state+"\ttoken "+name+"\tvalue "+value);
		 }
		 
		 public void reduce (int from, int to, int rule, string text, int len) {
			 println("reduce\tstate "+from+"\tuncover "+to
				     +"\trule ("+rule+") "+text);
		 }
		 
		 public void shift (int from, int to) {
			 println("goto\tfrom state "+from+" to "+to);
		 }
		 
		 public void accept (Object value) {
			 println("accept\tvalue "+value);
		 }
		 
		 public void error (string message) {
			 println("error\t"+message);
		 }
		 
		 public void reject () {
			 println("reject");
		 }
		 
	 }
}
// %token constants
 class Token {
  public const int QUIT = 257;
  public const int EOL = 258;
  public const int EOF = 259;
  public const int NONE = 260;
  public const int ERROR = 261;
  public const int IDENTIFIER = 262;
  public const int INTEGER = 263;
  public const int NUMBER = 264;
  public const int STRING = 265;
  public const int HASH = 266;
  public const int AT = 267;
  public const int PERCENT = 268;
  public const int DOLLAR = 269;
  public const int DOT = 270;
  public const int BANG = 271;
  public const int COMMA = 272;
  public const int ASSIGN = 273;
  public const int STAR = 274;
  public const int PLUS = 275;
  public const int MINUS = 276;
  public const int DIV = 277;
  public const int OPEN_PARENS = 278;
  public const int CLOSE_PARENS = 279;
  public const int OPEN_BRACKET = 280;
  public const int CLOSE_BRACKET = 281;
  public const int OP_LT = 282;
  public const int OP_GT = 283;
  public const int COLON = 284;
  public const int PROCESSES = 285;
  public const int REGISTERS = 286;
  public const int PARAMETERS = 287;
  public const int LOCALS = 288;
  public const int TYPE = 289;
  public const int METHOD = 290;
  public const int PARENT = 291;
  public const int LENGTH = 292;
  public const int LOWER = 293;
  public const int UPPER = 294;
  public const int KIND = 295;
  public const int ACCESSIBLE = 296;
  public const int CONTENTS = 297;
  public const int LINE = 298;
  public const int NOT = 299;
  public const int UNKNOWN = 300;
  public const int FUNDAMENTAL = 301;
  public const int ARRAY = 302;
  public const int STRUCT = 303;
  public const int CLASS = 304;
  public const int POINTER = 305;
  public const int MODULES = 306;
  public const int SOURCES = 307;
  public const int METHODS = 308;
  public const int BREAKPOINTS = 309;
  public const int THREADGROUPS = 310;
  public const int GLOBAL = 311;
  public const int FRAME = 312;
  public const int START = 313;
  public const int SHOW = 314;
  public const int PROCESS = 315;
  public const int CONTINUE = 316;
  public const int BACKTRACE = 317;
  public const int UP = 318;
  public const int DOWN = 319;
  public const int STEP = 320;
  public const int NEXT = 321;
  public const int STEPI = 322;
  public const int NEXTI = 323;
  public const int FINISH = 324;
  public const int BREAK = 325;
  public const int PRINT = 326;
  public const int DISASSEMBLE = 327;
  public const int SET = 328;
  public const int ASSERT = 329;
  public const int BREAKPOINT = 330;
  public const int SAVE = 331;
  public const int KILL = 332;
  public const int THREADGROUP = 333;
  public const int SEARCH = 334;
  public const int LIST = 335;
  public const int SELECT = 336;
  public const int BACKGROUND = 337;
  public const int STOP = 338;
  public const int MODULE = 339;
  public const int IGNORE = 340;
  public const int UNIGNORE = 341;
  public const int ALL = 342;
  public const int ENABLE = 343;
  public const int DISABLE = 344;
  public const int DELETE = 345;
  public const int CREATE = 346;
  public const int ADD = 347;
  public const int REMOVE = 348;
  public const int HELP = 349;
  public const int yyErrorCode = 256;
 }
 namespace yyParser {
  using System;
  /** thrown for irrecoverable syntax errors and stack overflow.
    */
  public class yyException : System.Exception {
    public yyException (string message) : base (message) {
    }
  }

  /** must be implemented by a scanner object to supply input to the parser.
    */
  public interface yyInput {
    /** move on to next token.
        @return false if positioned beyond tokens.
        @throws IOException on input error.
      */
    bool advance (); // throws java.io.IOException;
    /** classifies current token.
        Should not be called if advance() returned false.
        @return current %token or single character.
      */
    int token ();
    /** associated with current token.
        Should not be called if advance() returned false.
        @return value for token().
      */
    Object value ();
  }
 }
} // close outermost namespace, that MUST HAVE BEEN opened in the prolog

--=-=-=


-- 
Martin Baulig
martin@gnome.org
martin@ximian.com

--=-=-=--