2009-08-11 4 views
1

Ich habe einen grundlegenden Interpreter zuvor in C mit einem Präprozessor gemacht, die eine Menge Last von Parsing und dergleichen. Ich möchte diesen Preprozessor jetzt für den Einsatz in C# portieren und habe Probleme damit, da ich noch ziemlich neu in C# bin.Porting-Datei Vorverarbeitung Code von C nach C#

Mein alter Präprozessor machte es so Dinge wie

 
var $mine=  this; 
     //weird intendtation 
var  $something  + $a=$b; 

etwas herauskommen würde ziemlich maschinenlesbar als

 
var\0$mine\0=this\0;\0var\0$something\0+$a\0=$b\0;\0 

(mit \ 0 ist NULL, so dass ich die Namen von Variablen bekommen könnte und Bezeichner sehr sehr leicht)

Nun, mit meinem alten Code lese ich es in einem Byte zu einem Zeitpunkt und je nachdem, ob sein Leerzeichen und was das letzte Zeichen und so wa s, dann würde es entweder das Zeichen einfügen, NULL einfügen oder das Zeichen ignorieren.

Nun, ich habe Probleme, dies in C# -Code zu verwandeln. Ich benutze die StringBuilder-Klasse und verwende Insert(), um jeweils ein Zeichen einzufügen. Aber mein Problem ist, dass ich \ 0 nicht als Zeichen verwenden kann. Wie mache ich es so, dass Bezeichnernamen dann immer noch extrem einfach zu lesen sind? Wäre es besser, in diesem Fall ein Array von Strings oder String Builder-Objekten zu haben?

Antwort

6

Ich würde empfehlen, List<string> zu verwenden, und Elemente einzeln zu der Liste hinzuzufügen.

Dies gibt Ihnen die ganze Verwendbarkeit eines Arrays von Strings, aber es wird dynamisch wachsen. Der C# -Code zum Parsen Ihrer Datei sollte viel einfacher und verständlicher sein als der C-Code, wenn Sie diesen Ansatz verwenden.