Diskuze: EBL IDE (editor + překladač pro můj programovací jazyk)
V předchozím kvízu, Test znalostí C# .NET online, jsme si ověřili nabyté zkušenosti z kurzu.
Zobrazeno 20 zpráv z 20.
K personalizaci obsahu a reklam, poskytování funkcí sociálních médií a analýze naší návštěvnosti využíváme soubory cookie. Informace o tom, jak náš web používáte, sdílíme se svými partnery pro sociální média, inzerci a analýzy. Partneři tyto údaje mohou zkombinovat s dalšími informacemi, které jste jim poskytli nebo které získali v důsledku toho, že používáte jejich služby.
Používáme nezbytné cookies pro fungování webu a s tvým souhlasem také analytické a marketingové cookies.
Zajišťují základní funkce, bezpečnost a služby, které sis vyžádal. Nelze je vypnout.
| Služba | Poskytovatel | Účel | Cookies a úložiště | Doba uložení |
|---|---|---|---|---|
| ITnetwork | ITnetwork | Provoz webu, relace, přihlášení a uložení nastavení cookies. | PHPSESSID, auth_token, sid, itn_consent_impression, __Host-itn_consent | Relace až 1 rok |
| Google Tag Manager | Správa značek a načítání měřicích nástrojů webu. | Žádné | Neukládá se | |
| Google Fonts | Načítání typografie webu. | Úložiště řízené poskytovatelem | Dle podmínek poskytovatele | |
| Google Hosted Libraries | Načítání potřebných knihoven a stylů webu. | Úložiště řízené poskytovatelem | Dle podmínek poskytovatele | |
| Google reCAPTCHA | Ochrana formulářů a webu před zneužitím. | _GRECAPTCHA, rc::a, rc::b, rc::c, rc::f | Relace až 180 dní | |
| YouTube | Přehrávání vloženého video obsahu. | localStorage, IndexedDB; cookies after playback interaction | Relace až trvalé úložiště | |
| Vimeo | Vimeo | Přehrávání vloženého video obsahu. | __cf_bm, _cfuvid, vuid, localStorage, IndexedDB | Relace až 2 roky |
| Facebook Login | Meta | Přihlášení pomocí účtu třetí strany. | Úložiště řízené poskytovatelem | Relace až 1 rok |
| GoPay | GoPay | Zpracování uživatelem vyžádané platby. | Úložiště řízené poskytovatelem | Dle podmínek poskytovatele |
Pomáhají nám porozumět používání webu a zlepšovat ho.
| Služba | Poskytovatel | Účel | Cookies a úložiště | Doba uložení |
|---|---|---|---|---|
| Google Analytics 4 | Měření návštěvnosti a používání webu. | _ga, _ga_* | Až 2 roky | |
| Microsoft Clarity | Microsoft | Měření návštěvnosti a používání webu. | _clck, _clsk, _cltk | Relace až 1 rok |
Slouží k měření kampaní, personalizaci reklamy a marketingové komunikaci.
| Služba | Poskytovatel | Účel | Cookies a úložiště | Doba uložení |
|---|---|---|---|---|
| Google Ads | Měření kampaní, reklama a remarketing. | _gcl_au, _gcl_ls | Relace až 90 dní | |
| Meta Pixel | Meta | Měření kampaní, reklama a remarketing. | _fbp, _fbc, localStorage | Až 90 dní |
| Sklik | Seznam.cz | Měření kampaní, reklama a remarketing. | retargeting, sid, szn:* | Relace až trvalé úložiště |
| LinkedIn Insight | Měření kampaní, reklama a remarketing. | bcookie, li_gc, lidc, __cf_bm | Relace až 1 rok | |
| Ecomail | Ecomail.cz | Měření kampaní, reklama a remarketing. | ecmid, Úložiště řízené poskytovatelem | Dle podmínek poskytovatele |
| Atribuce kampaní ITnetwork | ITnetwork | Přiřazení návštěvy a objednávky ke kampani. | campaign_clid[*], user_session_context | Až 1 rok |
V předchozím kvízu, Test znalostí C# .NET online, jsme si ověřili nabyté zkušenosti z kurzu.
Vypadá to dobře. Dalo by se to používat v praxy?
Bych čekal že Event Based Language nebude zakládat ani tak na objektech jako na událostech. Ale i tak je to zajímavé. Fandím ti v optimalizacích, na hry to musí být pořádně rychlé.
Vzhledem k tomu, že je to jazyk v jazyku tak nevím 
Události jsou základ práce s ním. Bez nich ti budou objekty k ničemu. start, step a end jsou pro konzolové a webové aplikace, pro hry přibudou draw, mouse, keyboard a možná něco k tomu.
Nevím jak to myslíš 
Jan Vargovský : časem hodlám přidat překlad do ASM.
Akym sposobom vytvaras a reagujes na eventy? Mas tam funkcie, triedy, struktury? Aky mas type system? Ako mas implementovany prekladac?
Mno jestli je to jenom "na odzkoušení znalostí" nebo to s tím jazykem myslíš vážně a chceš aby ho lidi používali.
Myslím to s ním vážně. Mít svůj jazyk je můj sen co umím
programovat.
Syntax tvořím
tak, aby se kód co nejpříjemněji psal a zároveň toho jazyk uměl co
nejvíc. Ale je to perfektní cvičení z práce s textem 
eventy: vnitřně jsou to funkce s určitými pravidly
třídy a funkce: přibudou časem, teď dělám na kontrole syntaxe
~Ukázka super jednoduché třídy:~
class File{
#variables
text url;
#methods
init(_url)~/konstruktor
{
url = _url;
}
text getUrl()~/metoda
{
return url;
}
}
type system: zatím chybí (u překladu do js to nemá smysl), časem ho
propracuju
překladač: složitě
Projede se kód a rozloží se na tokeny. Ty se pak složí do příkazů.
Překladač pak bere jednotlivé příkazy a překládá je 
Ukaz zdrojaky, ked tak ti mozem aj poradit mam rozpisany kompilator na
vlastny jazyk a uz riesim semanticku analyzu 
Tady je zdroják na zpracování kódu.
http://www.itnetwork.cz/dev-lighter/302
Já vás varoval 
Metoda StrToParts je z nich nejhezčí (nejmíň předělávaná).
Faktoriál čísla 10 s událostmi:
sint s;
sint i;
<start>
s = 1;
i = 1;
<step>
if(i > 10)
{
&end 0;
}
s *= i;
i++;
<end>
std_out("10! = @s@");
výstup compileru: https://dl.dropboxusercontent.com/…t/index.html
Dam ti radu, najprv sa zameraj na lexikalnu analyzu (rozdelenie vstupneho textu na Tokeny, u teba je to funkcia StrToParts). Kazdy token by mal byt reprezentovany minimalne dvomi castami, ciselnym kodom a jeho hodnotou. Problem z textovymi retazcami je ten ze ich porovnavanie je pomale a zlozite, zato ciselne hodnoty sa porovnvaju lahko. Priklad:
class File{
#variables
text url;
#methods
init(_url)
{
url = _url;
}
text getUrl()
{
return url;
}
}
Transformujes na:
[ Key(int) : Value(String) ]
-------------------------------------------
[ KW_CLASS : null ]
[ IDENTIFIER : "File" ]
[ OPERATOR_BLOCK_L : null ]
[ OPERATOR_SHARP : null ]
[ WORD : "variables" ]
[ WORD : "text" ]
[ WORD : "url" ]
[ OPERATOR_SCOLON : null ]
...
[ OPERATOR_BLOCK_R : null ]
[ END_OF_FILE : null ]
Stlpec Key bude reprezentovat ciselny kluc (Lexem), na to si staci spravyt
enum. Kazdy operator a kazde klucove slovo tvojho jazyka by malo mat vlastny
ciselny kod, takze neskor ti bude stacit porovnavat ciselne kody a netreba
porovnavat stringy. Niektore Kluce ako IDENTIFIER mozu obsahovat dodatocnu
hodnotu Value. Hodnota identifikatora ta vecsinou zaujima az pri semantickej
analyze (samozrejme ak nerobis kompilator pre sialeny jazyk ako c/c++
).
Podobny princip sa pouziva skoro vo vsetkych kompilatoroch co som videl. Na
lexikalnu analyzu sa vecsinou pouziva stavovy automat, najprimitivnejsia forma
je vecsinou cyklus ktory prechadza znak po znaku cely subor, v cykle je jeden
giganticky switch a samotne znaky su stavy automatu.
Je dobre si ukladat do Tokenov aj dalsie informacie ako riadok na ktorom sa
token nachadza, zide sa to neskor pri chybovych hlaskach. Ver my ze chybove
hlasky ktore obsahuju aspon riadok kde nastala chyba ti usetria mnozstvo nervov
pri hladani chyb.
Priklady lexerov:
Jazyk NullC: http://code.google.com/…LC/Lexer.cpp
Jazyk D: https://github.com/…/src/lexer.c
Po lexikalnej analyze prichadza trochu tazsia cast, syntakticka analyza. V
tejto casti z tokenov vytvaras abstraktny syntakticky strom(AST), niekedy sa
vola aj derivacny strom. Po syntaktickej analyze nasleduje semanticka.
Ak si si jazyk dobre navrhol tak sadaju tieto casti od seba uplne oddelit.
Co sa tyka syntaktickej analyzy, doporucujem pozret si co to je Recursive
descent parser, jeho implementacia je velmi jednoducha, dobre sa vypisuju
chybove hlasky a hlavne netreba ovladat skoro ziadnu teoriu.
Časem to tak zpracuju, dneska už nemám čas
Ale díky za rady.
Po dlouhé době přidávám základní popis syntaxe mého jazyka. Časem
přibudou třídy, struktury, výjimky apod.
https://dl.dropboxusercontent.com/…L_syntax.pdf
Kdokoliv může samozřejmě psát rady a připomínky 
Zobrazeno 20 zpráv z 20.
