Interpreter

Für allgemeine Fragen zur Programmierung mit PureBasic.
Benutzeravatar
AndyX
Beiträge: 1272
Registriert: 17.12.2004 20:10
Wohnort: Niederösterreich
Kontaktdaten:

Beitrag von AndyX »

LittleFurz hat geschrieben:Willst du nicht doch versuchen den Easy Interpreter zu mißhandeln :? ?
Wieso denn? :roll:
LittleFurz hat geschrieben:Easy ist auf jeden Fall lesbarer als das da :freak:.
Stimmt. Hab ja auch nix anderes behauptet. :mrgreen:
LittleFurz hat geschrieben:Easy kennt da wenigstens Kommentare :mrgreen:
Naja, OMGWTFIT s ja auch nich so ne tolle und umfangreiche Sprache wie Easy oder... PureBasic!!!

Hmmm... Ich glaub ich werd OMGWTFIT jetzn bissl unkomplizierter machen. (mehr und bessere Befehle) :D

Mfg,
AndyX
Benutzeravatar
AndyX
Beiträge: 1272
Registriert: 17.12.2004 20:10
Wohnort: Niederösterreich
Kontaktdaten:

Beitrag von AndyX »

TADAAAA!!!
Neue Version von OMGWTFIT da. Is jetz viel besser.
Der Console Title steht jetzt immer am anfang der omg datei.
Die Asc-ändern Befehle sind auch anders einfach mal das HW-Prog durchschauen. :D

Code: Alles auswählen

; OMGWTFIT - Oh My God What The F*** Is This?

; Eine Programmiersprache, bei der man sich wirklich den A**** aufreißen muss, nur um mal ein Hello World Prog zu schreiben!!!


Goto main

Procedure Interpreter(datei$)
 ReadFile(0,datei$)
 ConsoleTitle(ReadString())
 
 For i = 0 To 100000
  
  *memory = AllocateMemory(1000)
  *highmemory = AllocateMemory(1000)
  ReadData(*memory,1)
  befehl$ = PeekS(*memory)
  FreeMemory(*memory)
  
  Select befehl$
   Case ":"
    ReadData(*highmemory,2)
    par$ = PeekS(*highmemory)
    asc = Val(par$)+100
   Case "."
    ReadData(*highmemory,2)
    par$ = PeekS(*highmemory)
    asc = Val(par$)
   Case ";"
    ReadData(*highmemory,2)
    par$ = PeekS(*highmemory)
    asc = Val(par$)+200 
   Case "!"
    Print(Chr(asc))
   Case "§"
    Delay(250)
   Case "#"
    ClearConsole()
  EndSelect
  
  If Eof(0) <> 0
   CloseConsole()
   Goto main
  EndIf
 
  FreeMemory(*highmemory)
  
 Next i
 
EndProcedure

main:

OpenConsole()
ConsoleTitle("OMGWTFIT")
ClearConsole()
Print("OMGWTFIT Sourecode: ")
datei$ = Input()

If datei$ = "exit"
 End
ElseIf datei$ = "getc"
 datei$ = GetClipboardText()
 Print("      "+datei$)
EndIf

SetClipboardText(datei$)
PrintN("")
asc = 0

Delay(750)

Interpreter(datei$)
Die Befehle: :mrgreen:

Code: Alles auswählen

OMGWTFIT - Oh My God What The F*** Is This?

.number Sets the Asc Value. (0 to 99)
:number Sets the Asc Value. (100 to 199)
;number Sets the Asc Value. (200 to 255)
!       Output.
§       Waits 250 ms.
#       Clear the Screen.
Hello World Prog: <)

Code: Alles auswählen

Hello, world in OMGWTFIT
#.72!§:01!§:08!§!§:11!§.44!§.32!:19!§
:11!§:14!§:08!§:00!§.33!§§§§§§§§#§§§§
Wenn ihr Verbesserungsvorschläge habt, bitte posten!!! :allright:
Bugs suchen wär auch nett.

