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