Portál AbcLinuxu, 12. května 2025 05:10

Dotaz: Bitwise operátory a operátory bitového posuvu - priorita

2.7.2019 16:08 hermes
Bitwise operátory a operátory bitového posuvu - priorita
Přečteno: 404×
Odpovědět | Admin
Ahojte robím si vlastný programovací jazyk, parser som urobil v yacc sú tam klasické operátory či už matematické logické atd každý má presne stanovenú prioritu. Nechcel som objavovať ameriku, takže prioritu som odkukal s iných jazykov (na githube). Najmenšiu prioritu má logický or.

Včera som chcel pridať bitwise operátory: bitwise and, bitwise or, bitwise xor, bitwise not a tiež 3 operátory bitového posuvu. Akurát neviem akú im mám nastaviť prioritu. Iné jazyky z ktorých čerpám, tieto operátory nemajú, alebo ak majú tak zase nikde nevidím prioritu takže neviem na základe čoho ju mám stanoviť, ale predpokladám že priorita by mala byť asi ešte menšia ako u logických operátorov. Je môj predpoklad správny?
Nástroje: Začni sledovat (1) ?Zašle upozornění na váš email při vložení nového komentáře.

Odpovědi

2.7.2019 16:31 NN
Rozbalit Rozbalit vše Re: Bitwise operátory a operátory bitového posuvu - priorita
Odpovědět | | Sbalit | Link | Blokovat | Admin
napriklad v C, nebo C++..
2.7.2019 17:29 hermes
Rozbalit Rozbalit vše Re: Bitwise operátory a operátory bitového posuvu - priorita
Ďakujem veklmi pekne.
wamba avatar 2.7.2019 18:10 wamba | skóre: 38 | blog: wamba
Rozbalit Rozbalit vše Re: Bitwise operátory a operátory bitového posuvu - priorita
Odpovědět | | Sbalit | Link | Blokovat | Admin
v Perlu 6 je to, tak že or a xor jako +; and jako *; negace jako unární -. Jsou to operátory s symbolem + na začátku, např. +& jako bitwise and, v odkazované tabulce Operator precedence
This would have been so hard to fix when you don't know that there is in fact an easy fix.
2.7.2019 18:45 hermes
Rozbalit Rozbalit vše Re: Bitwise operátory a operátory bitového posuvu - priorita

To je tiež pekné,

ja mám logické operátory ako v klasických jazykoch (aj znakmi aj slovom):

  • "&&" alebo "and" je logický and
  • "||" alebo "or" je logický or
  • "!" alebo "not" je logický not

a bitwise nemám ako v iných jazykoch reprezentované znakmi, ale len slovné vyjadrenie - s dvojbodkou na začiatku: ":and" ":or" ":xor". Pretože vzácne znaky ako ^ | & ~ chcem využiť na niečo čo sa používa viac ako bitové operácie.

2.7.2019 18:47 hermes
Rozbalit Rozbalit vše Re: Bitwise operátory a operátory bitového posuvu - priorita
ešte not som zabudol takže ":not"
2.7.2019 19:15 debian+
Rozbalit Rozbalit vše Re: Bitwise operátory a operátory bitového posuvu - priorita
Odpovědět | | Sbalit | Link | Blokovat | Admin
Co je cielom tvojho „projektu“?
3.7.2019 11:32 hermes
Rozbalit Rozbalit vše Re: Bitwise operátory a operátory bitového posuvu - priorita
Dokázať si že viem napísať vlastný jazyk a potom v ňom napísať vlastný operačný systém, ktorý z trhu vytlačí Windows.
3.7.2019 11:33 hermes
Rozbalit Rozbalit vše Re: Bitwise operátory a operátory bitového posuvu - priorita
Ale nie to bol pokus o vtip :D Ciele zatiaľ nechcem zverejňovať kým nebudem mať hotový jazyk & ekosystém a okrem toho aj web so špecifikáciou a tutorialom + plugin do VSCode so všetkým čo k tomu patrí. Potom sem o tom napíšem aj blog.
2.7.2019 20:54 Michal Kubeček | skóre: 72 | Luštěnice
Rozbalit Rozbalit vše Re: Bitwise operátory a operátory bitového posuvu - priorita
Odpovědět | | Sbalit | Link | Blokovat | Admin
predpokladám že priorita by mala byť asi ešte menšia ako u logických operátorov

To bych nedoporučoval, IMHO je častěji potřeba aplikovat logické and/or na výsledky bitových operací, např.

  if ((flags1 & F_FOO) && (flags2 & F_BAR))

než naopak.

Osobně mám k prioritě operátorů pragmatický přístup: pokud potřebuju přemýšlet (nebo dokonce hledat), jak je to s prioritou, tak tam ty závorky radši dám i v případě, že bych nemusel.

3.7.2019 10:58 hermes
Rozbalit Rozbalit vše Re: Bitwise operátory a operátory bitového posuvu - priorita
Už som to urobil tak ako mi odporúčali išiel som podla priorít C / C++
3.7.2019 11:28 Michal Kubeček | skóre: 72 | Luštěnice
Rozbalit Rozbalit vše Re: Bitwise operátory a operátory bitového posuvu - priorita
To zní rozumně hned ze dvou důvodů. Za prvé je na takto zvolené priority velká část programátorů už zvyklá. Za druhé autoři C o návrhu podobných věcí opravdu důkladně přemýšleli a řídili se praktickým hlediskem, což je vidět třeba na tom, že logické operátory mají na rozdíl od Pascalu nižší prioritu než porovnávání; pracoval jsem v obou jazycích a nevzpomínám si na jedinou situaci, kdy by to pořadí podle Pascalu bylo praktičtější. (V knize dokonce zmiňují, že když se rozhodovali, jestli "=" má být porovnání nebo přiřazení, udělali si z existujících programů statistiku počtu porovnání a přiřazení.)
3.7.2019 12:00 hermes
Rozbalit Rozbalit vše Re: Bitwise operátory a operátory bitového posuvu - priorita
Máte pravdu v tomto sa treba držať zaužívaných zvyklostí.
21.8.2019 23:08 Miloslav Ponkrác
Rozbalit Rozbalit vše Re: Bitwise operátory a operátory bitového posuvu - priorita
O tom, že by autoři C důkladně přemýšleli o prioritě operátorů - tomu bych nevěřil. Protože jsem zažil už mnoho stesků, a jeden dokonce od autora C, že se jim priority nepodařilo trefit zrovna ideálně.

Criticism of bitwise and equality operators precedence

---

Navím jak volba konkrétní syntaktické podoby operátorů = a == v C/C++ souvisí s prioritami operátorů. Zřejmě bych potřeboval dodatečné vysvětlení, protože jsem to nepochopil.

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.