IUC notes
总的来说,Lec1后半段没有听懂
concrete syntax 和 abstract syntax tree的对应关系
也许最简单的程序是42,也许这个简单程序对应的concrete syntax produces the answer to life,the universe and everything.
a grammer is a way to define languages.so languages are sets of programs.they're usually infinite sets.so what's the difference with non-racket programs?we are going to use a bunch of rules to define
在本课程中不再使用S-expression,改用了struct,主要是在于错误处理和美观打印
Grammer rules to define language
exp ::= int
exp ::= (read)
exp ::= (- exp) | (+ exp exp)
R0 ::= exp
these rules are recursive.it's ok that we have some rules are not recursive.
显然 (- 42)属于R0程序,过程是
(- 42) -> (- exp) -> exp -> R0,这个过程也被称为parse tree
但这门课跳过了这个阶段,需要自己寻找材料阅读,所以我可能需要考虑一下
Grammer for abstract syntax
structual recursive function