Piemērs - Javas specifikācija

Last modified by superadmin on 2018-01-12 20:40

Piemērs - Javas specifikācija

Javas valodas veidotāji ir definējuši Javas formālo gramatiku dokumentā, kuru sauc "The Java Language Specification", sk. [Spec]. Kā Javas mācību līdzeklis tomēr specifikācija nav visai piemērota, jo ir gara (ap 800 lappuses) un diezgan tehniska.

Divdomība: Nepiesaistītais (dangling) "else"

if (b1) if (b2) f(); else g(); 
if (b1) { if (b2) f(); else g(); }
if (b1) { if (b2) f(); } else g(); 

"if" komandai ir divi varianti, viens ar "else" un otrs bez. Ja konstrukcijā ir vairāk "if" nekā "else", tad var rasties situācija, kad nevaram vienkārši pateikt, uz kuru "if" attiecas katrs "else". Šo sauc par "nepiesaistīto (dangling) else". Valodā Java "dangling else" pievienojas pēdējam "if". Iekļautās "if/else" komandas ieteicams likt zem "else" (nevis zem "if"). Arī tad, ja "if" un "else" ir vienādā skaitā, vai arī ir visur saliktas figūriekavas, "if"-"else" konstrukcijas var būt cilvēkam grūti uztveramas un tajās viegli kļūdīties.

"if" konstrukcija Javas specifikācijā, piemēram, definēta šādi:

IfThenStatement:
    if ( Expression ) Statement
IfThenElseStatement:
    if ( Expression ) StatementNoShortIf else Statement
IfThenElseStatementNoShortIf:
    if ( Expression ) StatementNoShortIf else StatementNoShortIf

Ievērojiet, cik delikāti Javas autori izvairījušies no kārdinājuma definēt divdomīgu gramatiku. Aiz "then" (atslēgvārdu "then" Javā, protams neraksta), ja izmantojam arī "else" drīkst atrasties tikai tāds "if", kurš vai nu vispār nav "if"-konstrukcija, vai arī ir pilna "if" konstrukcija kopā ar visu "else".

Tags:
Created by Kalvis Apsītis on 2008-05-01 23:49
    
This wiki is licensed under a Creative Commons 2.0 license
XWiki Enterprise 6.4 - Documentation