为了帮助提供一些背景知识,我正在尝试编写一个逐行接收长文件的解析器。
程序将根据收到的信息设置不同的状态。将其视为在文件中达到某个“检查点”并设置标志 - >是真的基于它。我正在努力追踪这些“检查站”,但我知道使用旗帜和if语句会使我的生活从长远来看变得困难。
示例情况:
**State 1 (requires the following variables to be set to true):**
foo -> true, bar -> true, red -> false
**State 2:**
requires state 1 to be fulfilled, as well as, blue -> true, green-> false, yellow -> true
**State 3:**
requires states 1/2 to be fulfilled, along with added variables, so on and so forth.
正如您所看到的,这些标志/状态将由于彼此之间的依赖性而不断累积。
希望这一切都有道理。我可以使用哪些提示/策略来干净地编程所有这些?
答案 0 :(得分:0)
我的猜测是你没有context-free grammar?
如果你有一个无上下文的语法,你可以使用一个无上下文的解析器生成器;有很多工具可以为无上下文语法创建解析器。搜索的关键词:解析器生成器。
通常,解析上下文敏感语法的最简单方法是使用解析器生成器构建解析器,该解析器生成器可以解析实际语法的无上下文超集,然后执行第二个解析阶段以执行上下文敏感检查。