ng:语言细节

  • a.b(c)b(a, c)等价

  • =>等价于return

  • 函数签名后直接跟一个语句即可,也即fun id(x) => x;

  • else始终与最近的if相关联,除非选择用{}复合语句来隔

  • 运算符统一采用左结合,并且不设置优先级

  • 暂且不考虑数字符号,比如+1-3

  • 以上两条主要是因为太懒了而且用简单的递归下降不太好实现

语法树目前直接用生指针实现,后期可以考虑实现专用的智能指针或者用std::shared_ptr,通过ASTRef来delegate:

template
using ASTRef = ...;

template
ASTRef makeast(Args&&... args);

template
void destoryast(ASTRef);

你可能感兴趣的:(ng:语言细节)