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.