Thread Modulempfehlung für Suchfunktion (38 answers)
Opened by bianca at 2010-07-11 08:58

topeg
 2010-07-19 17:04
#139943 #139943
User since
2006-07-10
2611 articles
BenutzerIn

user image
Erst der Parser, dann der Interpreter.

Der Parser wandelt die Suche in ein "einfach" interprtierbares Format. Der Interpreter wendet es an um damit Aktionen aus zu führen.

Bisher habe ich nur vom Parser gesprochen. Der Interpreter kommt danach. Auch ihn kann man auf die selbe weise Rekursiv machen wie den Parser.

Du hast also einen fertigen vollständigen Parser? Gut.

Dann zum Interpreter.
Wie würdest du das den von Hand machen?
Etwa so?
Bei "OR":
Code (perl): (dl )
1
2
3
4
5
6
if(index($text,"Bedingung 1"))
{ print "gefunden\n"; }
elsif(index($text,"Bedingung 2"))
{ print "gefunden\n"; }
else
{ print "nicht gefunden\n" }


Bei "AND":
Code (perl): (dl )
1
2
3
4
5
6
7
8
9
if(index($text,"Bedingung 1"))
{
  if(index($text,"Bedingung 2"))
  { print "gefunden\n"; }
  else
  { print "nicht gefunden\n" }
}
else
{print "nicht gefunden\n"}


Das kannst du natürlich auch mit der vom Parser erzeugten Struktur verknüpfen:
Code (perl): (dl )
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
if($struct->[0] eq 'OR')
{
  if(index($text,$struct->[1]))
  { print "gefunden\n"; }
  elsif(index($text,$struct->[2]))
  { print "gefunden\n"; }
  else
  { print "nicht gefunden\n" }
}
elsif($struct->[0] eq 'AND')
{
  if(index($text,$struct->[1]))
  {
    if(index($text,$struct->[2]))
    { print "gefunden\n"; }
    else
    { print "nicht gefunden\n" }
  }
  else
  {print "nicht gefunden\n"}
}


Hier kommt die Rekursivität erst wenn du auch eine verschachtelte Struktur hast.

View full thread Modulempfehlung für Suchfunktion