Tool zum konvertieren (übersetzen) C zu Gehen?
Welchem tool verwenden, um konvertieren Sie C Quellcode in die Go-source-code?
Zum Beispiel, wenn der C-code enthält:
struct Node {
struct Node *left, *right;
void *data;
};
char charAt(char *s, int i) {
return s[i];
}
den entsprechenden Go-code von dem tool generiert werden soll:
type Node struct {
left, right *Node
data interface{}
}
func charAt(s string, i int) byte {
return s[i]
}
Das tool nicht perfekt sein muss. Es ist OK, wenn einige Teile des generierten Go code, der korrigiert werden muss von hand.
- Ich habe nicht gesehen, ein Werkzeug gefunden, die Ihren Anforderungen, und das klingt mehr wie eine Anfrage, um eine für Sie geschrieben, vielleicht nicht wirklich ein Spiel für diese Seite.
- Es existieren bereits Fragen wie "C Java" oder "C Perl". Diese Frage ist nicht anders.
- Warum fragst du? Wird es nicht einfacher mix C & Go-code? (GCC 4.7 hat eine Go-front-end -noch unvollkommen-, so dass möglich ist, manchmal)
- Diese Website soll dazu beitragen, sich gegenseitig in einer freundlichen Art und Weise. Ich fordere, dass alle Anforderungen downvoted 🙂
- Ich , schrieb ein übersetzer konvertieren kann einige einfache C-Programme zu Gehen, aber es ist nur ein proof-of-concept.
- Dies ist eine sinnvolle Frage und die Tatsache, dass es geschlossen als "off-topic" ist eine unglückliche Anwendung der SO Regeln.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Denke ich Nein, solche (C zu Gehen-source-code-Konvertierung) tool vorhanden sind heute. Könnten Sie in Erwägung ziehen, um Ihren eigenen Konverter. Stellt sich die Frage: ist es das Wert, und wie geht das?
Es wahrscheinlich nicht der Mühe Wert ist, weil Sie Gehen und C könnte irgendwie kompatibel. Zum Beispiel, wenn Sie verwenden den GCC-4.6 (oder freigegeben werden, 4.7, d.h. die neuesten snapshot) deiner kann sich wahrscheinlich link C & Go-Codes zusammen, mit etwas Sorgfalt.
natürlich, wie üblich, die bösen in die details.
Möchten Sie einen Konverter, wollen Sie die erhaltenen Go code lesbar und editierbar ist (dann wird die Aufgabe schwieriger ist, da Sie nicht möchten, dass die Struktur des Codes, und Sie wollen auch, dass die Kommentare)? In diesem Fall, werden Sie wahrscheinlich benötigen, Ihre eigene C-parser (und es ist eine schwierige Aufgabe ist).
Wenn Sie kümmern sich nicht um die Lesbarkeit des generierten code Gehen, können Sie zum Beispiel die Erweiterung eines bestehenden Compilers um die Arbeit zu tun. Zum Beispiel GCC ist erweiterbar thru plugins oder durch SCHMELZEN Erweiterungen, und Sie könnte passen GCC (mit SCHMELZEN, oder, Ihre eigene C-plugin für GCC) zu transformieren Gimple-Darstellung (die interne Repräsentation für die Anleitung im GCC) unlesbaren code Gehen. Das ist irgendwie einfacher (aber immer noch mehr als eine Woche Arbeit).
Natürlich Schnittstellen, Kanäle und sogar Speicherverwaltung (garbage Collection Speicher) keine standard-C-Pendant.
rsc erstellt github.com/rsc/c2go zu konvertieren c basierende Go-compiler in Go.
Als externe Beispiel, akavel scheint zu versuchen, es zu benutzen zu erstellen, Gehen Sie basiert lua: github.com/akavel/goluago/
github.com/xyproto/c2go ist ein anderes Projekt, aber es hat nicht berührt worden war, in eine kleine Weile.
Ich bin mir fast sicher, dass es kein solches tool, aber IMHO in jeder Sprache ist es gut zu schreiben, in seinem eigenen "coding-Stil".
Daran erinnern, wie sehr wir alle geliebt, C-Präprozessor-tricks und wirklich Künstlerische Arbeit mit Zeigern? Denken Sie daran, wie viel Pflege es dauerte, bis befassen sich mit malloc/free oder mit Gewinde?
Gehen ist anders. Sie haben keinen Präprozessor, aber Sie haben closures, Objekte, Methoden, Schnittstellen, garbage collector, Scheiben, goroutines und viele andere nette features.
So, warum code konvertieren, anstatt es umschreiben in eine viel bessere und sauberere Weg?
Natürlich hoffe ich, dass Sie nicht über eine 1000K Zeilen code in C, dass Sie in den Hafen zu Gehen 🙂
Überprüfen Sie heraus dieses Projekt
https://github.com/elliotchance/c2go
Die detaillierte Beschreibung ist in diesem Artikel
Soweit ich weiß, ein solches Werkzeug nicht vorhanden ist (noch nicht). So sind Sie verpflichtet, zu konvertieren Sie Ihre C-code zur hand Gehen.
Ich weiß nicht, wie Komplex die C-code, die Sie konvertieren möchten, aber möchten Sie vielleicht im Auge zu behalten, Gehe eine "Besondere" Art, Dinge zu tun. Wie die Verwendung von Schnittstellen und Kanäle.
Werfen Sie einen Blick auf SCHLUCK, http://www.swig.org/Doc2.0/Go.html es übersetzen der C/C++ - Header zu gehen, und wickeln Sie Sie für einen Ausgangspunkt. Dann können Sie die port-teilen über bit von bit.