
获得徽章 10
- 极客时间 编译原理之美
收获:针对java高级语言的语义分析,理解了以前书上看到的的“语义分析阶段是符号化的过程”这句话
笔记:
语义分析会扫描ast,识别出代码中自定义的class类型并集中放在一个集合中(class在这个阶段被当做一个scope提供出当前类可使用的变量方法等),这样是为了让代码中任意位置都可以使用这个类的地方方便做变量类型消解(比如a=new A()后续使用a.获取变量调用方法的时候需要知道这个A类是否满足这个调用)
这里使用的上下文有关语法是因为不同高级语言的修饰符,访问范围是不同的,因此这里需要大量的上下文(也就是这个ast中的其他节点)才能够识别展开413