mention possibility of using a visitor
authorChris Lattner <sabre@nondot.org>
Mon, 5 Nov 2007 19:25:14 +0000 (19:25 +0000)
committerChris Lattner <sabre@nondot.org>
Mon, 5 Nov 2007 19:25:14 +0000 (19:25 +0000)
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@43726 91177308-0d34-0410-b5e6-96231b3b80d8

docs/tutorial/LangImpl3.html

index 3733a66bfcff7f3b3d3a190e0c54141879b0ee1d..3e629287cc337cb51a71d6fa918ccd3f27771047 100644 (file)
@@ -62,7 +62,7 @@ we define virtual codegen methods in each AST class:</p>
 class ExprAST {
 public:
   virtual ~ExprAST() {}
-  virtual Value *Codegen() = 0;
+  <b>virtual Value *Codegen() = 0;</b>
 };
 
 /// NumberExprAST - Expression class for numeric literals like "1.0".
@@ -70,7 +70,7 @@ class NumberExprAST : public ExprAST {
   double Val;
 public:
   explicit NumberExprAST(double val) : Val(val) {}
-  virtual Value *Codegen();
+  <b>virtual Value *Codegen();</b>
 };
 ...
 </pre>
@@ -88,6 +88,11 @@ more information, please read up on <a
 href="http://en.wikipedia.org/wiki/Static_single_assignment_form">Static Single
 Assignment</a> - the concepts are really quite natural once you grok them.</p>
 
+<p>Note that instead of adding virtual methods to the ExprAST class hierarchy,
+it could also make sense to use a visitor pattern or some other way to model
+this.  Again, this tutorial won't dwell on good software engineering practices:
+for our purposes, adding virtual methods is simplest.</p>
+
 <p>The
 second thing we want is an "Error" method like we used for parser, which will
 be used to report errors found during code generation (for example, use of an