12
7/26/2019 Formalne Izlazni http://slidepdf.com/reader/full/formalne-izlazni 1/12  Ime i prezime Kolokvijum iz predmeta Teoretske osnove računarstva 02.07.2009. A. Za zadani ulaz, pronaći izlaz sljedećih lex programa (NAPOMENA: znak  označava newline karakter i ne ispisuje se!) %s L  LI "*" %% <INITIAL>^{LI} { printf("<ul><li>"); BEGIN L; } <L>^{LI} { printf("<li>"); } <L>^[^*] { printf("</ul>"); BEGIN INITIAL; REJECT; } <L>\n { printf("</li>\n"); } ulaz: *1 *2 3 4 %%  . yymore(); \n ECHO; ulaz: Ovo je jedan test %%  something jav.?c { printf(("%d ## %s\n", yyleng, yytext);} ulaz: javac something.java negdje izmedju je something. %%  superman|batman|aquaman { printf("Superheroj:\n %s\n",yytext); } [A-Z][a-z]{1,8}[0-9] { printf("Zlikovac: %s\n",yytext); } ulaz: superman i aquaman Osobaa1 ima ispit. 

Formalne Izlazni

  • Upload
    -

  • View
    222

  • Download
    0

Embed Size (px)

Citation preview

Page 1: Formalne Izlazni

7/26/2019 Formalne Izlazni

http://slidepdf.com/reader/full/formalne-izlazni 1/12

  Ime i prezime

Kolokvijum iz predmeta Teoretske osnove računarstva  02.07.2009.

A. Za zadani ulaz, pronaći izlaz sljedećih lex programa (NAPOMENA:

znak ¶ označava newline karakter i ne ispisuje se!)

%s L  

LI "*"

%%

<INITIAL>^{LI} { printf("<ul><li>"); BEGIN L; }

<L>^{LI} { printf("<li>"); }

<L>^[^*] { printf("</ul>"); BEGIN INITIAL; REJECT; }

<L>\n { printf("</li>\n"); }

ulaz:

*1¶ 

*2¶ 

3¶ 

4¶ 

%%  

. yymore();

\n ECHO;

ulaz:Ovo je¶ 

jedan¶ 

test¶ 

%%  

something

