构建文档格式的解释器

时间:2009-11-06 20:54:00

标签: c# data-structures document

我将开始开发自己的文档格式(如PDF,XPS,DOC,RTF ......),但我想知道在哪里可以阅读一些教程,操作方法......?我不想要代码,这是一个我想学习如何构建它的项目,而不是使用其他人的经验。

PS:我想把它变成一个XML文件:

[Command Argument="Define it" Argument2="Something"]

就像PDF一样,但是这个语法将被我用C#构建的程序解释,就像HTML和浏览器一样;)

请记住,我的问题是关于将解释此代码的程序,但最好从解释XML代码的教程开始;)

5 个答案:

答案 0 :(得分:3)

我认为你这样做是为了学习如何做到这一点。如果是这样的话,这是值得冒险的,我理解。

您将首先学习LL解析器和语法。这将帮助您将已从文件中读取的文档解释为文档对象模型(DOM)。从那里,您可以创建操作或渲染该文档树的例程。

祝你好运!

答案 1 :(得分:2)

我对你要问的内容感到困惑,但如果你需要自己的格式喜欢一个XML文件,为什么不用使用 XML来描述格式?

编辑:好的,我想我现在明白了。如果你这样做是为了娱乐和学习(这很棒),那么有很多方法可以采取。事实上,做任何研究甚至可能更好,尝试自己想出一个解决方案,看看它是否有效,你需要做些什么才能做得更好等等。 / p>

答案 2 :(得分:1)

为了学习新的东西,禁止你重新发明轮子。尝试这一点对你有好处。但是,如果您要询问有关如何操作的问题,则需要更多地指出您的问题 您在寻找帮助:

  • 设计框架/格式
  • 计划您的时间/估算截止日期
  • 使用XML
  • 使用C#
  • 构建基于Web的C#应用​​程序
  • 构建基于PC的C#应用​​程序
  • 完全发展的其他方面

这里有很多人想要帮助 - 但最好的答案是针对重点问题(不一定是具体的,但始终是重点突出的。)

答案 3 :(得分:1)

有几种方法可以解决这个问题。一种方法是首先定义文件的格式,然后使用解析器生成器来创建可以读取该格式的C#代码。在“c#parser generator”上进行谷歌搜索,可以获得可以使用的许多不同库的链接。

或者,您可以从头开始编写自己的解析器代码。这比使用解析器生成工具更有用,但最终可能更具教育意义。

对于简单格式,define-a-grammar方法可能完全过度。解决该问题的另一种方法是设计首先在应用程序中使用的对象树,然后编写序列化和反序列化例程以保存和加载文件中的内容。 C#中的序列化接口非常灵活,您可以轻松地序列化为二进制或XML文件。

我认为创建自己的序列化程序以创建一个格式化的文件应该相对简单,但是MSDN今天不是我的朋友,所以我找不到相关的文档。

答案 4 :(得分:1)

听起来像是一个很好的学习项目,你已经有了一些好的指针。我想补充一点,你应该记住,文档文件语言和文档格式之间存在差异。

考虑OOXML,它是一种基于XML构建的文档格式(我将其描述为文件语言)。如果您的目的是学习构建自己的文档格式,那么我强烈建议您从XML开始,这样您就不必重新构建语言解析器。这将让您专注于构建格式的问题。

那就是说,如果你想要创造自己的语言,那就很好;只是想确保你意识到他们是不同的野兽。

以下是一些有助于您开始在C#中使用XML的链接: