Multisyntax-Parser

Übersicht BlitzBasic Codearchiv

Neue Antwort erstellen

 

CodeMaster

Betreff: Multisyntax-Parser

BeitragFr, Jan 23, 2004 16:39
Antworten mit Zitat
Benutzer-Profile anzeigen
Ich will kein Konkurrenzausdemringschmeißer sein, aber hier mein Code:BlitzBasic: [AUSKLAPPEN]
Dim Parameter$(20)
Global Command$,ParameterCount

While Not Command$ = \"quit\"
Color 100,255,100
Cmd$ = Input$(\"Command: \")
ParseCmd(Cmd$)
Color 255,80,0
Print \"> \" + Command$
Color 255,125,0
For i = 1 To ParameterCount
Print \" + \" + Parameter$(i)
Next
Print
Wend
End

Function ParseCmd(Cmd$)
Cmd$ = Cmd$ + \" \"
NextCommandMarks$ = \" ,|\"
CommandBrackets$ = \"({[<>]})\"
For i = 0 To 20 : Parameter$(i) = \"\" : Next
Command$ = \"\"
Length = Len(Cmd$)
For i = 1 To Length
Buffer$ = Mid$(Cmd$,i,1)
If Instr(Left$(CommandBrackets$,Len(CommandBrackets$)/2),Buffer$) Then
If ParamCount < 1 Then
IsValue = 2
EndIf
EndIf
If Instr(Mid$(CommandBrackets$,Len(CommandBrackets$)/2+1),Buffer$) Then
If ParamCount < 2 Then
IsValue = 0
EndIf
EndIf
If Buffer$ = Chr$(34) Or Buffer$ = \"'\" Then
IsValue = 1 - IsValue
If (Not i = Length) Then
If Not TempCmd$ = \"\" Then
If IsValue = 1 Then TempCmd$ = TempCmd$
Parameter$(ParamCount) = TempCmd$
ParamCount = ParamCount + 1
TempCmd$ = \"\"
EndIf
EndIf
Else
If IsValue = 1 Then
TempCmd$ = TempCmd$ + Buffer$
ElseIf IsValue = 2 Then
If Not Instr(Left$(CommandBrackets$,Len(CommandBrackets$)/2),Buffer$) Then TempCmd$ = TempCmd$ + Buffer$
Else
If Not Instr(CommandBrackets$,Buffer$) Then
If Instr(NextCommandMarks$,Buffer$) Then
If Not i = 1 Then
If Not Instr(NextCommandMarks,Mid$(Cmd$,i-1,1)) Then
If Not TempCmd$ = \"\" Then
Parameter$(ParamCount) = TempCmd$
ParamCount = ParamCount + 1
TempCmd$ = \"\"
EndIf
EndIf
Else
If Not TempCmd$ = \"\" Then
Parameter$(ParamCount) = TempCmd$
ParamCount = ParamCount + 1
TempCmd$ = \"\"
EndIf
EndIf
Else
TempCmd$ = TempCmd$ + Buffer$
EndIf
Else
If Not TempCmd$ = \"\" Then
Parameter$(ParamCount) = TempCmd$
ParamCount = ParamCount + 1
TempCmd$ = \"\"
EndIf
EndIf
EndIf
EndIf
Next
If Not TempCmd$ = \"\" Then
Parameter$(ParamCount) = TempCmd$
ParamCount = ParamCount + 1
EndIf
parametercount = ParamCount - 1
Command$ = Parameter$(0)
End Function
Was macht diesen Code so besonders? Sein multipler Syntax.Der Code versteht so ziemlich alle Programmierstyles:
  • Befehl Parameter1, Parameter2
  • Befehl Parameter1 Parameter2
  • Befehl Parameter1 | Parameter2
  • Befehl (Parameter1, Parameter2)
  • Befehl {Parameter, Parameter2}
  • Befehl <Parameter1 Parameter2>
  • Befehl ("Ganze Sätze möglich!",Parameter2 [,"optionaler Parameter 3"])
  • "Befehl mit vier Worten" [Parameter1, Parameter2]
  • <Noch ein Befehl> <Parameter1, Parameter2>
...um nur einige wenige aller möglichen Kombinationsbeispiele zu nennen. Es gelten folgende Parametertrennungszeichen: "<{[(|)]}>, "
Wollte den Code zwar (wenn überhaupt, dann) erst später veröffentlichen, aber eigentlich ist es auch egal. Viel Spaß damit.
Dies ist ein Text, der an jeden Beitrag von dir angehängt werden kann. Es besteht eine Limit von 500 Buchstaben.

Zuletzt bearbeitet von CodeMaster am Mo Apr 01, Parse error: syntax error, unexpected ';' in htdocs\viewtopic.php on line 102

Travis

BeitragFr, Jan 23, 2004 20:32
Antworten mit Zitat
Benutzer-Profile anzeigen
Darf ich mal fragen, was genau dieses Programm bewirkt? Wozu ist das gut?
www.funforge.org

Ich hasse WASD-Steuerung.

Man kann alles sagen, man muss es nur vernünftig begründen können.

Shadow of the night

BeitragFr, Jan 23, 2004 20:37
Antworten mit Zitat
Benutzer-Profile anzeigen
Hab ich mich auch schon gefragt

MfG Shadow of the Night
User posted image

BigSnake

BeitragFr, Jan 23, 2004 20:48
Antworten mit Zitat
Benutzer-Profile anzeigen
Das was alle Kommando Parser tun. Es nimmt nen String und zerteilt ihn in seine Parameter. Keine große Sache

Neue Antwort erstellen


Übersicht BlitzBasic Codearchiv

Gehe zu:

Powered by phpBB © 2001 - 2006, phpBB Group