summaryrefslogtreecommitdiff
path: root/cli/traversal/option.hxx
diff options
context:
space:
mode:
authorBoris Kolpackov <boris@codesynthesis.com>2009-09-05 16:29:23 +0200
committerBoris Kolpackov <boris@codesynthesis.com>2009-09-05 16:29:23 +0200
commit4974b4763bd60eb875f93a71dbe2fe82ecfed9fc (patch)
tree9353fb3fec3fa5f77f1faaf6da8185e3d006e7ba /cli/traversal/option.hxx
parente2299f6d95ba3264072d6ddc49f153ad73fd9d24 (diff)
Add semantic graph and traversal mechanism
The parser now builds the semantic graph.
Diffstat (limited to 'cli/traversal/option.hxx')
-rw-r--r--cli/traversal/option.hxx75
1 files changed, 75 insertions, 0 deletions
diff --git a/cli/traversal/option.hxx b/cli/traversal/option.hxx
new file mode 100644
index 0000000..4ff2a58
--- /dev/null
+++ b/cli/traversal/option.hxx
@@ -0,0 +1,75 @@
+// file : cli/traversal/option.hxx
+// author : Boris Kolpackov <boris@codesynthesis.com>
+// copyright : Copyright (c) 2009 Code Synthesis Tools CC
+// license : MIT; see accompanying LICENSE file
+
+#ifndef CLI_TRAVERSAL_OPTION_HXX
+#define CLI_TRAVERSAL_OPTION_HXX
+
+#include <traversal/elements.hxx>
+#include <semantics/option.hxx>
+
+namespace traversal
+{
+ struct belongs: edge<semantics::belongs>
+ {
+ belongs ()
+ {
+ }
+
+ belongs (node_dispatcher& n)
+ {
+ node_traverser (n);
+ }
+
+ virtual void
+ traverse (type&);
+ };
+
+ struct initialized: edge<semantics::initialized>
+ {
+ initialized ()
+ {
+ }
+
+ initialized (node_dispatcher& n)
+ {
+ node_traverser (n);
+ }
+
+ virtual void
+ traverse (type&);
+ };
+
+ struct option: node<semantics::option>
+ {
+ virtual void
+ traverse (type&);
+
+ virtual void
+ pre (type&);
+
+ virtual void
+ belongs (type&);
+
+ virtual void
+ initialized (type&);
+
+ virtual void
+ post (type&);
+
+ void
+ belongs (type& o, edge_dispatcher& d)
+ {
+ d.dispatch (o.belongs ());
+ }
+
+ void
+ initialized (type& o, edge_dispatcher& d)
+ {
+ d.dispatch (o.initialized ());
+ }
+ };
+}
+
+#endif // CLI_TRAVERSAL_OPTION_HXX