设计文件解析器的建议

时间:2009-01-28 10:18:32

标签: parsing

我正在尝试设计一个edifact解析器,我计划让一个类读取文件,一个类映射数据,然后另一个类来处理数据存储。我遇到一个主要问题的部分是这些类的实例应该如何相互通信。任何建议将不胜感激。

1 个答案:

答案 0 :(得分:2)

我认为没有必要让类进行通信(传递消息),但会建议使用一些策略模式。

你将有一个类来读取文件并理解它的语法。例如,可以处理空格并返回格式化信息的内容,如'token','word'等。

读取和解析语法的类被传递到语义解析器。语义解析器理解其含义。例如,您可能会按此顺序指望“Id,command,token,string”。语义解析器可能使用命令模式。

Semantic类输出结构化数据,因此传递到结构构建器(构建器模式)。

所以你的代码看起来像;

MyDataStructure = DataBuilder(SemanticParser(SyntaxParse(FileReader(filename))));

HTH