Portál AbcLinuxu, 2. května 2025 20:36

Nástroje: Začni sledovat (0) ?Zašle upozornění na váš email při vložení nového komentáře.

Vložit další komentář
Bystroushaak avatar 6.6.2015 20:45 Bystroushaak | skóre: 36 | blog: Bystroushaakův blog | Praha
Rozbalit Rozbalit vše Re: Yapgen - parser generator
Odpovědět | Sbalit | Link | Blokovat | Admin
Pěkné, dal jsem tučňáka.
blog.rfox.eu
6.6.2015 23:43 Radek Miček | skóre: 23 | blog: radekm_blog
Rozbalit Rozbalit vše Re: Yapgen - parser generator
Odpovědět | Sbalit | Link | Blokovat | Admin
Samotný jazyk je popsán SLR(1) gramatikou, která je dostatečně silná pro popis obecného programovacího jazyka.
To znamená odstranit konflikty z gramatiky? To není příliš pohodlné, ne?
7.6.2015 02:47 Ivorne | blog: Ivorne
Rozbalit Rozbalit vše Re: Yapgen - parser generator
Já si ani nemyslím, že by LALR gramatiky byly z praktického hlediska o tolik silnější.
7.6.2015 07:01 zuzanak | skóre: 10 | blog: zuzanak
Rozbalit Rozbalit vše Re: Yapgen - parser generator

Ano to je pravda je nutné vyřešit SLR(1) konflikty vznikající v rozkladové tabulce. SLR(1) gramatika byla zvolena jako dostačující pro řešení původní úlohy v rámci které program yapgen vznikl.

Bedňa avatar 6.6.2015 23:49 Bedňa | skóre: 34 | blog: Žumpa | Horňany
Rozbalit Rozbalit vše Re: Yapgen - parser generator
Odpovědět | Sbalit | Link | Blokovat | Admin
Fajn len by potešil príklad z praxe.
Od té doby jsem jej párkrát využil při implementaci úkolů se kterými jsem se setkal v praxi.
KERNEL ULTRAS video channel >>>
7.6.2015 09:21 zuzanak | skóre: 10 | blog: zuzanak
Rozbalit Rozbalit vše Re: Yapgen - parser generator

Rozšířil jsem zápisek o pár příkladů z praxe.

Bedňa avatar 8.6.2015 23:13 Bedňa | skóre: 34 | blog: Žumpa | Horňany
Rozbalit Rozbalit vše Re: Yapgen - parser generator
Dík moc.
KERNEL ULTRAS video channel >>>
xkucf03 avatar 7.6.2015 12:18 xkucf03 | skóre: 49 | blog: xkucf03
Rozbalit Rozbalit vše C vs. C/C++
Odpovědět | Sbalit | Link | Blokovat | Admin

BTW: když píšeš „C/C++“, co to znamená? Umí to generovat zdroják v obou jazycích nebo to generuje C, které se dá přeložit i kompilátorem pro C++?

Mám rád, když se lidé přou, znamená to, že vědí, co dělají, a že mají směr. Frantovo.cz, SQL-DK, Relational pipes
7.6.2015 15:14 zuzanak | skóre: 10 | blog: zuzanak
Rozbalit Rozbalit vše Re: C vs. C/C++

Třetí možnost je správně: generuje to zdrojový soubor pro kompilátor C++, kde z C++ jsou používány následující funkce, které nebyly součástí jazyka C: metody ve strukturách (třídách), reference, datový typ bool, výčtový typ, a možná některé další.

Ale to není tak důležité, protože v případě potřeby je možné vygenerovat výsledný zdrojový soubor v libovolném jazyce (dostatečně silném). Tvrdá práce: generování DFA (Deterministický Konečný Automat) a LALR tabulky je již hotová a generování C/C++ souboru je v podstatě jen export algoritmů na těmito dvěma strukturami.

Příklady vygenerovaných .cc souborů odpovídajících překladačům popsaným v kapitolce "Příklad tvorby překladače" je uveden na: 1, 2, 3.

Uvedené soubory obsahují dvě základní funkce recognize_terminal a parser_parse_source_string, které dělají všechnu práci.

