我正在尝试为资源 API 创建一个简单的脚本。我有一个资源API,主要以结构化的方式创建游戏资源。我想要的是处理这个 API,而不是每次我想要一个资源时都创建 c++ 程序。所以我们(我和我来自 uni 的导师)决定创建一个简单的脚本来创建/编辑资源文件,而无需每次都编译。还有一些其他不相关的因素,我需要命令行界面而不是 GUI 程序。
无论如何,这是脚本示例:
<path>.<command> -<options>
/Graphics[3].add "blabla.png"
这种脚本语言不是我设计的,API 的所有者设计的。'.' 之前的部分 你可以猜到'.'之后的路径和部分。是实际命令和一些选项、标志等。作为第一步,我尝试创建左侧部分的语法,因为我认为我可以在搜索有关词法分析器和解析器的信息时使用它。问题是我在解析和编程语言方面缺乏经验,我不确定它是否正确。这是左侧的更多示例和语法。
dir -> '/' | '/' path
path -> object '/' path | object
object -> number | string '[' number ']'
如果这个语法可能是一团糟,我不知道。有 5 种不同的可能性,它们是:
String
"String"
Number
String[Number]
"String"[Number]
它必须以'/'符号开头,如果它是唯一的符号,我会接受它作为根。
现在我的问题是如何在词法上分析这个脚本?有什么特别的方法吗?我的词法分析器应该做什么和不应该做什么(我读过一些词法分析器也做了句法分析)。您认为语法等在技术上是否合适?我应该使用哪种解析方法(递归下降、LL 等)?我正在努力使它在技术上适合工作。它不是商业的,所以我有时间,因此我可以更好地学习词法分析和解析。我不想使用解析器库。