Danke.

Mfg,
AndyX
Benutzeravatar
AndyX
Beiträge: 1272
Registriert: 17.12.2004 20:10
Wohnort: Niederösterreich
Kontaktdaten:

Beitrag von AndyX »

Soooooooooooo!

Ich hab mich heut wieder an meinen Interpreter rangehängt und habn paar Sachen verbessert. Vorallem den Namen. :D :D :D :D :D :D
Heißt jetzt C--. :lol: :lol: :lol:

Es gibt jetzt ne dateinamen-zwischenablage (clipboard), man muss einfach getc schreiben, um den vorherigen Dateinamen zu holen. Ich weiß es ist schnick-schnack, aber ich will herumexperimentieren. :D

Noch was wichtiges: Mit end kann man beenden. :lol: (hoffe, dass das keiner will. :mrgreen: :mrgreen: :mrgreen: :mrgreen: :mrgreen: :mrgreen: :mrgreen: :mrgreen: :mrgreen: :mrgreen: :mrgreen: :mrgreen: :mrgreen: :mrgreen: :mrgreen: :mrgreen: :mrgreen: :mrgreen: :mrgreen: :mrgreen: :mrgreen: :mrgreen: :mrgreen: :mrgreen: :mrgreen: :mrgreen: :mrgreen: :mrgreen: )

okay, genug geredet, hier ist der Code: (wird bald zu lang zum posten. :oops:)

Code: Alles auswählen

;C-- C-- C-- C-- C-- C-- = Das Gegenteil von C++

OpenConsole()
ConsoleTitle("Starting...")
Print("C-- Interpreter is starting...")
Delay(1500)
ClearConsole()
Goto main

Procedure Interpreter(datei$)
 
 If ReadFile(0,datei$)
  ConsoleTitle(ReadString())
 
  For i = 0 To 100000
   
   *memory = AllocateMemory(10)
   *highmemory = AllocateMemory(10)
   *highermemory = AllocateMemory(10)
   *megahighmemory = AllocateMemory(10)
   *waitmemory = AllocateMemory(50)
  
   ReadData(*memory,1)
   befehl$ = PeekS(*memory)
   FreeMemory(*memory)
  
   Select befehl$
    Case ":"
     ReadData(*highmemory,2)
     par$ = PeekS(*highmemory)
     asc = Val(par$)+100
    Case "."
     ReadData(*highmemory,2)
     par$ = PeekS(*highmemory)
     asc = Val(par$)
    Case ";"
     ReadData(*highmemory,2)
     par$ = PeekS(*highmemory)
     asc = Val(par$)+200 
    Case "!"
     ReadData(*highermemory,1)
    
     If PeekS(*highermemory) = "0"
      Print(Chr(asc))
     ElseIf PeekS(*highermemory) = "1"
      Print(Chr(ascin))
     ElseIf PeekS(*highermemory) = "2"
      Print(in$)
     EndIf
    
    Case "§"
     ReadData(*waitmemory,4)
     Delay(Val(PeekS(*waitmemory)))
    Case "#"
     ClearConsole()
    Case "?"
     asc = Random(255)
    Case "$"
     ReadData(*megahighmemory,1)
    
     If PeekS(*megahighmemory) = "0"
      ascin = Asc(LSet(Input(),1))
     ElseIf PeekS(*megahighmemory) = "1"
      in$ = Input()
     EndIf
    
    Case "-"
     Goto main
   EndSelect
  
   If Eof(0) <> 0
    Goto main
   EndIf
 
   FreeMemory(*highmemory)
   FreeMemory(*highermemory)
   FreeMemory(*megahighmemory)
   FreeMemory(*waitmemory)
  
  Next i
 
 ElseIf ReadFile(0,datei$) = 0
  ClearConsole()
  Print("Error! Could not open File! C-- is restarting Interpreter...")
  Delay(2750)
  ClearConsole()
  ConsoleTitle("Restarting...")
  Delay(1500)
  SetClipboardText("")
  Goto main
 EndIf
 
