H00N24/ifj_tester

lex_test_4.code

Closed this issue · 2 comments

//Lexikalny test 4 lex_test/lex_test_4 1
class Main
{
static int a = 1232132132132132134213213213213214335435324213213213214253242143215325342143242141432412321451243254342132152321421321352321214532;
}

Test lex_test_4.code by mal skončiť s kódom 1, čiže lexikálna chyba. Podľa mňa toto lexikálna chyba nie je alebo sa mýlim?

@Joozty
Podla mojho nazoru, lexiklana analyza nacitava cisla, ktore dava do tokenov v tomto pripade integer nema dostatocnu velkost aby taketo cislo reprezentoval, cize chyba nastane uz v lexiklanej analyze.
Prediskutujem to este s clenmi tímu ale myslim si ze budu so mnou suhlasit.

A aka chyba by to mala byt, ak nie lexikalna?

Okej, už som to našiel na fóre

ad 1) Přetečení i podtečení rozsahů typů nemusíte ošetřovat. Toto platí pro výrazy, konstanty i vstupy. Jazyk Java využívá mechanismus výjimek, který se v silně zjednodušeném IFJ16 těžko nějak zohledňuje. Chování načítání vstupů v případě chyby vidíte v souboru ifj16.java a pokud chcete, tak se tohoto chování držte i ve svých implementacích statických vestavěných funkcí ifj16.readInt/Double/String(). Jinak načtení konstanty mimo rozsah bych považoval spíše za lexikální chybu.

Ďakujem.