如果我有不正确的术语,请原谅我;也许仅仅用“正确”的词来描述我想要的就足以让我自己找到答案。
我正在开发 ODL(对象描述语言)的解析器,据我所知,这是一种神秘的语言,现在只有 NASA PDS(行星数据系统;这是 NASA 向公众提供其数据的方式)使用。幸运的是,PDS 终于转向 XML,但我仍然必须为在截止日期前落下的任务编写软件。
ODL 以类似以下方式定义对象:
OBJECT = TABLE
ROWS = 128
ROW_BYTES = 512
END_OBJECT = TABLE
我正在尝试使用 编写解析器pyparsing
,并且在进行上述构造之前我做得很好。
我必须创建一些规则,以确保 OBJECT 行的右侧值与 END_OBJECT 的 RHV 相同。但我似乎无法将其纳入pyparsing
规则。我可以确保两者都是语法上有效的值,但我不能采取额外的步骤来确保值相同。
- 我的直觉是否正确,这是一种上下文相关的语法?这是我应该用来描述这个问题的短语吗?
- 无论是理论上的哪种语法,都
pyparsing
能够处理这种结构吗? - 如果
pyparsing
无法处理它,是否有另一个 Python 工具能够这样做?怎么样( /ply
的 Python 实现)?lex
yacc