用户工具

站点工具


01-基础学习:课程:编译原理:作业:3

第三章 词法分析

Exercise 3.1

1.将下面 C++ 程序😘
<code c> float limitedSquare (x) {float x; /
returns x-squared , but never more than 100 / return (x⇐- 10.0 || x>=1 0 . 0) ? 100 : xx; }</code> 划分成正确的词素序列。哪些词素应该有关联的语法值?应该具有什么值?

<float> <id, limitedSquaare> <(> <id, x> <)> <{>
    <float> <id, x>
    <return> <(> <id, x> <op,"<="> <num, -10.0> <op, "||"> <id, x> <op, ">="> <num, 10.0> <)> <op, "?"> <num, 100> <op, ":"> <id, x> <op, "*"> <id, x>
<}>

2.HTML 或 XML 之类的标记语言不同于传统的程序设计语言,他们要么包含有很多的标点符号(标记),如 HTML, 要么使用由用户自定义的标记集合,如 XML。而且标记还可以带有参数。请指出如何把如下的 HTML 文档
<code html> Here is a photo of <b>my house</b>; <p><img src=“house.gif”/><br/> see <a href=“morePix.html”>More Picture</a> if you liked that one.</p></code>
划分成适当的词素序列。哪些词素应该具有相关联的语法值?应该具有什么样的值?

<text, "Here is a photo of"> <nodestart, b> <text, "my house"> <nodeend, b>
<nodestart, p> <selfendnode, img> <selfendnode, br>
<text, "see"> <nodestart, a> <text, "More Picture"> <nodeend, a>
<text, "if you liked that one."> <nodeend, p>

Exercise 3.3

2.试描述下列正则表达式定义的语言: - a(a|b)a - ((ε|a)b) - (a|b)a(a|b)(a|b) - abababa - (aa|bb)((ab|ba)(aa|bb)(ab|ba)(aa|bb))

  1. 由 a 开头并结尾的由 a 和 b 构成的字符串。
  2. 由 a 和 b 构成的字符串。
  3. 倒数第 3 位为 a 的由 a 和 b 构成的字符串。
  4. 仅含 3 个 b 的由 a 和 b 构成的字符串。
  5. 含有偶数个 a 和偶数个 b 的由 a 和 b 构成的字符串。

5.试写出下列语言的正则定义
- 包含5个元音的所有小写字母串,这些串中的元音按顺序出现 - 所有由按词典递增序列的小写字母组成的串 - 注释,由 /* 和 / 之间的串,且串中没有不在双引号中的 */ - !! 所有不重复的数位组成的串 (即允许 101 这样的串,但不允许 110 这样的串) - !! 所有由偶数个 a 和奇数个 b 构成的串 - 以非正式的方法表示的国际象棋的步法的集合,如 p - k4 或者 kbp x qn - !! 所有由 a 和 b 组成且不含子串 abb 的串 - 所有由 a 和 b 组成且不含子序列 abb 的串

1.

want -> other* a (other|a)* e (other|e)* i (other|i)* o (other|o)* u (other|u)*
other -> [bcdfghjklmnpqrstvwxyz]

2.

a* b* ... z*

3.

3

4

5

6

7

01-基础学习/课程/编译原理/作业/3.txt · 最后更改: 2020/04/07 06:34 由 annhe