00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025
00026
00027
00028
00029
00030
00031
00032
00033
00034
00035 namespace Antlr.Runtime.Debug
00036 {
00037 using System;
00038 using Antlr.Runtime;
00039 using ITreeAdaptor = Antlr.Runtime.Tree.ITreeAdaptor;
00040 using ITreeNodeStream = Antlr.Runtime.Tree.ITreeNodeStream;
00041
00042
00046 public class TraceDebugEventListener : BlankDebugEventListener
00047 {
00048 ITreeAdaptor adaptor;
00049
00050 public TraceDebugEventListener(ITreeAdaptor adaptor)
00051 {
00052 this.adaptor = adaptor;
00053 }
00054
00055 override public void EnterRule(string grammarFileName, string ruleName) {
00056 Console.Out.WriteLine("EnterRule " + grammarFileName + " " + ruleName);
00057 }
00058 override public void ExitRule(string grammarFileName, string ruleName) {
00059 Console.Out.WriteLine("ExitRule " + grammarFileName + " " + ruleName);
00060 }
00061 override public void EnterSubRule(int decisionNumber) { Console.Out.WriteLine("EnterSubRule"); }
00062 override public void ExitSubRule(int decisionNumber) { Console.Out.WriteLine("ExitSubRule"); }
00063 override public void Location(int line, int pos) { Console.Out.WriteLine("Location " + line + ":" + pos); }
00064
00065 #region Tree parsing stuff
00066
00067 override public void ConsumeNode(object t)
00068 {
00069 int ID = adaptor.GetUniqueID(t);
00070 string text = adaptor.GetNodeText(t);
00071 int type = adaptor.GetNodeType(t);
00072 Console.Out.WriteLine("ConsumeNode " + ID + " " + text + " " + type);
00073 }
00074
00075 override public void LT(int i, object t)
00076 {
00077 int ID = adaptor.GetUniqueID(t);
00078 string text = adaptor.GetNodeText(t);
00079 int type = adaptor.GetNodeType(t);
00080 Console.Out.WriteLine("LT " + i + " " + ID + " " + text + " " + type);
00081 }
00082
00083 #endregion
00084
00085 #region AST stuff
00086
00087 override public void GetNilNode(object t)
00088 {
00089 Console.Out.WriteLine("GetNilNode " + adaptor.GetUniqueID(t));
00090 }
00091
00092 override public void CreateNode(object t)
00093 {
00094 int ID = adaptor.GetUniqueID(t);
00095 string text = adaptor.GetNodeText(t);
00096 int type = adaptor.GetNodeType(t);
00097 Console.Out.WriteLine("Create " + ID + ": " + text + ", " + type);
00098 }
00099
00100 override public void CreateNode(object t, IToken token)
00101 {
00102 int ID = adaptor.GetUniqueID(t);
00103
00104 int tokenIndex = token.TokenIndex;
00105 Console.Out.WriteLine("Create " + ID + ": " + tokenIndex);
00106 }
00107
00108 override public void BecomeRoot(object newRoot, object oldRoot)
00109 {
00110 Console.Out.WriteLine("BecomeRoot " + adaptor.GetUniqueID(newRoot) + ", " + adaptor.GetUniqueID(oldRoot));
00111 }
00112
00113 override public void AddChild(object root, object child)
00114 {
00115 Console.Out.WriteLine("AddChild " + adaptor.GetUniqueID(root) + ", " + adaptor.GetUniqueID(child));
00116 }
00117
00118 override public void SetTokenBoundaries(object t, int tokenStartIndex, int tokenStopIndex)
00119 {
00120 Console.Out.WriteLine("SetTokenBoundaries " + adaptor.GetUniqueID(t) + ", " + tokenStartIndex + ", " + tokenStopIndex);
00121 }
00122
00123 #endregion
00124 }
00125 }
00126