EndProcedure

main:

ConsoleTitle("C-- Interpreter")
ClearConsole()
Print("C-- Sourcecode: ")
datei$ = Input()

If datei$ = "end"
 End
ElseIf datei$ = "getc"
 datei$ = GetClipboardText()
 Print("       "+datei$)
EndIf

SetClipboardText(datei$)
PrintN("")
asc = 0
ascin = 0
in$ = ""

Delay(750)

Interpreter(datei$)
Die Befehle: :mrgreen:

Code: Alles auswählen

C-- Befehle

.number Asc Wert von 0 bis 99 festlegen.
:number Asc Wert von 100 bis 199 festlegen.
;number Asc Wert von 200 bis 255 festlegen.
!       Ausgeben, 0 für Hauptvariable, 1 für den Eingabe-Asc-Wert und 2 für die Eingabevariable.
§ms     Wartet [ms] Millisecunden.
#       Bildschirm löschen.
?       Zufälliger Asc Wert.
$number 0 = Ein Zeichen eingeben, 1 = mehrere Zeichen eingeben.
-       Ende.
Erweitertes (!!!) Hello-World-Prog:

Code: Alles auswählen

Advanced Hello, world in C--

This program demonstrates what you can do with Cminusminus

# .72 !0 §0250 :01 !0 §0250 :08 !0 §0250 !0 §0250 :11 !0 §0250 .44 !0 §0250 .32 !0 :19 !0 §0250 :11 !0 §0250 :14 !0 §0250 :08 !0 §0250 :00 !0 §0250 .33 !0 §2000 # .80 !0 §0100 :08 !0 §0100 :01 !0 §0100 .97 !0 §0100 :15 !0 §0100 :01 !0 §0100 .32 !0 :01 !0 §0100 :10 !0 §0100 :16 !0 §0100 :01 !0 §0100 :14 !0 §0100 .32 !0 :10 !0 §0100 :17 !0 §0100 :09 !0 §0100 .98 !0 §0100 :01 !0 §0100 :14 !0 §0100 .33 !0 §0100 .32 !0 $1 #

Das ist ein Kommentar =D

§0500 .89 !0 §0100 :11 !0 §0100 :17 !0 §0100 .32 !0 §0100 :04 !0 §0100 .97 !0 §0100 :18 !0 §0100 :01 !0 §0100 .32 !0 §0100 :16 !0 §0100 :21 !0 §0100 :12 !0 §0100 :01 !0 §0100 :00 !0 §0100 .58 !0 §0100 .32 !0 §0100 !2 §2000 # .82 !0 .97 !0 :10 !0 :00 !0 :11 !0 :09 !0 .32 !0 .67 !0 :04 !0 .97 !0 :14 !0 .97 !0 .99 !0 :16 !0 :01 !0 :14 !0 :15 !0 .58 !0 .32 !0 §0750 ? !0 §0500 ? !0 §0500 ? !0 §0500 ? !0 §2000 # .69 !0 §0500 :10 !0 §0500 :00 !0 §0500 .33 !0 §2500 # §1000 -
Achja hab ich fast vergessen:
LittleFurz hat geschrieben:Easy kennt da wenigstens Kommentare :mrgreen:
C-- kann sehrwohl Kommentare. Es grast einfach nur den Code nach Befehlen ab, die es kennt, alles andere wird ignoriert. :D

Es gilt wieder: Käfer töten!!! :twisted: :twisted: :twisted:
Eure Meinung wäre auch toll. :allright:

Schon wieder fast vergessen: WIE MACHE ICH IF-ABFRAGEN???
Ich tu da schon Tagelang grübeln.

Wenn ihr gleich auch noch rausrücken würdet, wie Schleifen gehen, wärs echt cool. :D :lol: :D

Mfg,
AndyX
Benutzeravatar
Zaphod
Beiträge: 2875
Registriert: 29.08.2004 00:40

Beitrag von Zaphod »

