UPPSALA UNIVERSITET  
Inst. f. lingvistik och filologi Lärare: Mats Dahllöf
Uppsala universitet
Hoppa över länkar
Kursplan

Materialmapp

Språkteknologi
och datorlingvistik







Programmering för språkteknologer II. HT 2008.

Laboration 2: ändliga automater och reguljära uttryck

Utgå från given klass FSA.

(a) Skriv en metod som säger om automaten accepterar en sträng eller inte:

public boolean accepts(String input)

Relativt lätt.

(b) Skriv en metod som givet en LinkedList av strängar returnerar en LinkedList med dem av strängarna som automaten accepterar.

public LinkedList<String> filter(LinkedList<String> strings)

Lättare?

(c) Nedan har vi en lista med acceptabla ord och en med oacceptabla. Skriv en automat som skiljer de acceptabla från de oacceptabla. Gör det så enkelt för dig som möjligt. Du behöver inte fånga hela svenskans grafotax/fonotax. Skriv även ett reguljärt uttryck som gör precis samma klassificering som automaten.

Acceptabla ord    
skral
skriva
skrå
skraltig
springa
språk
straff
stråle
Oacceptabla ord
sfalt
skr
skmas
smrisk
sprk
sptatt
stkisk
stmisk

Lite klurigare?

(d) Skriv ett program som givet en automat (hanterad som ovan), ett reguljärt uttryck, och en godtycklig fil med ord (textfil, ett ord per rad), kontrollerar att automaten och uttrycket är överens om vartenda av dessa ord. Om de inte är det skall programmet skriva ut en "protest".

Lite pyssligt.

VG-uppgift

(e) Skriv en metod som givet en heltal int returnerar en LinkedList<String> med alla de strängar som automaten accepterar och vars längd är lika med det givna heltalet eller mindre (kortare).

public LinkedList<String> generate(int length)

Mer krävande.