我想写一个简单的编译器。 在它的语法中,每一行都包含(只是)一个陈述。
1)首先扫描仪完成他的工作;所以对于每一行,我们都有令牌。
2)对于每一行我们检查它的类型(如果是stm,对于stm,var defintion,end,......)。 在此步骤中,他们键入的行被诊断出来。例如:
func definition
var def
assignment
for stm
...
end
end
3)现在是检查行顺序的时候了。
换句话说,我们检查:
1)单独使用每个单词(扫描仪)
2)单独每行(行语法)
3)行块(编程语言语法)
我的问题: 解析步骤是2?还是3?或2& 3? 我认为它不是解析器的标准方法。如果我认为对,有什么不对?什么是解决方案?
答案 0 :(得分:1)
不,它不是标准的,它几乎肯定不会起作用。首先,在大多数编程语言中,行是无关紧要的。另一方面,订单检查不是一个明确的阶段。它是语法识别的全部内容。这里太宽泛了。我建议你读一本好书。