1 Naposledy upravil: MightyPork (2014-09-18 14:54:58)

Téma: [vyřešeno] i++ ve výrazu je vyhodnoceno chybně

Doufám že někdo nenabyde dojmu že jsem nějaký hnidopich big_smile

Ale je tu další ze série chyb v kompileru, tentokrát chyba v parsování inkrementu / dekrementu:

Tohle funguje v pohodě:

i++;

Ovšem tohle ne:

var i;

task
{
    i = 1;
    task_loop_1:
        echo('Looping.');    
    if (i++ <= 5 ) goto task_loop_1;
}

Nic netušící uživatel si sestaví for smyčku (která z nejasných důvodů v implementaci chybí), a dostane while smyčku, a to nekonečnou. Paráda, co?

Kompiler tohle "i++" interpretuje jako "i + +" (tak ale interpretuje i normální "i++;". Proč to tedy nevyhodnocuje je mi záhadou, nicméně v simulátoru je vidět jak "i" zůstává na jedničce a text se vypisuje stále dál.

Prosím o opravení, podobně jako ty další chyby. (Pokud se o "jazyk" SDS-C ještě někdo stará)

Chcete #include, lepší makra, řídící struktury atd. v SDS-C? Nástroj SDSCP vám to umožní!

2

Re: [vyřešeno] i++ ve výrazu je vyhodnoceno chybně

Tem kompiler má těch omezení mnohem více - v podmínkách ale snad i v indexech nefunguje vyhodnocování výrazů,  a většino to vyhodí chybu hned při kompilaci. Při ladění kódů mi zabralo nejvíce času tyto omezení objevit a zvyknout si na ně. Ale chápu že za málo peněz nemůžu chtít mnoho muziky :-)

3

Re: [vyřešeno] i++ ve výrazu je vyhodnoceno chybně

ringojr napsal:

Tem kompiler má těch omezení mnohem více - v podmínkách ale snad i v indexech nefunguje vyhodnocování výrazů,  a většino to vyhodí chybu hned při kompilaci. Při ladění kódů mi zabralo nejvíce času tyto omezení objevit a zvyknout si na ně. Ale chápu že za málo peněz nemůžu chtít mnoho muziky :-)

Toho jsem si taky všiml, hodně mě to štve, ale dá se to obejít pomocnou proměnnou.

Uvažuji o tom napsat nějaký pre-procesor, který rozšíří možnosti SDS-C - např. lepší podporu maker, předávání parametrů, stack, return value atd.

Už jsem něco podobného kdysi dělal tak by to mohlo vyjít :-)

Chcete #include, lepší makra, řídící struktury atd. v SDS-C? Nástroj SDSCP vám to umožní!

4

Re: [vyřešeno] i++ ve výrazu je vyhodnoceno chybně

No kdyby jsi to dal pak k dispozici bylo by to super. Mě např. chybí #include, kam bych si hodil to co už mám dávno hotovo a nechci se v tom dál hrabat

5

Re: [vyřešeno] i++ ve výrazu je vyhodnoceno chybně

ringojr napsal:

No kdyby jsi to dal pak k dispozici bylo by to super. Mě např. chybí #include, kam bych si hodil to co už mám dávno hotovo a nechci se v tom dál hrabat

Určitě, jestli se to povede tak to bude open source na githubu, udělám tu o tom vlákno až něco budu mít.

Chcete #include, lepší makra, řídící struktury atd. v SDS-C? Nástroj SDSCP vám to umožní!

6

Re: [vyřešeno] i++ ve výrazu je vyhodnoceno chybně

ringojr napsal:

No kdyby jsi to dal pak k dispozici bylo by to super. Mě např. chybí #include, kam bych si hodil to co už mám dávno hotovo a nechci se v tom dál hrabat

Něco už mám, můžeš vyzkoušet.

Zatím je podpora pro #include, lepší makra (s parametrem, jako pole, bez hodnoty...), větvení přes např. #ifndef a pár dalších vychytávek jako () za deklarací funkce nebo dvojté uvozovky pro stringy (jednoduché jsou char).

Další věci jsou v plánu ale ještě to trochu potrvá, nicméně už teď je to podle mě velký přínos.

viz zde

Chcete #include, lepší makra, řídící struktury atd. v SDS-C? Nástroj SDSCP vám to umožní!

7

Re: [vyřešeno] i++ ve výrazu je vyhodnoceno chybně

MightyPorku ty jsi dábel :-)  Za tři dny to mít hotovo včetně dokumentace to je opravdu výkon.

Já budu opačný extrém-s SDS si hraju při podzimních a zimních večerech, kdy se již nedá lítat venku a po té co uložím děti ke spaní. Než se tedy dostanu k tomu abych to vyzkoušel tak i ostatní věci v plnu zrealizuješ. Předem ale děkuji.

8

Re: [vyřešeno] i++ ve výrazu je vyhodnoceno chybně

ringojr napsal:

Než se tedy dostanu k tomu abych to vyzkoušel tak i ostatní věci v plnu zrealizuješ. Předem ale děkuji.

Tak už je to komplet hotovo big_smile

Nejnovější verze SDSCP umí volání funkcí s parametry, návratové hodnoty, lokální proměnné, řídící struktury (smyčky while, for, switch) a spoustu dalších vychytávek.

Jestli se k tomu dostaneš, bylo by super kdybys to otestoval.

Chcete #include, lepší makra, řídící struktury atd. v SDS-C? Nástroj SDSCP vám to umožní!