7.6.2015 13:28 Odin1918 | skóre: 6 | blog: Valhalla
Rozbalit Rozbalit vše Re: Yapgen - parser generator
Odpovědět | Sbalit | Link | Blokovat | Admin
Je to OT, ale proc zmizel posledni Leosuv blog? Cenzura?
xkucf03 avatar 7.6.2015 13:32 xkucf03 | skóre: 49 | blog: xkucf03
Rozbalit Rozbalit vše Leošův zápisek

To je mi dost divné. Sice nebyl nijak moc kvalitní, v podstatě o ničem, ale zápisky Miriam tu taky zůstávají (byť třeba ne na titulní stránce). A protože pod ním byly komentáře, nemohl ho běžný uživatel (jako autor) smazat. Leoš asi není běžný uživatel…

Mám rád, když se lidé přou, znamená to, že vědí, co dělají, a že mají směr. Frantovo.cz, SQL-DK, Relational pipes
Luboš Doležel (Doli) avatar 8.6.2015 16:48 Luboš Doležel (Doli) | skóre: 98 | blog: Doliho blog | Kladensko
Rozbalit Rozbalit vše Re: Leošův zápisek
Tuhle operaci může udělat jen uživatel root. Pokusím se zjistit, co se stalo.
Luboš Doležel (Doli) avatar 8.6.2015 17:05 Luboš Doležel (Doli) | skóre: 98 | blog: Doliho blog | Kladensko
Rozbalit Rozbalit vše Re: Leošův zápisek
Bohužel jsem neviděl tu cache, ale podle logu mazání provedu uživatel číslo 1. Takže autor.
7.6.2015 14:18 manasekp | skóre: 29 | blog: manasekp | Brno
Rozbalit Rozbalit vše Re: Yapgen - parser generator
Taky jsem si toho vsiml. V google cache to jeste je.
BIOKOMP | Cas od casu se pokousim nekoho srazit k zemi abych se tam nevalel sam.
Bystroushaak avatar 7.6.2015 14:43 Bystroushaak | skóre: 36 | blog: Bystroushaakův blog | Praha
Rozbalit Rozbalit vše Re: Yapgen - parser generator
xkucf03 avatar 7.6.2015 15:40 xkucf03 | skóre: 49 | blog: xkucf03
Rozbalit Rozbalit vše A sklep máte?

Ad patička:

Výhodná nabídka; Romantická kvelbená kóje v Kyjově (se záchodem!)

To je včetně toho pozemku nad tím nebo to je cena jen za díru v zemi a ty cihly? Kupuješ? Podle kabelů to vypadá, že elektřina tam je. Šlo by tam udělat datacentrum a menší kancelář. Na zahradě by se postavil stožár a bylo by :-)

Mám rád, když se lidé přou, znamená to, že vědí, co dělají, a že mají směr. Frantovo.cz, SQL-DK, Relational pipes
Bystroushaak avatar 7.6.2015 18:01 Bystroushaak | skóre: 36 | blog: Bystroushaakův blog | Praha
Rozbalit Rozbalit vše Re: A sklep máte?
Kupuješ?
Spíš jsem chtěl morálně podpořit majitele v jeho originálně snaze prodat kvelbenou kóji.
Petr Tomášek avatar 9.6.2015 10:54 Petr Tomášek | skóre: 39 | blog: Vejšplechty
Rozbalit Rozbalit vše Re: Yapgen - parser generator
ani to už ne...
multicult.fm | monokultura je zlo | welcome refugees!
8.6.2015 13:09 Jardík
Rozbalit Rozbalit vše Re: Yapgen - parser generator
Odpovědět | Sbalit | Link | Blokovat | Admin
Já bych dal nedostatečou, protože používáš "unsigned" tam, kde se hodí a je více správné použít "size_t". Např. na platformě, kde je numeric_limit<unsigned>::max() 0xffff a numeric_limit<size_t>::max() 0xffffffffffffffff, tak příliš omezuješ. Na platformě, kde je to zase naopak, zase "lžeš", protože tvrdíš, že dokážeš pracovat s něčím, co nejde naalokovat. (to, že takovou platformu neznáš, nebo že není, nikoho neomlouvá). Třeba na ČVUT v různých předmětech programování dávají nedostatečnou za jednu chybu běžně. A tohle chyba je. Ale nic si z toho nedělej, i často používané knihovny, jako je Qt, jsou plné chyb. Např. Qt tvrdí, že dokáže ze souboru do paměti načíst numeric_limit<int64_t>::max() bytů i na x86-32, přitom to neumí.
Bystroushaak avatar 8.6.2015 13:26 Bystroushaak | skóre: 36 | blog: Bystroushaakův blog | Praha
Rozbalit Rozbalit vše Re: Yapgen - parser generator
A poslal jsi patch?

