的得啊13d.doc

  1. 1、本文档共2页,可阅读全部内容。
  2. 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
的得啊13d

Asdf 2010-2011 秋 学期 作业B: 标记语言的简单解释器算法实现 上交截止时间:2011年10月20日 晚:23:59 在本次作业中,将使用一种类似 XML 的文本标记语言来描述一种含有分支和层次结构的成员信息,(有关 XML 的更多信息,请参考 W3C 网站)请你设计一个简单的语言解释器, 它可以读入一个简单的文本标记文件,并提取和 转换相应的成员关系信息。文件内容如下所示。 一个简单的文本标记文件: class student nameABC/name id123456/id group1 /student /class 每组标记包含两部分:标记名称和标记值。例如, id123456/id是一组标记。标记名称包含在一对尖括号中 ( 和 ), id 称为标记头, /id 称为标记尾。 标记头和标记尾之间的称为标记的值。 在上面的例子中, 标记名称=id, 标记值=123456;而 group1 则是标记名称=student 的标记值。首尾标记名称及标记值可以分行写,但 表记名之间不能被回车分割,所有的标记值字符串不能被回车行或者其他标记分割。 有时候,在标记头和标记尾之间还可以嵌入其他标记组。如标记 student 包含了标记 name 和标记 id 作 为它的值,我们称这种包含关系为父-子关系。 或者说, student 是 name 和 id的父亲。 这种简单的文本标记文件可以用一种树状结构来描述, 它由一组结点的集合组成。如下图所示, 上述的文件中的 标记语句描述的是一棵包含了 4 个结点(用圆圈表示)的树。在这个成员信息中每个结点包含 3 个成员变量: ? 一个称为 name 的字符串变量- 用于存储结点的名称 ? 一个称为 value 的字符串变量- 用于存储结点的值 ? 一个指向儿子的指针数组 - 用于指向当前结点的各个儿子结点 ? 如果需要, 你也可以加上其它的成员变量。 name: class value: null Child Elements name: student value: group1 name: name value: ABC name: id value: 123456 1 这个作业的目标是需要你编制一个程序,读入一个文本标记文件,然后从顶部(根结点)按层次顺序打印出该树 状结构的所有结点(每行打印一个结点的内容), 每层按从左到右的顺序打印该层的节点。每个结点包含它的 3 个成 员变量值。 每个结点内容的打印顺序为:结点编号 - 结点标记名称:标记值,儿子:儿子结点标号,儿子结点标号,(( 例如,上面的文件将打印输出如下: Element 1- class : null, child: Element 2 Element 2 - student: group1, child: Element 3, Element 4 Element 3 - name : ABC, child: null Element 4 - id: 123456, child null 注意,在你的作业中不允许使用现成的 XML 解释器。 输入的文件是一个括号完全匹配的有效的 XML 文件。 每 个结点的儿子数可以不相同,层次的深度也不限定。尖括号 之间无空格。 你的程序首先应当检查括号的匹配情况。如果括号不匹配,应能报告错误并退出程序的运行。 以下是你可以用来测试验证你的程序的 XML 实例文件:test.xml 和对应的结果输出文件:Testoutput 你的程序的运行格式是:程序文件名 输入的文件标记名回车,例如:yourprogram test.xml 2

文档评论(0)

asd522513656 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档