CS314

Assignment 1

1 Rewrite Systems

Remember our rewriting “game” in the first lecture.

(a) Given the same input, i.e., a sequence of characters starting with $ and

ending with #, and any combination of 0s and 1s in-between, specify

a set of rewrite rules that determine whether the string contains the

same number of 0s and 1s.

Here is some sample “output”:

$0011# should be rewritten as $#

$1001# should be rewritten as $#

$110110# should be rewritten as $11#

$0001100# should be rewritten as $000#

In other words, the $# indicates that the input string has the same

number of 0s and 1s. If the string does not contain the same number

of 0s and 1s, the resulting string shows how many more 0s or 1s there

are in the input string.

(b) Is there at most only a single rewrite rule that can be applied at any

point in time during the rewrite process? Explain.

(c) Show the steps of your rewrite system for the input strings $0101# and

$10110#.

2 Regular Expressions

Write a regular expression for numeric constants in C. These are octal, decimal, or hexadecimal integers, or decimal or hexadecimal floating-point values.

An octal integer begins with 0, and may contain only the digits 0-7. A hexadecimal integer begins with 0x or 0X, and may contain the digits 0-9 and

a/A-f/F. A decimal floating-point value has a fractional portion (beginning

1

with a dot) or an exponent (beginning with E or e). Unlike a decimal integer, it is allowed to start with 0. A hexadecimal floating-point value has

an optional fractional portion and a mandatory exponent (beginning with

P or p). In either decimal or hexadecimal, there may be digits to the left

of the dot, the right of the dot, or both, and the exponent itself is given in

decimal, with an optional leading + or – sign. An integer may end with an

optional U or u (indicating ”unsigned”), and/or L or l (indicating ”long”)

or LL or ll (indicating ”long long”). A floating-point value may end with

an optional F or f (indicating ”float” – single precision) or L or l (indicating

”long” – double precision). A decimal floating point number may start with

an optional + or − sign.

3 Regular Expressions

Describe the formal languages denoted by the following regular expressions

using the English language (e.g.: All strings over the alphabet . . . that have

the property . . .):

(a) ((? | 1) 0*)*

(b) (0|1)*1(0|1)(0|1)

(c) (00|11)* ((01|10)(00|11)*(01|10)(00|11)*)*

4 Regular Expressions

Write a regular expression for the following languages.

(a) All strings of a’s, b’s, and c’s that contain no a’s following any b’s.

(b) All strings of a’s, b’s, and c’s that do not contain more than 2 a and 2

b’s.

2

Sale!