Jak jde jinak život?
8.6.2015 16:10 zuzanak | skóre: 10 | blog: zuzanak
Rozbalit Rozbalit vše Re: Yapgen - parser generator

Nepochybně máš pravdu, bohužel jsem si zvykl používat základní datové typy tak, že počítám s platností následujících tvrzení:

sizeof(void *)        == sizeof(long unsigned)
sizeof(int)           == 4
sizeof(unsigned)      == 4
sizeof(char)          == 1
sizeof(long long int) == 8
sizeof(float)         == 4
sizeof(double)        == 8

A až narazím na platformu, na které to nebude platit, tak si budu trhat vlasy a vzpomenu si na tebe.

8.6.2015 23:38 Jardík
Rozbalit Rozbalit vše Re: Yapgen - parser generator
sizeof(void *) == sizeof(long unsigned)
Tohle třeba neplatí na Windows, teda né že mi Windows není ukradenej, ale stejně. Pro nějaké takové prasárničky typu pointer na číslo existuje (u)intptr_t.
sizeof(unsigned) == 4
S tímhle nepochodíš na různých mikroprocesorech. Na těch "hloupých" typu atmega, to je např. 2.
sizeof(char) == 1
Tohle platí vždycky. Ať už má char 8 nebo 256 bitů, pořád to 1 byte, protože byte je totéž co char.
vlastikroot avatar 8.6.2015 18:44 vlastikroot | skóre: 24 | blog: vlastikovo | Milevsko
Rozbalit Rozbalit vše Re: Yapgen - parser generator

Je neco spatnyho na tom, ze vubec nepouzivam size_t a vsechny velikosti mam pevne omezene napr. uint8_t nebo int64_t a naprosto ignoruju architekturu? Mam porad trochu problem s endianness, ale jinak se muzu spolehnout, ze bude kod fungovat vsude stejne (hlavne na 8bit AVR).

Uplne jsem ale prestal pouzivat packed struktury, to je zlo.

We will destroys the Christian's legion ... and the cross, will be inverted
8.6.2015 23:46 Jardík
Rozbalit Rozbalit vše Re: Yapgen - parser generator
Pokud program běží na ne-POSIX systému či nějaké té zvláštní architektuře, tak tvé číselné typy nemusí existovat. Chceš-li zaručit kompatibilitu, měl bys použít (u)int_leastN_t typ (kde N je těch 8, 16, 32, 64), které musí existovat a zároveň jsou to nejmenší typy, které mohou nabývat požadovaných hodnot, mohou ale nabývat i více, takže je třeba maskovat některé bitové operace. Popř. jejich fast verze, které jsou "rychlé", ale nejsou nejmenší. Na platformách, kde např. existuje uint8_t bude uint_least8_t stejný typ jako uint8_t. Na POSIX systémech uint8_t existovat bude (protože ty vyžadují 8bit char).