jav.?c { printf(("%d ## %s\n", yyleng, yytext);}

ulaz:

javac something.java¶ 

negdje izmedju¶ 

je something.¶ 

%%  

superman|batman|aquaman { printf("Superheroj:\n

%s\n",yytext); }

[A-Z][a-z]{1,8}[0-9] { printf("Zlikovac:

%s\n",yytext); }

ulaz:

superman i aquaman¶ 

Osobaa1 ima ispit.¶ 

Page 2: Formalne Izlazni

7/26/2019 Formalne Izlazni

http://slidepdf.com/reader/full/formalne-izlazni 2/12

  Ime i prezime

Kolokvijum iz predmeta Teoretske osnove računarstva  02.07.2009.

%{

#include <stdio.h>

int lineno =1;

%}

line .*\n

%%

{line} {printf("%d %s", lineno++, yytext); }

%%

int main()

{

printf("Procesiranje\n");

yylex();

}

 ulaz:

Danas je TeOR ¶ 

Poceo u 17:00¶ 

Kraj u 17:50¶ 

B. Za zadane linije na ulazu pronaći sva poklapanja za sljedeće POSIXregularne izraze (ispisati samo match, ne cijelu liniju!)

1+2  

ulaz:

1+2

3

001122

12

3456

^[^a-z]+[a-z]+$  

ulaz:

1. jedan

dva (2)

3. (3)4. test

^#.*$  

ulaz:

$#.*$

#.*$

####

#komentar

^#.*$

$.abc$

\b0[xX][0-9a-fA-F]+\b  

ulaz:25 je 0x19

0X98G

123

TeOR X0x578

^([^a]|a[^b]|ab[^c])*.{0,2}$

ulaz:

abcdef

abdefg

efabcd

wxyzab 

Page 3: Formalne Izlazni

7/26/2019 Formalne Izlazni

http://slidepdf.com/reader/full/formalne-izlazni 3/12

  Ime i prezime

Kolokvijum iz predmeta Teoretske osnove računarstva  21.06.2010.

A. Za zadani ulaz, pronaći izlaz sljedećih lex programa (NAPOMENA:

znak ¶ označava newline karakter i ne ispisuje se!)

 

%{

#include <math.h>

%}

%s expect

%%

expect-floats BEGIN(expect);

<expect>[0-9]+"."[0-9]+ {

printf( "dec, = %f\n",

atof( yytext ) );

}

<expect>\n {BEGIN(INITIAL);}

[0-9]+ {printf( "int, = %d\n",

atoi( yytext ) );

}

"." printf( "tacka\n" ); 

ulaz:

1.3¶ 

2¶ 

.¶ 

2.45 di 2.¶ 

 

%%

mega- ECHO; yymore();

test ECHO;

ulaz:

Ovo je¶ 

mega-mega-¶ test¶ 

%%  

something

jav.?c { printf(("%d ## %s\n", yyleng, yytext,

yyless(3));}

ulaz:

javac something.java¶ 

negdje izmedju¶ 

je something.¶ 

 

digit [0-9]

alpha [a-fA-F]

hextail ({digit}|{alpha}){1,8}

hex 0[xX]{hextail}

%%

{hex} printf("Pronadjen - %s !", yytext);

. printf("");

ulaz:

340x231a¶ 

0X333321abcFFdan¶ 

Page 4: Formalne Izlazni

7/26/2019 Formalne Izlazni

http://slidepdf.com/reader/full/formalne-izlazni 4/12

  Ime i prezime

Kolokvijum iz predmeta Teoretske osnove računarstva  21.06.2010.

%{

#include <stdio.h>

int sentnum =1;

%}

sentence [A-Z][a-zA-Z0-9,]+[.?!]

%%

{sentence} {printf("%d %s", sentnum++, yytext); }

%%

int main()

{

printf("Trazenje\n");

yylex();

}

 ulaz:

Danas je TeOR ¶ 

Poceo u 14:00!¶ 

kraj u 14:50.¶ 

B. Za zadane linije na ulazu pronaći sva poklapanja za sljedeće POSIXregularne izraze (ispisati samo match, ne cijelu liniju!)

1*2+3[6-95]+  

ulaz:

12365

11112

234

1*2+367

2375

^[^2-7]+[a-d]*[0-6]{2,4}+$  

ulaz:

8xac0471

1dd6032

xf01db1axad026

((ba[x-z]?){1,3})|(12[a-b]+)  

ulaz:

2234baba

baxy

12bbbax

b12ba3

\b[20-34]+([a-d]+|[1-4]?)+\b  

ulaz:

203

225d28dda

2234baba

^[a-z0-9][a-z0-9\\-]+(’s|[a-z0-9])$

ulaz:

b12ba3

a0-’s 

x0-567.

a111’sp 

Page 5: Formalne Izlazni

7/26/2019 Formalne Izlazni

http://slidepdf.com/reader/full/formalne-izlazni 5/12

  Ime i prezime

Izlazni kolokvijum iz predmeta Teoretske osnove računarstva  02.07.2010.

A. Za zadani ulaz, pronaći izlaz sljedećih lex programa (NAPOMENA:

znak ¶ označava newline karakter i ne ispisuje se!) 

%{

#include <math.h>

%}

%s expect

%%

expect-floats BEGIN(expect);

<expect>[0-9]+"."[0-9]+ {

printf( "dec, = %f\n",

atof( yytext ) );

}

<expect>\n {BEGIN(INITIAL);}

[0-9]+ {printf( "int, = %d\n",

atoi( yytext ) );

}

"." printf( "tacka\n" );

ulaz:

1.¶ 

expect-floats 2.3 1 4.5¶ 

2¶ 

2.45¶ 

 %%

dan.* {ECHO; yymore();}

danas {ECHO; REJECT;} ulaz:

Dan danas je¶ 

petak i radimo¶ 

danima test¶ 

word [A-Za-z]{2,8}

%%

cat|lucky|feel {printf("en word %s", yytext);}

{word} { printf("other -> %s\n", yytext); yyless(1);} 

ulaz:

java cat¶ 

lucky¶ 

ocat feel¶ 

smt [0-9]+

%%

{smt} {printf("found - %x", atoi(yytext));}

smt {printf(""); unput(0);}  

ulaz:

26¶ 

smt 35¶ 

hex 11a¶ 

Page 6: Formalne Izlazni

7/26/2019 Formalne Izlazni

http://slidepdf.com/reader/full/formalne-izlazni 6/12

  Ime i prezime

Izlazni kolokvijum iz predmeta Teoretske osnove računarstva  02.07.2010.

%{

#include <stdio.h>

int citatbr =1;

%}

citat ^\"[A-Z][a-zA-Z0-9,]+[.?!]\"$

%%

{citat} {printf("%d %s", citatbr+2, yytext); }

%%

int main()

{

printf("CitatI\n");

yylex();

}

 ulaz: 

"Danas je TeOR".¶ 

"Java!" - samo san.¶ 

B. Za zadane linije na ulazu pronaći sva poklapanja za sljedeće POSIXregularne izraze (ispisati samo match, ne cijelu liniju!)

[a-f]?[24-70]+[:-]?  

ulaz:

a2:di

bf69

334

278

ca4

www[.][a-z]+[a-z0-9]+(\.de|\.ru)  

ulaz:

www.34xss.ru

www.demol34.de

www.de333.ba

www.w3cxss.ru

\b[01]{6,8}\b  

ulaz:

10111111111018

101010

18010101

00011101

[6-9]+[.][0-9]{2}  

ulaz:

45

6.11

96.2

78.3332

\.[^.\\/:*?"<>|\r\n]+$  

ulaz:

iz .java kompajliranjem

nastaje .class,

a ne .*class

.di“?.com 

Page 7: Formalne Izlazni

7/26/2019 Formalne Izlazni

http://slidepdf.com/reader/full/formalne-izlazni 7/12

  Ime i prezime

Kolokvijum iz predmeta Teoretske osnove računarstva  10.06.2011.

A. Za zadani ulaz, pronaći izlaz sljedećih lex programa (NAPOMENA:

znak ¶ označava newline karakter i ne ispisuje se!)

 

%{

#include <math.h>

%}

%s expect

%%

expect-floats BEGIN(expect);

<expect>[0-9]+"."[0-9]+ {

printf( "dec, = %f\n",

atof( yytext ) );

}

<expect>\n {BEGIN(INITIAL);}

[0-9]+ {printf( "int, = %d\n",

atoi( yytext ) );

}

"." printf( "tacka\n" ); ulaz:1.3¶ 

2¶ 

.¶ 

2.45 di 2.¶ 

 

%%

mega- ECHO; yymore();

test ECHO;

ulaz:

Ovo je¶ 

mega-mega-¶ test¶ 

%%  

something

jav.?c { printf(("%d ## %s\n", yyleng, yytext,

yyless(3));}

ulaz:javac something.java¶ negdje izmedju¶ je something.¶ 

 

digit [0-9]

alpha [a-fA-F]

hextail ({digit}|{alpha}){1,8}

hex 0[xX]{hextail}

%%

{hex} printf("Pronadjen - %s !", yytext);

. printf("");

ulaz:340x231a¶ 0X333321abcFFdan¶ 

Page 8: Formalne Izlazni

7/26/2019 Formalne Izlazni

http://slidepdf.com/reader/full/formalne-izlazni 8/12

  Ime i prezime

Kolokvijum iz predmeta Teoretske osnove računarstva  10.06.2011.

%{

#include <stdio.h>

int sentnum =1;

%}

sentence [A-Z][a-zA-Z0-9,]+[.?!]

%%

{sentence} {printf("%d %s", sentnum++, yytext); }

%%

int main()

{

printf("Trazenje\n");

yylex();

}

 ulaz:Danas je TeOR ¶ Poceo u 14:00!¶ kraj u 14:50.¶ 

B. Za zadane linije na ulazu pronaći sva poklapanja za sljedeće POSIXregularne izraze (ispisati samo match, ne cijelu liniju!)

3*[5-8]+41  

ulaz: 

3233941564741333541

\b[a-z]?[1-5]{2,4}[ab^c]+  

ulaz:

b223ddd11abc

xa12abv

d34abxsxz

^[12^d]+[@*$]?(axy)+$  

ulaz:

11*@aaa

12c$axy

21kaxyaxy

12g$axy+$

([(]?[:alnum:]+[+/*^]+[:alnum:]{1,4}[)]?)+  

ulaz:203a+ss)(a-2)+(53/a) 

(a+b)^4444b)(1+3a)(2*4ha)

^[A-Z][a-zA-Z ]+[:number:]+$

ulaz:

b12ba3

 Marka Markovica 45

Slavka slavkica bb

Ana A 123b 

Page 9: Formalne Izlazni

7/26/2019 Formalne Izlazni

http://slidepdf.com/reader/full/formalne-izlazni 9/12

Broj indeksa: Ime i prezime:

ELEKTROTEHNIČKI FAKULTET 

BANJA LUKA

TEORETSKE OSNOVE RAČUNARSTVA – IK (07.06.2012.) 

I DEO:  Za zadane linije na ulazu, odrediti i upisati u datu tablicu (znak po znak) izlaz datih LEX programa.

1. rec [a-z]{4}

%%

{rec} { char c = input(); printf("%c", c); }

Ulaz:

teoretski

osnovi

racunarstva

2. digit [0-9]

alpha [a-fA-F]

hextail ({digit}|{alpha}){1,8}

hex 0[xX]{hextail}

%%

{hex} printf("%s\n", yytext);.|\n printf("");

Ulaz:

x2344f8f

2X0xbadbroj

broj0Xf1492A4d661436

3. %s expect

%%

"*" BEGIN(expect);

<expect>[0-9]+"."[0-9]+ { printf("%.2f",

atof(yytext)); }

<expect>\n { BEGIN(INITIAL); }

[0-9]+ { printf("%d",

atoi(yytext)); }

"." printf(" ");

Ulaz:

2.5 120 43

*2.33 5 5.8

20

2.25

4. %%

eksperiment { ECHO; yyless(9); }

Ulaz:

experimentisem

sa

eksperimentom

5. %%super { ECHO; yymore(); }

man { ECHO; }

Ulaz:

superman is

super man

Page 10: Formalne Izlazni

7/26/2019 Formalne Izlazni

http://slidepdf.com/reader/full/formalne-izlazni 10/12

Broj indeksa: Ime i prezime:

ELEKTROTEHNIČKI FAKULTET 

BANJA LUKA

II DEO:  Za zadane linije na ulazu, odrediti i upisati u datu tablicu sva poklapanja (svako poklapanje upisati u

 jedan red) za date POSIX regularne izraze.

1. 2*3=6

Ulaz:

33=66

2*33=66

2*3=66

22*3=66

63+3=66

2. ^#.*$

Ulaz:

$#.*$

#.*$

####

#komentar

^#.*$$.abc$

3. www[.][a-z]+[a-z0-9]+(\.de|\.ru)

Ulaz:

www.34xss.ru

www.demol34.de

www.de333.ba

www.w3cxss.ru

4. ^([^a]|a[^b]|ab[^c])*.{0,2}$

Ulaz:

abcdef

abdefg

efabcdwxyzab

5. \b[20-34]+([a-d]+|[1-4]?)+\b

Ulaz:

203

225d

28dda

2234baba

Page 11: Formalne Izlazni

7/26/2019 Formalne Izlazni

http://slidepdf.com/reader/full/formalne-izlazni 11/12

ELEKTROTEHNIČKI FAKULTET 

BANJA LUKA

TEORETSKE OSNOVE RAČUNARSTVA (21.06.2013.) 

BR. INDEKSA: IME I PREZIME: 

1. DEO 2. DEO∑ 

(30)1.

(3)

2.

(3)

3.

(3)

4.

(3)

5.

(3)

1.

(3)

2.

(3)

3.

(3)

4.

(3)

5.

(3)

ZADACI 

1. DEO:  Za zadane linije na ulazu, odrediti i upisati u datu tablicu sva poklapanja (svako poklapanje upisati u

 jedan red) za date POSIX regularne izraze.

1. \b((1)|(2)|(3))\1+\2+?\3+?

Ulaz:

1221 1232

2231 3112

1113 3322

1333 2133

2. ^[A-Z]{1,2}[0-9R][0-9A-Z]? [0-9][ABD-Z]{2}$

Ulaz:

ZZR9 2GX

D9XX 9D

99 F0 5DD

K1 9CM

L2 2QRRNB 7DH

3. ^.*\b[1-9]+\.[0-9]*\b.*$

Ulaz:

225

x=2 y=3.14

6.28=x*y

2*x = 4

4. ^([0-9]{1,3}(,[0-9]{3})*(\.[0-9]+)?|\.[0-9]+)$

Ulaz:

300

2333.55

400.

1.23

.25

5. ^(\w,){3}(\w,)*1,?(\w,)*(\w)$

Ulaz:

1,2,3,4,5,1

2,3,4,5,6,8

1,3,2,1,8,3

9,9,1,2,8,0

1,1,1,0,0,1

Page 12: Formalne Izlazni

7/26/2019 Formalne Izlazni

http://slidepdf.com/reader/full/formalne-izlazni 12/12

ELEKTROTEHNIČKI FAKULTET 

BANJA LUKA

2. DEO:  Za zadane linije na ulazu, odrediti i upisati u datu tablicu (znak po znak) izlaz datih LEX programa.

1. int glob = 0;

rec [a-zA-Z]+

%%

int loc = 0;{rec} { loc += yyleng;

glob += yyleng;

printf("<%d>", loc); }

[0-9]+ REJECT;

%%

int main()

{ yylex(); printf("glob: %d", glob);

return 0; }

Ulaz:

Rezultat meca je:

Man.Utd. 2-1 Swansea

2. %%

[a-z]+cat|cat[a-z]+ yyless(3);

Ulaz:

hellcat firecat

catwoman application

3. int b, o;

%s B

rec [a-zA-Z]+

%%

<INITIAL>"\\b" printf("<b>"); BEGIN B;

<INITIAL>{rec} o++; REJECT;

<B>"\\b" printf("</b>"); BEGIN INITIAL;

<B>{rec} printf("X"); b++; REJECT;

{rec} printf("Y");

%%

int main(){ yylex(); printf("B: %d, O: %d", b, o);

return 0; }

Ulaz:

\bFormatirani

tekst\b na

ko\blokv\bijumu

iz \bTeOR\b-a.

4. %%

[1-9][0-9]+/[.][0-9]+ { printf("%d\n",

atoi(yytext));

yymore(); }

[1-9]*\.[0-9]+ { printf("%.2f\n",

atof(yytext)); }

.|\n ;

Ulaz:

5.2

98.5

9.

30

.1

5. %%

(.)(.)/.{2} { ECHO;

char c = input(), d = input();

unput(c); unput(d); }

Ulaz:

(()))

(a+(b*(c-(d/e))))

#include <stdio.h>