Autor Téma: Návrh typu pro regex - problém s vnořením do sebe sama  (Přečteno 1325 krát)

Offline vangog

  • Hrdina
  • ****
  • Příspěvků: 370
  • Karma: 0
    • Verze Delphi: 7
Re:Návrh typu pro regex - problém s vnořením do sebe sama
« Odpověď #60 kdy: 18-06-2019, 12:12:22 »
Zatím mi to funguje, kromě te chyby při ukončování programu.

Offline vangog

  • Hrdina
  • ****
  • Příspěvků: 370
  • Karma: 0
    • Verze Delphi: 7
Re:Návrh typu pro regex - problém s vnořením do sebe sama
« Odpověď #61 kdy: 18-06-2019, 22:18:55 »
Dají se v Delphi provádět bitwise AND/OR operace na byte?

Chtěl bych udělat pole
options: Array of byte;

S tím, že každý znak v řetězci s předlouhou má vlastní options.

Příklad takového řetězce:
'(?i)Hello(?I) Andy'
Odpovídá deseti znakům. Options by pak bylo pole bajtů o délce 10, kde každé písmeno má své nastavení.

  char binary options:
  decimal value:
  0 - no options
  1 - '.' any character
  2 - '^' begin of the string
  4 - '$' end of the string or carriage return
  8 - '?' the character may be skipped e.g. dady?
  16 - (?i) insensitive search on
  32 - (?m) multiline search on
  64 - \K  can be used instead of lookbehind: h\Kd matches only the second d in adhd

Co jsem se zatím díval do nápovědy tak jsem našel použití jen s integery, což mi ale přijde hodně neefektivní, protože když používám rozsah jen 8 bitů, tak by musel porovnávat 32 bitů na 32 bitovém systému, 64 bitů na 64 bitovém systému, což mi nedává smysl.

Na pokus jsem zkoušel:
Kód: Delphi [Vybrat]
  1. setLength(options,1);
  2. options[0] := 0 or 8;
  3. if ( 4 and options[0] ) then
  4.    begin
  5.    end;
  6.  

Vrací chybu "Type of expression must be BOOLEAN"

Offline vandrovnik

  • Guru
  • *****
  • Příspěvků: 711
  • Karma: 42
    • Verze Delphi: 10.3
Re:Návrh typu pro regex - problém s vnořením do sebe sama
« Odpověď #62 kdy: 18-06-2019, 22:38:08 »
Funguje i s byte.
Kód: Delphi [Vybrat]
  1. if (options[0] and 4)<>0 then

Offline Delfin

  • Padawan
  • ******
  • Příspěvků: 1821
  • Karma: 70
  • SW konzultant
    • Verze Delphi: 2009, Tokyo, Rio
Re:Návrh typu pro regex - problém s vnořením do sebe sama
« Odpověď #63 kdy: 18-06-2019, 22:46:16 »
Co jsem se zatím díval do nápovědy tak jsem našel použití jen s integery, což mi ale přijde hodně neefektivní, protože když používám rozsah jen 8 bitů, tak by musel porovnávat 32 bitů na 32 bitovém systému, 64 bitů na 64 bitovém systému, což mi nedává smysl.

V tom pripade je muzes naplnit 4-mi (pripadne 8-mi) hodnotami a maskovat je najednou. Regitry procesoru architektury x86 jsou zkratka tak velke a intrukce natolik optimalni aniz by plytvaly Tvym parsovanim buhviceho. Premature optimization je IMHO o co tu jde. Jinymi slovy, snazis se optimalizovat sebe sama, jazyk i procesor, aby pracoval efektivneji pro Tebou zvoleny 4-bitovy, 8-bitovy nebo jiny n-bitovy blok dat byt je hardwarove procesor optimalne navrzeny pro danou velikost registru.

Matne si pamatuji naturu projektu o nichz se serie techto prispevku toci; pokud se nepletu slo o nejake prekladove zalezitosti. Coz je absolutne nesrovnatelne napr. s optimalizaci trenovani modelu umele inteligence...
« Poslední změna: 18-06-2019, 23:09:28 od Delfin »
I'm a soldier, so don't panic! I know the underground! I like the WTFPL license! No more Google, go duck, go!

Offline pf1957

  • Padawan
  • ******
  • Příspěvků: 2569
  • Karma: 132
    • Verze Delphi: D2007, XE3, DX10
Re:Návrh typu pro regex - problém s vnořením do sebe sama
« Odpověď #64 kdy: 18-06-2019, 23:01:29 »
Co jsem se zatím díval do nápovědy tak jsem našel použití jen s integery, což mi ale přijde hodně neefektivní, protože když používám rozsah jen 8 bitů, tak by musel porovnávat 32 bitů na 32 bitovém systému, 64 bitů na 64 bitovém systému, což mi nedává smysl.
Au to boli... za tu dobu, co nam tady vylizujes mozky a prudis uz sis taky mohl poridit nejakou ucebnici programovani :-(

Offline vangog

  • Hrdina
  • ****
  • Příspěvků: 370
  • Karma: 0
    • Verze Delphi: 7
Re:Návrh typu pro regex - problém s vnořením do sebe sama
« Odpověď #65 kdy: 18-06-2019, 23:04:38 »
Mohl bys to napsat ještě jednou a česky prosím? Tvou ajťáckou komunikaci nezvládám.

Offline vandrovnik

  • Guru
  • *****
  • Příspěvků: 711
  • Karma: 42
    • Verze Delphi: 10.3
Re:Návrh typu pro regex - problém s vnořením do sebe sama
« Odpověď #66 kdy: 18-06-2019, 23:04:54 »
Premature optimization je IMHO o co tu jde.

Já jsem zvědav, jestli nakonec neobjeví kouzlo assembleru :-)

Offline Delfin

  • Padawan
  • ******
  • Příspěvků: 1821
  • Karma: 70
  • SW konzultant
    • Verze Delphi: 2009, Tokyo, Rio
Re:Návrh typu pro regex - problém s vnořením do sebe sama
« Odpověď #67 kdy: 18-06-2019, 23:05:53 »
Premature optimization je IMHO o co tu jde.

Já jsem zvědav, jestli nakonec neobjeví kouzlo assembleru :-)

We need to go deeper ;D
I'm a soldier, so don't panic! I know the underground! I like the WTFPL license! No more Google, go duck, go!

Offline vangog

  • Hrdina
  • ****
  • Příspěvků: 370
  • Karma: 0
    • Verze Delphi: 7
Re:Návrh typu pro regex - problém s vnořením do sebe sama
« Odpověď #68 kdy: 18-06-2019, 23:14:32 »
Funguje i s byte.
Kód: Delphi [Vybrat]
  1. if (options[0] and 4)<>0 then

Dík. S touto syntaxí jsem se ještě nesetkal.