Ano, packed struktury jsou zlo. Proto je lepší rozvrhnout prvky od největšího po nejmenší, tak aby nevznikaly zbytečné paddingy. Taky je ale dobré u větších struktur uvažovat cacheline procesoru a nerozhazovat často používané prvky na různá místa a dělat kompromisy.
Bedňa avatar 8.6.2015 23:54 Bedňa | skóre: 34 | blog: Žumpa | Horňany
Rozbalit Rozbalit vše Re: Yapgen - parser generator
Takže navrhuješ overovanie typov podľa architektúry, alebo pretekanie premenných podľa architektúry?
KERNEL ULTRAS video channel >>>
9.6.2015 00:24 Jardík
Rozbalit Rozbalit vše Re: Yapgen - parser generator
Proč? Potřebuju-li velikost něčeho co rvu do paměti, vím, že size_t pro to stačí. Potřebuju-li něco s nějakou minimální velikostí, použiju jeden z (u)int_leastN_t typů, pro ukládání bytů použiju char/unsigned char (popř. uint_least8_t, nebo dokonce uint8_t pokud jsem si 100% pokuď vyžaduju 8bit char a tento požadavek uvedu někde třeba v dokumentaci). A nebo použiju i ty základní typy, unsigned má garanci (2^16-1) a více, size_t taky, unsigned long long má garanci (2^64-1), atd, stačí si najít minimální rozsahy a použít typ, co se hodí nejvíce k danému účelu. Konstanty v limits.h (popř climits) lze použít i pro podmíněnou kompilaci, nevidím problém v tom je použít, k tomu přeci jsou.
vlastikroot avatar 9.6.2015 18:26 vlastikroot | skóre: 24 | blog: vlastikovo | Milevsko
Rozbalit Rozbalit vše Re: Yapgen - parser generator

A co kdyz nemam vubec problem s minimalni velikosti, ale potrebuju presne urcite nasobky 8bitu? Napr. kdyz zpracovavam HW udaje a potrebuju 1:1 bitovou reprezentaci. Nebo treba kdyz rozebiram a skladam sitove pakety.

Taky moc se mi nelibi, ze bych vsude psal uint_least32_t misto uint32_t, je to delsi zapis a neprinasi funkcionalitu ani prehlednost.

We will destroys the Christian's legion ... and the cross, will be inverted
10.6.2015 21:11 Jardík
Rozbalit Rozbalit vše Re: Yapgen - parser generator
A co kdyz nemam vubec problem s minimalni velikosti, ale potrebuju presne urcite nasobky 8bitu? Napr. kdyz zpracovavam HW udaje a potrebuju 1:1 bitovou reprezentaci. Nebo treba kdyz rozebiram a skladam sitove pakety.
Na platformě, kde neexistuje 8bit typ toho nedocílíte a musíte použít typ větší (a třeba z něho použít jen 8 bitů, to je na vás) a na platformě, kde existuje, tak ho použijete. A když ho vyžadujete, tak není problém otestovat, jestli je nadefinováno nějaké UINTN_MAX makro a kydnout tam #error s vysvětlením proč a co, než nechat kompilaci selhat na nějaké chybě, která třeba nic neřekne potenciálnímu "kompilovači" vašeho kódu. A jestli se vám zdají jména dlouhé, tak použijte kratší, jazyk k tomu poskytuje prostředky (typedef, using).
vlastikroot avatar 10.6.2015 21:42 vlastikroot | skóre: 24 | blog: vlastikovo | Milevsko
Rozbalit Rozbalit vše Re: Yapgen - parser generator
Na jake platforme neexistuje 8bit? Da se k takove realne dostat jako obycejny smrtelnik?
We will destroys the Christian's legion ... and the cross, will be inverted
Luboš Doležel (Doli) avatar 11.6.2015 13:31 Luboš Doležel (Doli) | skóre: 98 | blog: Doliho blog | Kladensko
Rozbalit Rozbalit vše Re: Yapgen - parser generator
Mám pocit, že tohle má jen 16bitový datový typ (je v tom nějaký Analog Devices DSP), takže i ASCII stringy mají 16 bitů na znak. Portoval jsem z toho kód na Android a bylo to někdy docela peklo.
vlastikroot avatar 11.6.2015 17:45 vlastikroot | skóre: 24 | blog: vlastikovo | Milevsko
Rozbalit Rozbalit vše Re: Yapgen - parser generator
DSP bych do toho nepocital, to by me nikdy nenapadlo, ze by muj kod mohl bezet na DSP. Je urcen pouze pro MCU a CPU.
We will destroys the Christian's legion ... and the cross, will be inverted
11.6.2015 15:15 deda.jabko | skóre: 23 | blog: blog co se jmenuje "každý den jinak" | za new york city dvakrát doleva a pak už se doptáte
Rozbalit Rozbalit vše Re: Yapgen - parser generator
Na platformě, kde neexistuje 8bit typ toho nedocílíte a musíte použít typ větší (a třeba z něho použít jen 8 bitů, to je na vás) a na platformě, kde existuje, tak ho použijete.

