Interpreter

Diese Seite verwendet Cookies. Durch die Nutzung unserer Seite erklären Sie sich damit einverstanden, dass wir Cookies setzen. Weitere Informationen

  • Ich bin momentan dabei, ein Interface für Adventures mit TUI zu entwickeln. leiter scheiterts bei mir am Interperter. Ich hab echt keinen blassen Schimmer, wie man das machen könnte. Könntet ihr mir mal völlig unabhängig ein bsispoiel schreiben? ich geb hier den Interpertercode und den GML-Ausgabecode. Was ganz einfaches, soll nur die Funktion erläutern.

    Interpertercode:

    Quellcode

    1. stdtext.draw("Hallo",green) //soll einen grünen Test zeichnen

    Hier der GML dazu

    GML-Quellcode

    1. draw_set_color(c_green)
    2. draw_text(akt_x, akt_y, "Hallo")


    Danke schonmal für die Hilfe!
  • Ich will einen Interpreter schreiben, bekomm das aber so nicht hin. Könntest du oder jemand anderes mir jetzt einen Beispielcode, der aus dem oben genannten Code, der aus einer Textdatei geladen wird, einen GML-Code (s. unten) macht?
  • Ich glaub, das ist nicht so einfach, da mal eben ein Beispiel zu coden. In welcher Sprache der Interpreter gecodet werden soll, ist egal?
    █████ ██ █ ████ everything ███ █████ is █████ ████ ████ fine ████ ███ █ ██████ love.
    █████ ███████ ███ your █████ ████ government.

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von mauge ()

  • Original von trgirl
    p.s mit C++ kann ichs also müsste es ja auch mit den GM klappen ;)
    Noch besser. Da lässt sich das ganze denke ich noch besser umsetzen, denn mit nem Interpreter des Interpreters ?(. Hast du ICQ, denn hier sind wir für C++-Fragen nicht gerade an der richtigen stelle, denke ich^^
  • hier mal ein ganz schnelles (aber etwas unflexibles) beispiel in GML
    Dateien
    • interpreter.zip

      (2,34 kB, 163 mal heruntergeladen, zuletzt: )
    Battle Command - WeltraumEchtzeitStrategie | Meine GM Spiele auf Box.net
    GCM/FA/O d-(--)@>---xpu s-:- !a C++$@ U- P L+ E W++ N o K-- w++ O? M V PS PE-- Y PGP t 5 X R+++ tv+ b DI D G e+ h? r-- x
  • wie im ICQ abgesprochen mal was in C++ ...

    Quellcode

    1. # include <iostream.h>
    2. # include <conio.h>
    3. # include <iomanip.h>
    4. # include <fstream.h>
    5. struct Artikel {
    6. int nr;
    7. char bez[15];
    8. double menge;
    9. double preis;
    10. };
    11. void erfassung (Artikel *);
    12. void ausgabe (Artikel *);
    13. void aendern (Artikel *);
    14. void loeschen (Artikel *);
    15. void main (void) {
    16. Artikel A;
    17. char wahl;
    18. do {
    19. clrscr();
    20. gotoxy(1,1);
    21. cout<<"Artikellager";
    22. gotoxy(1,2);
    23. cout<<"************";
    24. gotoxy(1,5);
    25. cout<<"(1) Erfassung und Speicherung
    26. eines Artikel";
    27. gotoxy(1,6);
    28. cout<<"(2) Ausgabe aller erfassten
    29. Artikel";
    30. gotoxy(1,7);
    31. cout<<"(3) Bestimmten Artikel
    32. aendern";
    33. gotoxy(1,8);
    34. cout<<"(4) Bestimmten Artikel
    35. loeschen";
    36. gotoxy(1,11);
    37. cout<<"(5) Programm beenden";
    38. gotoxy(3,15);
    39. clreol();
    40. cout<<"Ihre Wahl : ";
    41. wahl=getche();
    42. switch (wahl) {
    43. case '1' : erfassung (&A);
    44. break;
    45. case '2' : ausgabe (&A);
    46. break;
    47. case '3' : aendern (&A);
    48. break;
    49. case '4' : loeschen (&A);
    50. break;
    51. case '5' : break;
    52. default : gotoxy(1,24);
    53. clreol();
    54. cout<<"Falsche Auswahl!
    55. weiter mit bel. Taste!";
    56. getch();
    57. }
    58. } while(wahl!='5');
    59. }
    60. void erfassung (Artikel *A) {
    61. clrscr();
    62. gotoxy(1,1);
    63. cout<<"Erfassung und Speicherung eines
    64. Artikels";
    65. gotoxy(1,2);
    66. cout<<"*********************************
    67. *******";
    68. ofstream datei ("artikel.dat",
    69. ios::app);
    70. if (datei.fail()) {
    71. gotoxy(1,5);
    72. clreol();
    73. cout<<"Fehler beim Anlegen der Datei!
    74. Weiter mit bel. Taste!";
    75. getch();
    76. return;
    77. }
    78. do {
    79. gotoxy(1,5);
    80. clreol();
    81. cout<<"Artikel-Nr : ";
    82. cin>>A->nr;
    83. cin.ignore();
    84. } while (A->nr <0);
    85. gotoxy(1,6);
    86. cout<<"Artikelbezeichnung : ";
    87. gets(A->bez);
    88. do {
    89. gotoxy(1,7);
    90. clreol();
    91. cout<<"Artikelmenge : ";
    92. cin>>A->menge;
    93. cin.ignore();
    94. } while(A->menge<=0);
    95. do {
    96. gotoxy(1,8);
    97. clreol();
    98. cout<<"Artikelpreis(EUR) : ";
    99. cin>>A->preis;
    100. cin.ignore();
    101. } while(A->menge<=0);
    102. cout<<"\n\n\nWeiter mit bel. Taste!";
    103. getch();
    104. datei.write((char*) A, sizeof
    105. (Artikel));
    106. datei.close();
    107. }
    108. void ausgabe (Artikel *A) {
    109. int i=0;
    110. int menge=0;
    111. float gesamt=0;
    112. clrscr();
    113. gotoxy(1,1);
    114. cout<<"Ausgabe aller erfassten
    115. Artikel";
    116. gotoxy(1,2);
    117. cout<<"*******************************";
    118. ifstream datei("artikel.dat");
    119. if (datei.fail()) {
    120. gotoxy(1,5);
    121. clreol();
    122. cout<<"Fehler beim Oeffnen der Datei!
    123. Weiter mit bel. Taste!";
    124. getch();
    125. return;
    126. }
    127. cout<<"\n";
    128. while (!datei.eof()) {
    129. datei.read((char*) A, sizeof
    130. (Artikel));
    131. if (!datei.eof()) {
    132. cout<<"\nArtikelnnummer : " <<A-
    133. >nr;
    134. cout<<"\nArtikelbezeichnung : " <<A-
    135. >bez;
    136. cout<<"\nArtikelmenge : " <<A-
    137. >menge;
    138. cout<<"\nArtikelpreis : " <<A-
    139. >preis <<" EUR\n\n";
    140. i++;
    141. menge=menge+A->menge;
    142. gesamt=gesamt+menge*A->preis;
    143. }
    144. if (i%3==0) {
    145. cout<<"Weiter mit bel. Taste!";
    146. getch();
    147. clrscr();
    148. i=0;
    149. }
    150. }
    151. cout<<"\n\n";
    152. cout<<"Gesamtmenge : " <<menge <<"\n";
    153. cout<<"Gesamtpreis : " <<gesamt <<"
    154. EUR";
    155. cout<<"\n\nWeiter mit bel. Taste!";
    156. datei.close();
    157. getch();
    158. }
    159. void aendern (Artikel *A) {
    160. int anr;
    161. int x=0;
    162. long pos=0;
    163. fstream datei("artikel.dat");
    164. if (datei.fail()) {
    165. gotoxy(1,5);
    166. clreol();
    167. cout<<"Fehler beim Oeffnen der Datei!
    168. Weiter mit bel. Taste!";
    169. getch();
    170. return;
    171. }
    172. clrscr();
    173. gotoxy(1,1);
    174. cout<<"Aenderung eines Artikels";
    175. do {
    176. clreol();
    177. gotoxy(1,3);
    178. cout<<"Nr. des Artikels welchen sie
    179. aendern wollen : ";
    180. cin>>anr;
    181. cin.ignore();
    182. } while (anr<0);
    183. while (!datei.eof()) {
    184. pos=datei.tellg();
    185. datei.read((char*) A, sizeof
    186. (Artikel));
    187. if (anr==A->nr) {
    188. x=1;
    189. gotoxy(1,5);
    190. cout<<"alte Artikelnummer : "
    191. <<A->nr;
    192. gotoxy(1,8);
    193. cout<<"alte Artikelbezeichnung : "
    194. <<A->bez;
    195. gotoxy(1,11);
    196. cout<<"alte Artikelmenge : "
    197. <<A->menge;
    198. gotoxy(1,14);
    199. cout<<"alter Artikelpreis : "
    200. <<A->preis <<" EUR";
    201. do {
    202. gotoxy(1,6);
    203. clreol();
    204. cout<<"neue Artikelnnumer : ";
    205. cin>>A->nr;
    206. cin.ignore();
    207. } while(A->nr<0);
    208. gotoxy(1,9);
    209. cout<<"neue Artikelbezeichnung : ";
    210. gets(A->bez);
    211. do {
    212. gotoxy(1,12);
    213. clreol();
    214. cout<<"neue Artikelmenge : ";
    215. cin>>A->menge;
    216. cin.ignore();
    217. } while(A->menge<=0);
    218. do {
    219. gotoxy(1,15);
    220. clreol();
    221. cout<<"neuer Artikelpreis(EUR) : ";
    222. cin>>A->preis;
    223. cin.ignore();
    224. } while(A->preis<=0);
    225. datei.seekg(pos);
    226. datei.write((char*) A, sizeof
    227. (Artikel));
    228. }
    229. }
    230. if (x==0) cout<<"\n\n\nArtikelnummer
    231. nicht gefunden!";
    232. cout<<"\n\n\nWeiter mit bel. Taste!";
    233. datei.close();
    234. getch();
    235. }
    236. void loeschen (Artikel *A) {
    237. int anr;
    238. ifstream datei("artikel.dat");
    239. ofstream temp ("temp.dat");
    240. if (datei.fail() || temp.fail()) {
    241. gotoxy(1,5);
    242. clreol();
    243. cout<<"Fehler beim Oeffnen/Erstellen
    244. der Datei! Weiter mit bel. Taste!";
    245. getch();
    246. return;
    247. }
    248. clrscr();
    249. gotoxy(1,1);
    250. cout<<"Loeschen eines Artikels";
    251. do {
    252. clreol();
    253. gotoxy(1,3);
    254. cout<<"Nr. des Artikels welchen sie
    255. loeschen wollen : ";
    256. cin>>anr;
    257. cin.ignore();
    258. } while (anr<0);
    259. while (!datei.eof()) {
    260. datei.read ((char*) A, sizeof
    261. (Artikel));
    262. if (!datei.eof()) {
    263. if (anr!=A->nr) {
    264. temp.write ((char*) A, sizeof
    265. (Artikel));
    266. }
    267. }
    268. }
    269. datei.close();
    270. temp.close();
    271. int f=remove("artikel.dat");
    272. if (f==0) {
    273. f=rename ("temp.dat","artikel.dat");
    274. }
    275. else cout<<"\n\n\nFehler beim
    276. Loeschen!";
    277. cout<<"\n\n\nArtikel erfolgreich
    278. geloescht! Weiter mit bel. Taste!";
    279. getch();
    280. }
    Alles anzeigen





    ---------------

    ich weis void main ^^ .... eigentlich int main ....

    EDIT by WIN: code-tags eingefügt

    @ WIn danke :)

    p.s das ist im Borland builder 6 geschrieben ....

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von trgirl ()