]> gitweb.ps.run Git - toc/blobdiff - antlr4-cpp-runtime-4.9.2-source/runtime/src/tree/ParseTreeWalker.h
add antlr source code and ReadMe
[toc] / antlr4-cpp-runtime-4.9.2-source / runtime / src / tree / ParseTreeWalker.h
diff --git a/antlr4-cpp-runtime-4.9.2-source/runtime/src/tree/ParseTreeWalker.h b/antlr4-cpp-runtime-4.9.2-source/runtime/src/tree/ParseTreeWalker.h
new file mode 100644 (file)
index 0000000..166ad80
--- /dev/null
@@ -0,0 +1,55 @@
+/* Copyright (c) 2012-2017 The ANTLR Project. All rights reserved.
+ * Use of this file is governed by the BSD 3-clause license that
+ * can be found in the LICENSE.txt file in the project root.
+ */
+
+#pragma once
+
+#include "antlr4-common.h"
+
+namespace antlr4 {
+namespace tree {
+
+  class ANTLR4CPP_PUBLIC ParseTreeWalker {
+  public:
+    static ParseTreeWalker &DEFAULT;
+
+    virtual ~ParseTreeWalker();
+    
+    /**
+    * <summary>
+    * Performs a walk on the given parse tree starting at the root and going down recursively
+       * with depth-first search. On each node, <seealso cref="ParseTreeWalker#enterRule"/> is called before
+    * recursively walking down into child nodes, then
+    * <seealso cref="ParseTreeWalker#exitRule"/> is called after the recursive call to wind up.
+       * </summary>
+    * <param name='listener'> The listener used by the walker to process grammar rules </param>
+       * <param name='t'> The parse tree to be walked on </param>
+    */
+    virtual void walk(ParseTreeListener *listener, ParseTree *t) const;
+
+  protected:
+    
+    /**
+    * <summary>
+    * Enters a grammar rule by first triggering the generic event <seealso cref="ParseTreeListener#enterEveryRule"/>
+       * then by triggering the event specific to the given parse tree node
+       * </summary>
+    * <param name='listener'> The listener responding to the trigger events </param>
+       * <param name='r'> The grammar rule containing the rule context </param>
+    */
+    virtual void enterRule(ParseTreeListener *listener, ParseTree *r) const;
+    
+    /**
+    * <summary>
+    * Exits a grammar rule by first triggering the event specific to the given parse tree node
+       * then by triggering the generic event <seealso cref="ParseTreeListener#exitEveryRule"/>
+       * </summary>
+    * <param name='listener'> The listener responding to the trigger events </param>
+       * <param name='r'> The grammar rule containing the rule context </param>
+    */
+    virtual void exitRule(ParseTreeListener *listener, ParseTree *r) const;
+  };
+
+} // namespace tree
+} // namespace antlr4