Toto je naprosto absurdni situace, ktera by mohla nastat v drevnich dobach pocitacu typu PDP-XY, kdy jeste nebyl byte obecne prijatou jednotkou pro ulozeni informace a velikost slova byla definovana moznostmi hardwaru.

Napr. architektura SPARC nebo treba JVM pracuji interne s 32bitovyma hodnotama a jen pri praci s pameti vyuzivaji typy s mensim rozsahem... a nikomu to vetsi problemy necini, protoze prekladac se o to postara sam.
Asi před rokem se dostali hackeři na servry Debianu a ukradli jim zdrojové kódy.
11.6.2015 16:32 Jardík
Rozbalit Rozbalit vše Re: Yapgen - parser generator
Jde hlavně o překladač, ano. Klidně bych teď mohl napsat C kompilátor (kdybych měl čas), který na x86 bude mít 16bit char a váš kód tam pak klekne na obskurní chybě, protože je tu váš předpoklad, že máte 8bit char, který však nikde neuvedete a nikde ho nevynucujete, popř. neuvede jiný předpoklad, který ho implikuje (třeba POSIX).
vlastikroot avatar 11.6.2015 17:38 vlastikroot | skóre: 24 | blog: vlastikovo | Milevsko
Rozbalit Rozbalit vše Re: Yapgen - parser generator
Na takovej kompilator se muzu vykaslat. U nekterych projektu kaslu i na ten microsofti.
We will destroys the Christian's legion ... and the cross, will be inverted
xkucf03 avatar 11.6.2015 20:50 xkucf03 | skóre: 49 | blog: xkucf03
Rozbalit Rozbalit vše Re: Yapgen - parser generator
kdybych měl čas

Čemu se teď vlastně věnuješ? Nechceš se někdy rozepsat v blogu?

Mám rád, když se lidé přou, znamená to, že vědí, co dělají, a že mají směr. Frantovo.cz, SQL-DK, Relational pipes
11.6.2015 22:08 Jardík
Rozbalit Rozbalit vše Re: Yapgen - parser generator
Věnuju se úvaze o důvodu mého bytí. Věnuju se opakováním, že nemám na nic čas, přitom vůbec nic nedělám. Momentálně to mám disassemblerovanou binárku jedný hry, skládám z toho zdrojový kód v C++. Pak tu překládám bytecode z lua skriptů zpět na skripty, který musí dát opět schodný bytecode. No a tímhle trávím celý den, a proto nemám na nic čas. Taky jsem potřeboval jít k doktorovi, protože mám zánět předkožky (asi mi to tam začíná hnít, protože neprovozuji pohlavní styk), ale nemám na něj. Takže si dvacetkrát denně omývám bimbase a doufám, že to zmizí. A když ne, tak mi asi upadne.
11.6.2015 22:12 Jardík
Rozbalit Rozbalit vše Re: Yapgen - parser generator
A pořád uvažuji, co mám jít dělat. Pořád si nevím rady jak a kde si najít práci. Já se ani nemám jít kam podívat, na cestu daleko nemám a do tří hodin pěšky toho tu moc není (3+3 hodiny cesta, 8 hodin práce a 8 hodin spánek, 1 hodina snídaně a výprava do práce, 1 hodina mytí a příprava na spánek = 24hod).
11.6.2015 22:14 Jardík
Rozbalit Rozbalit vše Re: Yapgen - parser generator
Jó a ještě mám pořád problém s tím varletem, to taky zlobí. A pak ještě začíná bolet ten zub, jak mám 2 roky vypadlou plombu.

Založit nové vláknoNahoru

Tiskni Sdílej: Linkuj Jaggni to Vybrali.sme.sk Google Del.icio.us Facebook

ISSN 1214-1267, (c) 1999-2007 Stickfish s.r.o.