Yacc resp FsYacc - operator precedence rubrika: Programování: Jiné

7 xxar3s
položil/-a 28.5.2019

Ahojte poprosím krátky výklad ako funguje prioritizácia operátorov v násstroji Yacc. Robím si totiž programovací jazyk, ale dáko mi nefungujú tie priority operátorov tak ako by som chcel. (And a Or by mal mať prednosť pred == a !== a < a > atd)

Viem že sa na to používajú %left %right a %nonassoc ale potreboval by som to teraz presne vysvetliť čo a ako funguje (zatiaľ si to len domýšlam na základe zdrojákov parserov iných jazykov čo som našiel na githube ale asi si nedomýšlam správne keďže to nerobí úplne to čo očakávam).

odkaz Vyřešeno
6 Tomáš Votruba
odpověděl/-a 29.5.2019
 
upravil/-a 30.5.2019

Ahoj, záleží. Jakým jazykem mluvíš?

Já znám dobře jen PHP a nejlíp se mi čte gramatika v php-parseru, tady konkrétně řádek s ==, ===

Jak dobře? Předtím jsem vůbec netušil to je lexer/gramatika/parser a teď po pár měsících jsem už přidal typované property, arrow functions nebo spread operator (všechny z PHP 7.4).

Jestli neznáš PHP, tak ti to bude asi k ničemu :D

Komentáře

  • xxar3s : Dík znám aj PHP. Síce ten link čo si mi poslal nefunguje, ale našiel som si tvoj projekt a v ňom parser https://github.com/nikic/PHP-Parser/blob/master/grammar/php7.y a skúsim sa nim inšpirovať. Pozriem to večer lebo teraz som v práci dík. 30.5.2019
  • xxar3s : A inak som pozeral aj AST čo produkuje F#kový parser a on robí s jedného IF s AND a OR operátormi viacero IFov. Zaujímavé riešenie. možno skúsim aj to. 30.5.2019
  • Tomáš Votruba : Fórum to okouslo, fixnuto 30.5.2019

Pro plný přístup na Devel.cz se prosím přihlaste:

Rychlé přihlášení přes sociální sítě:

Nebo se přihlaste jménem a heslem:

Zadejte prosím svou e-mailovou adresu.
Zadejte své heslo.