驱动代码功能很简单,即在解析时调用相应的解析函数。其中没有什么有趣的地方,让我们看看这部分的代码:

结论""

  1. ready> def foo(x y) x+foo(y, 4.0);
  2. Parsed a function definition.
  3. ready> def foo(x y) x+y y;
  4. Parsed a top-level expr
  5. ready> def foo(x y) x+y );
  6. Parsed a function definition.
  7. ready> extern sin(a);
  8. ready> Parsed an extern
  9. ready> ^D

目前Kaleidoscope还有很多扩展空间,比如你可以定义新的AST节点,扩展语法等等。在下一章,我们将介绍如何从AST生成LLVM中间代码(Intermediate Representation,简称IR)