mit sprüngen innerhalb der ausführung deines skriptes.
Kaeru Gaman
Beiträge: 17389
Registriert: 10.11.2004 03:22

Beitrag von Kaeru Gaman »

ich finde es etwas unbequem, dass du die tokens auch als ein-zeichen-codes ein und ausgibst.

statt '#' sollte im eingabefenster z.b. 'Clr' erscheinen, und wenn man 'Clr' eingibt, wird '#' in den code geschrieben.

zu If und Schleifen:
Zaphod hat recht.
implementire erst eine art 'Jump', dann kannst du leichter auf ein bedingtes jump erweitern :wink:

zusatz:
wenn du entweder Hex-darstellung, oder grundsätzlich dreistellige zahlen benutzt,
kannst du dir drei verschiedene tokens für die wertfestlegung sparen.
(wird bald zu lang zum posten. )
stelle ihn später auf deinen webspace (zur not leih dir welchen), poste nurnoch nen link.
Zuletzt geändert von Kaeru Gaman am 16.01.2005 16:51, insgesamt 2-mal geändert.
Der Narr denkt er sei ein weiser Mann.
Der Weise weiß, dass er ein Narr ist.
Benutzeravatar
MVXA
Beiträge: 3823
Registriert: 11.09.2004 00:45
Wohnort: Bremen, Deutschland
Kontaktdaten:

Beitrag von MVXA »

Es gibt bereits ein Compiler mit dem Namen 'C--'. Ist ziehmlich gut. Versuch was anderes. /:->
Bild
Benutzeravatar
AndyX
Beiträge: 1272
Registriert: 17.12.2004 20:10
Wohnort: Niederösterreich
Kontaktdaten:

Beitrag von AndyX »

Ich mach das gnaze noch mal voll neu. Es wird Variablen (string oder Long) geben, der code wird nicht so ein wurschtel sein, Die sprache wird monkey heißen und affenlaute als Befehle haben, z.b: Eek, Chee, Whee. Gut ein paar hab ich von Monkey Island abgeguggt, aber die meisten sind selber gefunden. If-Abfragen werden wahrscheinlich auch sein.

Mfg,
AndyX
Benutzeravatar
Lars
Beiträge: 347
Registriert: 31.08.2004 23:53
Wohnort: Shanghai
Kontaktdaten:

Beitrag von Lars »

Lars
The only problem with troubleshooting is, that sometimes the trouble shoots back.
P4 2,6Ghz, 512MB RAM, GeForce 6200, WinXP Pro SP2, PB V3.94
Benutzeravatar
ts-soft
Beiträge: 22292
Registriert: 08.09.2004 00:57
Computerausstattung: Mainboard: MSI 970A-G43
CPU: AMD FX-6300 Six-Core Processor
GraKa: GeForce GTX 750 Ti, 2 GB
Memory: 16 GB DDR3-1600 - Dual Channel
Wohnort: Berlin

Beitrag von ts-soft »

Ich glaube AndyX meinte mehr Twelve Monkeys, daher auch Twelve Productions :D
PureBasic 5.73 LTS | SpiderBasic 2.30 | Windows 10 Pro (x64) | Linux Mint 20.1 (x64)
Nutella hat nur sehr wenig Vitamine. Deswegen muss man davon relativ viel essen.
Bild
Benutzeravatar
Lars
Beiträge: 347
Registriert: 31.08.2004 23:53
Wohnort: Shanghai
Kontaktdaten:

Beitrag von Lars »

ts-soft hat geschrieben:quote]Ich glaube AndyX meinte mehr Twelve Monkeys, daher auch Twelve Productions :D
Ich verstehe zwar nicht ganz, was du damit ausdrücken willst, aber das
war als eine Anregung zu Gunsten des Humors gedacht :)
Lars
The only problem with troubleshooting is, that sometimes the trouble shoots back.
P4 2,6Ghz, 512MB RAM, GeForce 6200, WinXP Pro SP2, PB V3.94
Antworten