• No results found

Preliminaries AndresL¨ohWednesday,3February2010,09:00–12:00 INFOB3TC–Exam

N/A
N/A
Protected

Academic year: 2021

Share "Preliminaries AndresL¨ohWednesday,3February2010,09:00–12:00 INFOB3TC–Exam"

Copied!
4
0
0

Bezig met laden.... (Bekijk nu de volledige tekst)

Hele tekst

(1)

Department of Information and Computing Sciences Utrecht University

INFOB3TC – Exam

Andres L ¨oh

Wednesday, 3 February 2010, 09:00–12:00

Preliminaries

• The exam consists of 4 pages (including this page). Please verify that you got all the pages.

• Write your name and student number on all submitted work. Also include the total number of separate sheets of paper.

• For each task, the maximum score is stated. The total amount of points you can get is 100.

• Try to give simple and concise answers. Write readable. Do not use pencils or pens with red ink.

• You may answer questions in Dutch or English.

• When writing Haskell code, you may use Prelude functions and functions from the Data.List, Data.Maybe, Data.Map, Control.Monad modules. Also, you may use all the parser combinators from the uu-tc package. If in doubt whether a certain function is allowed, please ask.

Good luck!

1

Dit tentamen is in elektronische vorm beschikbaar gemaakt door de TBC van A–Eskwadraat.

A–Eskwadraat kan niet aansprakelijk worden gesteld voor de gevolgen van eventuele fouten in dit tentamen.

1

(2)

DFAs

1(10 points). Consider the following Haskell lexer:

lex, lex0, lex1, lex2, lex3:: String→Bool lex=lex0

lex0(’1’: xs) =lex1 xs lex0(’0’: xs) =lex2 xs lex0 =False lex1(’0’: xs) =lex1 xs lex1(’1’: xs) =lex1 xs lex1(’.’: xs) =lex3 xs lex1 =False lex2(’.’: xs) =lex3 xs lex2 =False lex3(’0’: xs) =lex3 xs lex3(’1’: xs) =lex3 xs lex3[] =True lex3 =False

Give a deterministic finite state automaton that accepts the same language as the Haskell

code. •

Consider the following nondeterministic finite state automaton:

start S A

B C

a

a a b

a b

2(4 points). Give two different words of length at least 5 that are accepted by the automa-

ton. •

3(10 points). Transform the automaton given above into an equivalent deterministic finite- state automaton. It is not necessary to include any unreachable states, but the correspon- dence with the original automaton should be made obvious, for example by using the

standard construction and naming nodes adequately. •

Regular expressions

Consider the following Haskell datatype that describes regular expressions over an alpha- bet type s:

2

2

(3)

data Regex s=Empty

| Epsilon

| Const s

| Sequ (Regex s) (Regex s)

| Plus (Regex s) (Regex s)

| Star (Regex s)

4(4 points). Translate the regular expression (aa+b)

into a value of type Regex Char. •

5(10 points). Define a function

regexParser :: Eq s⇒Regex s→Parser s[s]

using the parser combinators such that regexParser r is a parser for the language described by the regular expression r. The parser should return the list of symbols recognized. • 6 (10 points). Define an algebra type RegexAlgebra and a fold function foldRegex for the Regex type. (Note that regexParser could be written as a call to foldRegex. It is, however, not

part of the task to do so.) •

Regular vs. context-free

7(10 points). Consider the language described by the following grammar with start sym- bol S:

S→aSa|B B→b|bB

(a) Give a characterization of the words that belong to the language.

(b) Is the language regular? If yes, give a regular expression that describes the language.

If not, use the pumping lemma to prove that the language cannot be regular. • 8(10 points). Consider the language over alphabet A= {a, b}that contains all words with at least three ‘b’s.

(a) Give a context-free grammar for the language.

(b) Is the language regular? If yes, give a regular expression that describes the language.

If not, use the pumping lemma to prove that the language cannot be regular. • 9(6 points). Let L be a language that is context-free, but not regular. Is it possible that the

complement of L is regular? Explain your answer. •

3

2

(4)

LL and LR parsing

Consider the following grammar, with start symbol S:

S →OSS|V O→+|ε V→1|x

10(8 points). Compute the empty property, the first and follow sets for all nonterminals. Is

the grammar LL(1)? •

We augment the grammar above in preparation for LR parsing:

S0 →S$

and S0becomes the new start symbol.

The LR(0) automaton corresponding to the full grammar looks as follows (each state is only labelled by its kernel items, and numbered before the production for future reference):

(0) S0 → •S$

start

(1) V→1• (2) V→x• (3) O→+•

(4) S→O•SS (5) S→OS•S

(6) S→OSS• (7) S→V•

(8) S0 →S•$

1 x

+

S

O

V V

V S

O

O

S 1

x

+

1 x +

11(6 points). Classify each state as a shift state, reduce state, or shift-reduce conflict state.

Note that you may have to compute the closure of the item sets to determine that. Also mark potential reduce-reduce conflicts. Would applying SLR(1) parsing help to resolve the

potential conflicts? •

12(6 points). Play through the LR parsing process (no extras, neither SLR nor LALR) for the word +11. Resolve potential shift-reduce conflicts by always choosing to shift, and potential reduce-reduce conflicts by picking any of the available reduction. • 13(6 points). Are there words in the language that cannot be parsed successfully using the simplistic strategy from the previous task? If so, give an example. • 14(meta question). How many out of the 100 possible points do you think you will get for

this exam? •

4

2

Referenties

GERELATEERDE DOCUMENTEN

Explain why this sentence is a counter example in terms of M and the acceptance criterion of a Buchi automaton.. [2.4 pt] Consider again the Krikpe structure K

(a) We want to express that when home is true, there exists a path leading to a state where page 3 is true.. How to express this

• When writing Haskell code, you may use Prelude functions and functions from the following modules: Data.Char, Data.List, Data.Maybe, and Control.Monad. Also, you may use all

Define an abstract syntax (a (data) type Discussion in Haskell) that cor- responds to your concrete syntax given as an answer in Task 11, which you can use to. represent

Show the steps that a parser for the above LL(1) grammar (after transfor- mation if necessary) goes through to recognize the following input

parenthesised p = pack (symbol POpen) p (symbol PClose) bracketed p = pack (symbol SOpen) p (symbol SClose) braced p = pack (symbol COpen) p (symbol CClose) pExprSimple :: Parser

Polynomials can be composed from constant naturals (described by means of the non- terminal Nat), variables (identifiers, described by means of the nonterminal Identifier), by

Resolve the operator priorities in the grammar as follows: negation ( ¬ ) binds stronger that implication ( ⇒ ), which in turn binds stronger than conjunction ( ∧ ), which in turn