Viikon pähkinä
Tuomas J. Lukka
lukka at fas.harvard.edu
Mon Mar 15 09:46:21 CST 1999
On Mon, 15 Mar 1999, Sami Poikonen wrote:
>
> Koitetaanpa saada keskustelua listalle nyt tällaisella ongelmalla;
>
> Meillä on merkkijono $str.
> Se sisältää useita sanoja.
> On tietyt sanat qw(AND OR NOT XOR)
> jotka eivät saa esiintyä peräkkäin.
> eli "AND AND OR" on väärin.
> Poikkeuksena kuitenkin "AND NOT" ja "OR NOT" ovat sallittuja.
>
> Tehtävä: tee regexp, joka korvaa vialliset kohdet merkkijonosta
> vaikka ilmoituksella [error! (virheellinen merkkijono)]
>
> Esim.
> x AND y -> x AND y
> a AND OR y -> x [error! AND OR] y
> a NOT OR NOT y -> x [error! NOT OR NOT] y
s/((?:NOT |AND |OR )* (?:AND|OR))/[error! \1]/g;
> Tehtävähän on äärimmäisen helppo, jos poikkeustapauksia "AND NOT" ja "AND
> OR" ei tarvitse ottaa huomioon.
> ps. Onko olemassa jotain moduulia, joka osaisi yksinkertaisia
> loogistenlauseiden sievennyksia; tautologiat, de morganin lauseen yms.
Ainakin parsiminen onnistuu esim. Parse::RecDescentillä mutta sievennyksistä
en tiedä.
Tuomas (nyt jenkkilästä)
More information about the Helsinki-pm
mailing list