Leksion - Errors

You might also like

Download as rtf, pdf, or txt
Download as rtf, pdf, or txt
You are on page 1of 3

Error

Një gabim është shënimet bosh në tabelën e simbolit.


• Gabimet në program duhet të zbulohen dhe raportohen nga parser.
Kurdoherë që ndodh një gabim, analizuesi mund ta trajtojë atë dhe
të vazhdojë të analizojë pjesën tjetër të inputit.
• Edhe pse parser është kryesisht përgjegjës për kontrollimin e
gabimeve, gabimet mund të ndodhin në faza të ndryshme të procesit
të përpilimit.Pra, ka shumë lloje të gabimeve.

Ekzistojnë tre lloje të gabimit:


- Logjika, Koha e ekzekutimit ,Gabimi i kohës së përpilimit:

Lexical Error
Gjatë fazës së analizës leksikore mund të zbulohet ky lloj gabimi.
• Gabimi leksikor është një sekuencë karakteresh që nuk përputhen
me modelin e asnjë token.
• Gabim fazes leksikor gjendet gjatë ekzekutimit të programit.
Gabimi i fazës leksikore mund të jetë:
• Gabim drejtshkrimor.
• Tejkalimi i gjatësisë së konstantave identifikuese ose numerike.
• Shfaqja e personazheve të paligjshëm.
• Për të hequr karakterin që duhet të jetë i pranishëm.
• Për të zëvendësuar një karakter me një karakter të pasaktë.
• Transpozimi i dy karaktereve
Shembull
• Void main()
• {
• int x=10, y=20;
• char * a;
• a= &x;
• x= 1xab;
• }
• Në këtë kod, 1xab nuk është as numër dhe as identifikues. Pra, ky kod
do të tregojë gabimin leksikor
Syntax Error
Gjatë fazës së analizës sintaksore, shfaqet ky lloj gabimi. Gabim
sintaksor konstatohet gjatë ekzekutimit të programit
• Disa gabime sintaksore mund të jenë:
• Gabim në structure
• Mungojnë operatorët
• Parantezë e pabalancuar
Kur një llogaritje e pavlefshme hyn në një kalkulator, atëherë mund të
ndodhë edhe një gabim sintaksor. Kjo mund të shkaktohet nga futja e
disa pikave dhjetore në një numër ose nga hapja e kllapave pa i mbyllur
ato
• Për shembull 1: Përdorimi i "=" kur nevojitet "==".
• 16 if (number=200)
• 17 count << "number is equal to 20";
• 18 else
• 19 count << "number is not equal to 2

• Mesazhi paralajmërues i mëposhtëm do të shfaqet nga shumë


përpilues:Paralajmërim sintaksor: operatori i caktimit përdoret në
linjën if shprehjes 16 të programit firstprog.cppNë këtë kod, nëse
shprehja përdorte shenjën e barabartë që në fakt është një operator
caktimi dhe jo operatori relacional që teston për barazi.Për shkak të
operatorit të caktimit, numri është vendosur në 200 dhe shprehja
numër=200 janë gjithmonë të vërteta sepse vlera e shprehjes është
në të vërtetë 200.
Për këtë shembull, kodi i saktë do të ishte:
• 16 if (number==200)

Shembull :
• int a = 5 // semicolon is missing
Errors in expressions:
• x = (3 + 5; // missing closing parenthesis ')'
• y = 3 + * 5; // missing argument between '+' and '*'

Semantic Error
• Gjatë fazës së analizës semantike shfaqet ky lloj gabimi. Këto lloj
gabimesh zbulohen në kohën e përpilimit.
• Shumica e gabimeve të kohës së përpilimit janë gabimi i
fushëveprimit dhe i deklarimit.
Për shembull:
• identifikues të padeklaruar ose të shumëfishtë të deklaruar.
• Lloji i mospërputhshëm është një tjetër gabim në kohën e përpilimit.
• Gabimi semantik mund të lindë duke përdorur variablin e gabuar ose
duke përdorur operatorin e gabuar ose duke kryer funksionimin në
mënyrë të gabuar.
Disa gabime semantike mund të jenë:
• Llojet e papajtueshme të operandëve
• Ndryshore e padeklaruar
• Mospërputhja e argumentit aktual me argumentin formal
Shembulli
Përdorimi i një variabli të pa inicializuar:
• int i;
• void f (int m)
• {
• m=t;
• }
Në këtë kod, t është i padeklaruar për këtë arsye tregon gabimin
semantik.
Shembulli :Papajtueshmëria e tipit:
• int a = "hello"; // the types String and int are not compatible
• Shembull : Errors in expressions:
String s = "...";
Inta=5-s; // the - operator does not support arguments of type String

You might also like