Anfänger versucht Parser zu entwickeln
- Ironsmurf
- Beiträge: 111
- Registriert: 04.01.2006 12:57
- Computerausstattung: AMD FX(tm)-6300 Six-Core Processor
3.50 GHz / 8 GB Ram
Windows 7 / 64bit / Ultimate
Purebasic 5.20 LTS (Windows - x86) - Wohnort: Deutschland
Anfänger versucht Parser zu entwickeln
Hallo zusammen
ich bin Anfänger und versuche einen Parser zu entwickeln, meine Frage zu folgendem Quelltext ist, ob man die Schreibarbeit noch vereinfachen kann,
es geht darum bestimmte Wörter zu ersetzen.
Z.B. aus Dolch wird Messer oder aus Degen wird Messer.
Vielen Dank im voraus für eure Mithilfe - PS:Habe noch die Demo von PureBasic
;String wird in einzelne Woerter geteilt
num = CountString(text$, " ") + 1
Dim Wort$(num) ; num viele elemente (0 bis num-1)
For I = 0 To num-1
Wort$(I) = StringField(text$, I + 1, " ")
;Wort für Wort analysieren und Synonyme vereinheitlichen
If FindString (Wort$(I),"nehm",1) : Wort$(I)="nimm"
ElseIf Wort$(I)="schwert"Or Wort$(I)="messer"Or Wort$(I)="saebel"Or Wort$(I)="degen"Or Wort$(I)="stichwaffe"Or Wort$(I)="dolch" : Wort$(I)="messer"
ElseIf Wort$(I)="gehen"Or Wort$(I)="gehe"Or Wort$(I)="ging"Or Wort$(I)="laufe"Or Wort$(I)="wandern"Or Wort$(I)="schreite"Or Wort$(I)="schleichen" : Wort$(I)="gehen"
ElseIf FindString (Wort$(I),"nord",1)Or FindString (Wort$(I),"sued",1)Or FindString (Wort$(I),"west",1)Or FindString (Wort$(I),"ost",1) : Wort$(I)="Richtung"
ElseIf FindString (Wort$(I),"movie",1)Or FindString (Wort$(I),"streifen",1) : Wort$(I)="film"
ElseIf FindString (Wort$(I),"gucken",1)Or FindString (Wort$(I),"schauen",1): Wort$(I)="sehen"
EndIf
Ausgabe$ = Ausgabe$ + Wort$(I) + " " : Debug (Ausgabe$)
Next
ich bin Anfänger und versuche einen Parser zu entwickeln, meine Frage zu folgendem Quelltext ist, ob man die Schreibarbeit noch vereinfachen kann,
es geht darum bestimmte Wörter zu ersetzen.
Z.B. aus Dolch wird Messer oder aus Degen wird Messer.
Vielen Dank im voraus für eure Mithilfe - PS:Habe noch die Demo von PureBasic
;String wird in einzelne Woerter geteilt
num = CountString(text$, " ") + 1
Dim Wort$(num) ; num viele elemente (0 bis num-1)
For I = 0 To num-1
Wort$(I) = StringField(text$, I + 1, " ")
;Wort für Wort analysieren und Synonyme vereinheitlichen
If FindString (Wort$(I),"nehm",1) : Wort$(I)="nimm"
ElseIf Wort$(I)="schwert"Or Wort$(I)="messer"Or Wort$(I)="saebel"Or Wort$(I)="degen"Or Wort$(I)="stichwaffe"Or Wort$(I)="dolch" : Wort$(I)="messer"
ElseIf Wort$(I)="gehen"Or Wort$(I)="gehe"Or Wort$(I)="ging"Or Wort$(I)="laufe"Or Wort$(I)="wandern"Or Wort$(I)="schreite"Or Wort$(I)="schleichen" : Wort$(I)="gehen"
ElseIf FindString (Wort$(I),"nord",1)Or FindString (Wort$(I),"sued",1)Or FindString (Wort$(I),"west",1)Or FindString (Wort$(I),"ost",1) : Wort$(I)="Richtung"
ElseIf FindString (Wort$(I),"movie",1)Or FindString (Wort$(I),"streifen",1) : Wort$(I)="film"
ElseIf FindString (Wort$(I),"gucken",1)Or FindString (Wort$(I),"schauen",1): Wort$(I)="sehen"
EndIf
Ausgabe$ = Ausgabe$ + Wort$(I) + " " : Debug (Ausgabe$)
Next
Es kommt immer auf die Sichtweise des Betrachters an.
- HeX0R
- Beiträge: 3042
- Registriert: 10.09.2004 09:59
- Computerausstattung: AMD Ryzen 7 5800X
96Gig Ram
NVIDIA GEFORCE RTX 3060TI/8Gig
Win11 64Bit
G19 Tastatur
2x 24" + 1x27" Monitore
Glorious O Wireless Maus
PB 3.x-PB 6.x
Oculus Quest 2 + 3 - Kontaktdaten:
Code: Alles auswählen
Dein Code
{Home}.:|:.{Codes}.:|:.{Downloads}.:|:.{History Viewer Online}.:|:.{Bier spendieren}
- Ironsmurf
- Beiträge: 111
- Registriert: 04.01.2006 12:57
- Computerausstattung: AMD FX(tm)-6300 Six-Core Processor
3.50 GHz / 8 GB Ram
Windows 7 / 64bit / Ultimate
Purebasic 5.20 LTS (Windows - x86) - Wohnort: Deutschland
Code: Alles auswählen
;String wird in einzelne Woerter geteilt
num = CountString(text$, " ") + 1
Dim Wort$(num) ; num viele elemente (0 bis num-1)
For I = 0 To num-1
Wort$(I) = StringField(text$, I + 1, " ")
;Wort für Wort analysieren und Synonyme vereinheitlichen
If FindString (Wort$(I),"nehm",1) : Wort$(I)="nimm"
ElseIf Wort$(I)="schwert"Or Wort$(I)="messer"Or Wort$(I)="saebel"Or Wort$(I)="degen"Or Wort$(I)="stichwaffe"Or Wort$(I)="dolch" : Wort$(I)="messer"
ElseIf Wort$(I)="gehen"Or Wort$(I)="gehe"Or Wort$(I)="ging"Or Wort$(I)="laufe"Or Wort$(I)="wandern"Or Wort$(I)="schreite"Or Wort$(I)="schleichen" : Wort$(I)="gehen"
ElseIf FindString (Wort$(I),"nord",1)Or FindString (Wort$(I),"sued",1)Or FindString (Wort$(I),"west",1)Or FindString (Wort$(I),"ost",1) : Wort$(I)="Richtung"
ElseIf FindString (Wort$(I),"movie",1)Or FindString (Wort$(I),"streifen",1) : Wort$(I)="film"
ElseIf FindString (Wort$(I),"gucken",1)Or FindString (Wort$(I),"schauen",1): Wort$(I)="sehen"
EndIf
Es kommt immer auf die Sichtweise des Betrachters an.
- freedimension
- Admin
- Beiträge: 1987
- Registriert: 08.09.2004 13:19
- Wohnort: Ludwigsburg
- Kontaktdaten:
- Ironsmurf
- Beiträge: 111
- Registriert: 04.01.2006 12:57
- Computerausstattung: AMD FX(tm)-6300 Six-Core Processor
3.50 GHz / 8 GB Ram
Windows 7 / 64bit / Ultimate
Purebasic 5.20 LTS (Windows - x86) - Wohnort: Deutschland
Ich möchte gerne einen Dialog - Bot programmieren zu einem bestimmten Thema (Filme), dazu möchte ich einen Parser entwickeln. Ich poste den ganzen Quelltext, die Wortwahl ist bis jetzt nur zum testen da.
Die Frage lautet, wie ich dieses Programm optimieren kann ?
Vielen Dank im voraus - PS:Hab noch die Demo, Vollversion ist noch nicht eingetroffen.
Die Frage lautet, wie ich dieses Programm optimieren kann ?
Vielen Dank im voraus - PS:Hab noch die Demo, Vollversion ist noch nicht eingetroffen.
Code: Alles auswählen
OpenConsole()
;Hallo, sagt das Programm
PrintN( "HALLO" )
PrintN( "BEENDEN KANNST DU DIES PROGRAMM MIT - quit" )
PrintN ( "Wie geht es Dir - USER ?" )
;Globaliere String$
Global Ausgabe$
Procedure String(text$)
If FindString(Ausgabe$, text$, 1)
ProcedureReturn 1
Else
ProcedureReturn 0
EndIf
EndProcedure
;Beginn der Endlos - Schleife
Repeat
PrintN("")
ConsoleColor(13,0)
;Texteingabe
Text$ = Input() : PrintN("")
;Entfernt Space von Beginn & Ende des Strings
Text$ = Trim(text$)
;Konvertiert alle Grossbuchstaben in Kleinbuchstaben
Text$ = LCase(text$)
If Text$ = ("quit") : Break
EndIf
;Satzzeichen , . ; : ! ? werden ermittelt und entfernt
Text$ = RemoveString (Text$,",")
Text$ = RemoveString (Text$,".")
Text$ = RemoveString (Text$,";")
Text$ = RemoveString (Text$,":")
Text$ = RemoveString (Text$,"!")
Text$ = RemoveString (Text$,"?")
;String wird in einzelne Woerter geteilt
num = CountString(text$, " ") + 1
Dim Wort$(num) ; num viele elemente (0 bis num-1)
For I = 0 To num-1
Wort$(I) = StringField(text$, I + 1, " ")
;Wort für Wort analysieren und Synonyme vereinheitlichen
If FindString (Wort$(I),"nehm",1) : Wort$(I)="nimm"
ElseIf Wort$(I)="schwert"Or Wort$(I)="messer"Or Wort$(I)="saebel"Or Wort$(I)="degen"Or Wort$(I)="stichwaffe"Or Wort$(I)="dolch" : Wort$(I)="messer"
ElseIf Wort$(I)="gehen"Or Wort$(I)="gehe"Or Wort$(I)="ging"Or Wort$(I)="laufe"Or Wort$(I)="wandern"Or Wort$(I)="schreite"Or Wort$(I)="schleichen" : Wort$(I)="gehen"
ElseIf FindString (Wort$(I),"nord",1)Or FindString (Wort$(I),"sued",1)Or FindString (Wort$(I),"west",1)Or FindString (Wort$(I),"ost",1) : Wort$(I)="Richtung"
ElseIf FindString (Wort$(I),"movie",1)Or FindString (Wort$(I),"streifen",1) : Wort$(I)="film"
ElseIf FindString (Wort$(I),"gucken",1)Or FindString (Wort$(I),"schauen",1): Wort$(I)="sehen"
EndIf
Ausgabe$ = Ausgabe$ + Wort$(I) + " " : Debug (Ausgabe$)
Next
ConsoleColor(14,0) : PrintN("")
;Ausgabe der Antwort, anhand von Schlüsselwörtern - 3 WÖRTER
If String ("mir")And String ("geht")And String ("gut") : PrintN ( "Das freut mich zu hoeren, das es Dir gut geht USER.")
ElseIf String ("bist")And String ("du") And String ("da") : PrintN ( "Ja, wo soll ich denn sonst sein." )
;Ausgabe der Antwort anahnd von Schlüsselwörtern - 2 WÖRTER
ElseIf String ("film")And String ("sehen") : PrintN ( "Was willst Du denn fuer einen Film sehen ?" )
ElseIf String ("geht")And String ("dir") : PrintN ( "Danke der Nachfrage - USER." )
ElseIf String ("fuehle")And String ("wohl") : PrintN ( "Ich bin erfreut, dass Du dich wohl fuehlst." )
ElseIf String ("geht")And String ("gut") : PrintN ( "Ich bin erfreut das es Dir gut geht." )
ElseIf String ("geht")And String ("so") : PrintN ( "Vieleicht geht es Dir besser, wenn Du Dir einen Spielfilm ansiehst." )
;Ausgabe der Antwort, anhand von Schlüsselwörtern - 1 WORT
ElseIf String ("nachfrage") : PrintN ("Es freut mich, dass es Dir gut geht.")
ElseIf String ("gut") : PrintN ("Schoen zu hoeren, das es Dir gut geht.")
Else : ConsoleColor (15,0) : PrintN ( "Das Thema lautet FILM, deswegen habe ich Deine Eingabe nicht verstanden - USER." )
EndIf
Ausgabe$ = ""
ForEver
CloseConsole()
Es kommt immer auf die Sichtweise des Betrachters an.