Testowania analizy składniowej generacji kodu w języku c instrukcja int i=3,14; jest przykładem błędu: składniowego



Pobieranie 38.09 Kb.
Data02.05.2016
Rozmiar38.09 Kb.

  1. Błędy logiczne w programie mogą być wykryte w fazie:

    1. analizy leksykalnej lub składniowej

    2. testowania

    3. analizy składniowej

    4. generacji kodu




  1. W języku C instrukcja int i=3,14; jest przykładem błędu:

    1. składniowego

    2. prawdopodobnie logicznego

    3. leksykalnego




  1. Faktoryzacja to:

    1. usuwanie niejednoznaczności w gramatyce poprzez stosowanie predykatów składniowych

    2. pojęcie z zupełnie innej branży

    3. wyłączanie przed nawias wspólnej części alternatywnych ścieżek reguły gramatycznej

    4. zwiększenie produktywności kompilatora




  1. Mamy następującą gramatykę napisaną w notacji EBNF

rzeka : 'river' NAME '<' wsp(wsp)* '>';

wsp: '<' (LAT)? ',' (LON)? '>';

oraz następujące dane wejściowe

river Prosna <> < ,E17.4>>


Najbardziej przydatnymi (spośród poniższych) drzewem składniowym dla tych danych jest (symbolem ‘Q’ zastępujemy brakującą współrzędną)

    1. (Prosna (N51 E17.3 N51.2 Q Q E17.4))

    2. (river Prosna N51 E17.3 N51.2 E17.4)

    3. te dane są niezgodne z gramatyką

    4. (river Prosna (N51 E17.3 N51.2 Q Q E17.4))




  1. Definiując gramatykę dla klasycznych wyrażeń arytmetycznych umieszczamy dodawanie i odejmowanie w jednej regule, podczas gdy mnożenie i dzielenie w innej. Celem takiego postępowania jest:

    1. zwiększenie czytelności gramatyki

    2. zapewnenie właściwej kolejności obliczeń

    3. umożliwienie stosowania nawiasów

    4. usunięcie niejednoznaczności




  1. Narysować abstrakcyjne drzewo składniowe dla wejścia:

sierpowy (reka=lewa, sila=5)

i gramatyki

cios : RODZAJ '(' ! par (','! par)* ')';

par : PARNAME (’=’!(STRING|INT))?;

Poddrzewa generowane przez niezdefiniowane tu reguły zaznaczyć jako „chmurki”.

(sierpowy(reka(lewa)sila(5)))




  1. Zaprojektować AST dla instrukcji „Do-while” języka C. Nie wgłębiać się w bloki i wyrażenia arytmetyczne oraz logiczne.



do-while: 'do'^ '{' ! stmt-list '}' ! while

while: 'while'^ '(' ! exp ')' !
[Inny test]


  1. Dla danych wejściowych 1+2+3+4 uzyskamy następujące drzewo składniowe:


przy gramatyce:



    1. exp: INT '+'^ INT;

    2. exp : INT ('+'^ INT ('+' ! INT)*)?;

    3. exp: INT ('+'^ INT)*

    4. exp: INT ('+'^ INT ( '+' INT)*)?;




  1. Definiując gramatykę dla klasycznych wyrażeń arytmetycznych umieszczamy dodawanie i odejmowanie w jednej regule, podczas gdy mnożenie i dzielenie w innej. Celem takiego postępowania jest:

    1. zwiększenie czytelności gramatyki

    2. zapewnenie właściwej kolejności obliczeń

    3. umożliwienie stosowania nawiasów

    4. usunięcie niejednoznaczności




  1. Błędy semantyczne w programie mogą być wykryte:

    1. analizy leksykalnej lub składniowej

    2. analizy składniowej

    3. generacja kodu

    4. testowania




  1. Drzewu składniowemu:

odpowiada następująmu wyrażeniu





    1. (+ (+ (+ 1 2) 3) 4)

    2. (1 + 2 + 3 + 4)

    3. (+ 1 (+ 2 ( + 3 4)))




  1. Język , w którym każdy napisany program daje się bezbłędnie skompilować:

    1. Java

    2. FORTRAN

    3. PL/C




  1. Mamy następującą gramatykę zapisaną w notacji EBNF:

lista : lista '+' INT | INT;

