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
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
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*)*
(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