Closed Trsak closed 6 years ago
Tohle si bude muset obhájit @martinkobelka, taky jsme o tom měli delší diskuzi, dám mu vědět.
Definujme si lexému. Lexéma je token bez dodatečných informací. Mimo to je to NEJDELŠÍ posloupnost znaků dávající smysl. Lexer se tedy pokusí přečíst takový token/lexém. Přečte &b10100, čtyřka už tam nepatří to už je pro něj další token. Dva integery po sobě nedávají gramaticky smysl => syntax error. Je to to obdovné jako &b10100+42. '+' Už tam nepatří, je to další token (zde je to syntakticky správně => žádná chyba). Je to můj názor, můžu se plést ale jsem si na 80 % jist, že mám pravdu.
Z toho co píší na forum jsem pochopil, že u rozšíření se máme spoléhat na freebasic - jak tedy vysvětlíš, že ten vrací lexikální chybu?
11/07 -jdoodle.bas(3) error 3: Expected End-of-Line in 'dim x as integer = &b1010041
11/09 - -||- jdoodle.bas(3) error 3: Expected End-of-Line in 'dim x as integer = &o778777'
11/10 - -||- error 3: Expected End-of-Line, found 'gbaba' in 'dim x as integer = &hagbaba'
Nejsem příliš dobrý v jazycích, překlad ve všech případech ale je" Očekával jsem EOL, dostal jsem <nějaký identifikátor>" pro mě jasná syntaktická chyba.
Spouštěl jsem si to na nějakém online kompilátoru a vyhazovalo mi to určité návratové kódy, nakonec se ale ukázalo že se nejedná o chybové kódy fbc. Toto mě hodně zmátlo.
Nakonec jsme se po dlouhém dumání shodli, že tvoje argumentace opravdu dává smysl a testy by tedy měly vracet opravdu syntaktickou chybu.
Díky za vysvětlení.
Podle mě by mělo jít o lexikální chyby.
Freebasic také vrací jedničku.