Jest ona:



    1. niepoprawna dla parserów LL(k)

    2. poprawna dla parsera LL(3)

    3. poprawna dla parsera LL(1)

    4. niepoprawna




  1. W języku C instrukcja for(i=5; i<7; i++) jkest przykładem błędu:

    1. logicznego

    2. instrukcja jest poprawna

    3. leksykalnego

    4. semantycznego




  1. „Poziom Frazy” kompilatora to:

    1. etap gromadzenia elementarnych fraz kodu wynikowego

    2. próba „wymyślenia” co programista miał na myśli

    3. stan podczas analizy zdania czyli frazy

    4. jedna z podstawowych faz kompilacji

Pytania otwarte





  1. Narysować abstrakcyjne drzewo składniowe dla wejścia:

state AND uczsie ( czytaj wkuwaj pytaj ) i gramatyki

stan: 'state'^ TYP NAME child;

child: '(' (NAME)* ')'

Poddrzewa generowane przez nieanalizowane tu reguły zaznaczyć jako „chmurki”.





[Inny test]


  1. Dla danych wejściowych 1 + 2 + 3 + 4 uzyskamy następujące drzewo składniowe


przy gramatyce:




    1. exp : INT ( '+'^ INT ( '+' ! INT )*)?;

    2. exp : INT ( '+'^ INT ) =;

    3. exp : INT '+'^ INT ;

    4. exp : INT ( '+'^ INT ( '+' INT ) = ) ?;




  1. Mamy następującą gramatyke zapisaną w notacji EBNF

blok : blok '.' INT;

Jest ona:



    1. poprawna dla parsera LL(3)

    1. poprawna dla parsera LL(1)

    2. niepoprawna dla parserów LL(k)

    3. niepoprawna




  1. Drzewu składniowemu

odpowiada następujące wyrażenie w LISP'ie



    1. ( 1 + 2 + 3 + 4 )

    2. (+ (+ (+ 3 4) 2) 1)


[Inny test]


  1. Poniższy przykład w języku antlr

wyr : {isvar(LT(1))} ? ID | funkcja ;

    1. jest błędny

    2. prezentuje użycie predykatu składniowego

    3. jest przykładem zastosowania faktoryzacji

    4. prezentuje użycie predykatu semantycznego




  1. „Tryb paniki” kompilatora to:

    1. reakcja kompilatora na awarię sprzętu (np. przerwanie strumienia wejściowego)

    2. dopisywanie przez kompilator prawdopodobnie brakującego kodu

    3. strategia odzyskiwania kontroli po wykryciu błędu

    4. awaryjne zakończenie kompilacji (abort)




  1. Definiując gramatykę dla klasycznych wyrażeń arytmetycznych umieszczamy dodawanie i odejmowanie w jednej regule podczas gdy mnożenie i dzielenie w innej. Celem takiego postępowania jest:

    1. zapewnienie właściwej kolejności obliczeń

    2. zwiększenie czytelności gramatyki

    3. umożliwienie stosowania nawiasów

    4. usunięcie niejednoznaczności




  1. W języku C instrukcja int i = 3,14; jest przykładem błędu:

    1. prawdopodobnie logicznego

    2. składniowego

    3. semantycznego

    4. leksykalnego




  1. Dla danych wejściowych 1 + 2 + 3 + 4 uzyskano następujące drzewo składniowe:

przy gramatyce:



    1. exp : INT ( '+'^ INT ( '+' ! INT ) = ) ?;

    2. exp : INT ( '+'^ INT )*;

Pytania otwarte





  1. Narysować abstrakcyjne drzewo składniowe dla wejścia:

polygon pokoj 4 ( 0.0, 12.2, 12.10, 0.10 ) i gramatyki

luk: 'polygon'^ NAME reszta;

reszta : INT^ '(' ! INT '.' ! INT ('.' ! INT '.' ! INT)*')'! ;

Poddrzewa generowane przez nieanalizowane tu reguły zaznaczyć jako „chmurki”.





  1. Zaprojektować AST dla instrukcji „switch/case” w języku C. Nie wgłębiać się w bloki i wyrażenia arytmetyczne oraz logiczne.




[Inny test]


  1. „Produkcja dla błędów” to:

    1. błędny kod wygenerowany na skutek błędów w programie źródłowym

    2. błędny kod wygenerowany na skutek błędów w kompilatorze

    3. niepoprawnie wywołane akcje ...

    4. dodatkowe reguły w gramatyce „przewidujące” błędy programisty


Pobieranie 38.09 Kb.





©absta.pl 2020
wyślij wiadomość

    Strona główna