Autor Zpráva
tqs
Profil *
Potřeboval bych poradit, jak kontrolovat, zda daný výraz vyhovuje danému vzoru. Uvedu příklad vzoru.
(Syntaxe v BNF)
vyraz::= vyraz * vyraz | cislo

Tohle je samozřejmě jen hodně zjednodušený příklad, jde mi zkrátka o tu rekurzi.

Říkal jsem si, že by to snad šlo udělat pomocí reg. výrazů, ale nejsem s nimi moc velký kamarád a netuším, jestli něco jako rekurzi vůbec umí...

Případně uvítám i jiné návrhy, jak v PHP vytvořit vlastní parser nebo něco takového...
AM_
Profil
To, co říkáš, teoreticky lze, jelikož regulární výraz sám o sobě je řetězec, takže na něj samotný můžeš aplikovat jiné regulární výrazy (nebo dokonce i sebe sama, ale nedovedu si představit, k čemu by to mohlo být - řekl bych že k ničemu). PHP parser regulárních výrazů má (dokonce 2 - Perl compatible a POSIX, doporučuji používat variantu jedna - s druhou se do dalších verzí PHP nepočítá a práce s ní není moc příjemná).
tqs
Profil *
Jasně, vím, jak se v PHP obecně pracuje s regulárními výrazy. Jde mi o to, jak konkrétně zapsat ten příklad, co jsem uvedl. Pokud by někdo byl schopný mi tu rekurzi předvést v praxi, byl bych mu vděčný.

Vaše odpověď

Mohlo by se hodit


Prosím používejte diakritiku a interpunkci.

Ochrana proti spamu. Napište prosím číslo dvě-sta čtyřicet-sedm: