«« ( Date ) »» // «« ( Thread ) »» // ri4pp - 2005

Integralni domaci

by Ivan Stambolic
subota, 28. maj 2005 - 07:59.

Postovani,

1. u gramatici za Z# data je sledeca definicija za ConstDecl:

ConstDecl = "const" Type ident "=" (number | charConct) ";"

Medutim, mi pored number i charConst imamo i dateConst i String literal. Tako npr. u primeru koji je dat uz domaci na pocetku programa imamo sledece naredbe:

const string msg = "test";

const date now = "5.5.2005";

Ovo sintaksni anlizator sa ovakvom gramatikom detektuje kao gresku. Moje pitanje glasi: Da li je za ispravan rad sintaksnog analizatora potrebno prosiriti datu definiciju za ConstDecl:

ConstDecl = "const" Type ident "=" (number | charConct | dateConst | String_literal) ";"

ili se to resava na drugi nacin? Ako se prosiruje da li to znaci da i u definiciji za Factor treba to isto uraditi?



2. u primeru programa koji je dat uz domaci imamo sledeci deo koda:

....

void Main()

int x,i;

char c;

bool cond = false;

date aDate = "6/5/2005";

{ ...

U gramatici imamo sledece definicije koje se odnose na ovaj deo koda:

MethodDecl = (Type | "void") ident "(" [FormPars] ")" {VarDecl} Block

VarDecl = Type ident { "," ident } ";"

U VarDecl postoji samo mogucnost deklarisanja promenljivih ali ne i mogucnost njihove inicijalizacije. Da li je ovo greska u definiciji za VarDecl ili greska u primeru programa(dozvoljena je samo deklaracija, ali ne i inicijalizacija)?



3. Definicija za dateconst:

dateconst = "'" {dateformat} "'"

Po definiciji primer za dateconst je: '5.5.2005' dok u primeru programa stoji "5.5.2005". Koji je nacin predstavljanja tacan?