Skip to content
许兴逸 edited this page Sep 25, 2021 · 9 revisions

编译器概述

目标代码生成器所可以获取的中间形式

编译阶段

加载项目

https://github.com/Strrationalism/YukimiScript/blob/967c4761dfc19da4f5aec27752a5cfd4503b802a/YukimiScript.Parser/Project.fs#L12

按行解析

https://github.com/Strrationalism/YukimiScript/blob/967c4761dfc19da4f5aec27752a5cfd4503b802a/YukimiScript.Parser/Parser.fs#L46

产生DOM

https://github.com/Strrationalism/YukimiScript/blob/967c4761dfc19da4f5aec27752a5cfd4503b802a/YukimiScript.Parser/Dom.fs#L131

合并libs

https://github.com/Strrationalism/YukimiScript/blob/967c4761dfc19da4f5aec27752a5cfd4503b802a/YukimiScript.Parser/Dom.fs#L14

合法性检查:

  • 不应当存在重复定义的externs与macros
  • 不应当存在scene定义

展开文本命令

https://github.com/Strrationalism/YukimiScript/blob/967c4761dfc19da4f5aec27752a5cfd4503b802a/YukimiScript.Parser/Dom.fs#L157

展开用户定义的宏

https://github.com/Strrationalism/YukimiScript/blob/967c4761dfc19da4f5aec27752a5cfd4503b802a/YukimiScript.Parser/Dom.fs#L176

产生剧情图

https://github.com/Strrationalism/YukimiScript/blob/967c4761dfc19da4f5aec27752a5cfd4503b802a/YukimiScript.Parser/Diagram.fs#L34

合并所有DOM

https://github.com/Strrationalism/YukimiScript/blob/967c4761dfc19da4f5aec27752a5cfd4503b802a/YukimiScript.Parser/Dom.fs#L14

合法性检查:

  • 不应当存在重复定义的externs与macros

展开系统宏

https://github.com/Strrationalism/YukimiScript/blob/967c4761dfc19da4f5aec27752a5cfd4503b802a/YukimiScript.Parser/Dom.fs#L187

链接外部定义

https://github.com/Strrationalism/YukimiScript/blob/967c4761dfc19da4f5aec27752a5cfd4503b802a/YukimiScript.Parser/Dom.fs#L215

生成目标代码

Clone this wiki locally