Leerzeichen und Kommentare
Im Allgemeinen enthält ein AST keine Leerzeichen, Zeilenabschlusszeichen und Kommentare.
Sinnvolle Formatierung
Sie haben Recht, dass dies in den meisten Fällen positiv ist (wodurch heilige Kriege beseitigt werden), und dass die Formatierung des Originalcodes in vielen Fällen eine gewisse Bedeutung hat, z Anweisungen mit einer Leerzeile).
Code, der nicht kompiliert werden kann
Während viele Parser sehr widerstandsfähig gegen fehlende Syntax sind, führt fehlerhafter Code häufig zu einem sehr seltsamen Syntaxbaum, der bis zu dem Punkt, an dem der Benutzer die Datei neu lädt, in Ordnung und fehlerfrei ist. Haben Sie jemals einen Fehler in Ihrer IDE gemacht und plötzlich hat die gesamte Datei "Squigglies"? Stellen Sie sich vor, wie das in einer anderen Sprache nachgeladen würde.
Möglicherweise schreiben Benutzer keinen nicht analysierbaren Code ein, aber sie müssen auf jeden Fall lokal speichern.
Keine zwei Sprachen passen perfekt zusammen
Wie andere betont haben, gibt es fast keine zwei Sprachen, die eine perfekte Feature-Parität aufweisen. Ich kann mir vorstellen, dass VB und C # oder JavaScript und CoffeeScript am nächsten kommen, aber selbst dann verfügt VB über Funktionen wie XML-Literale, die in C # keine Entsprechungen aufweisen, und die Konvertierung von JavaScript in CoffeeScript führt möglicherweise zu vielen JavaScript-Literalen.
Persönliche Erfahrung:
In einer Softwareanwendung, die ich schreibe, müssen wir dies tatsächlich tun, da von den Benutzern erwartet wird, dass sie "normales Englisch" eingeben, das im Hintergrund in JS konvertiert wird. Wir haben erwogen, nur die JS-Version zu speichern, aber kaum eine akzeptable Möglichkeit gefunden, um diese zuverlässig zu laden und zu entladen. Daher haben wir immer sowohl den Benutzertext als auch die JS-Version sowie ein Flag gespeichert, das angibt, ob "normales Englisch" vorliegt msgstr "Version wurde perfekt analysiert oder nicht.