2017-06-10 2 views
-1

Ich bin daran interessiert, eine Code-Editor-App für Android in C# zu erstellen (mit Xamarin). Eines der wichtigsten Dinge für einen guten Code-Editor ist natürlich die Syntax-Hervorhebung für eine Vielzahl populärer Sprachen. Ich möchte keine benutzerdefinierten Tokenizer für alle diese Sprachen selbst schreiben, also suche ich nach einer Bibliothek, die bereits Grammatiken für sie hat.Welche Bibliotheken kann ich zur Syntax verwenden, um gängige Sprachen in C# hervorzuheben?

Aus meiner Zeit das Surfen im VSCode editor source code, ich weiß, dass es viele vordefinierte Grammatikdateien für bestimmte Sprachen, in .tmLanguage (Textmate-Stil) oder .cson (Atom-Stil) Format. Beispiel: here sind eine Sammlung von Grammatiken, die von Atom verwaltet werden, und here ist die offizielle C# -Grammatik, die von .NET Foundation verwaltet wird.

Ich suchte zunächst eine .NET-Bibliothek, die diese Dateien analysieren und mir erlauben würde, sie mit Ausdrücken zu vergleichen, aber AFAICS existiert nicht. Etwas wie vscode-textmate oder textpow wäre genau das, was ich suche, aber diese sind nicht in .NET geschrieben.

Kann jemand mich auf eine Bibliothek verweisen, die mir mit diesem Zweck helfen würde? Wäre es auch eine gute Idee, eine .NET JavaScript engine zu verwenden, um Funktionen aus den oben genannten Bibliotheken auszuführen, wenn ich keine finden kann? Normalerweise würde ich nicht zögern, eine Engine zu verwenden, aber ich fürchte, Verzögerungen von ein paar hundert ms wären für Syntax-Hervorhebungen nicht akzeptabel.

+0

Dies ist eine Android spezifische Frage, so sollten Sie es deutlich machen. GitHub hat seinen Android-Client Open Source, der ein Steuerelement verwendet, https://github.com/pockethub/PocketHub. Sie könnten prüfen, was genau sie in Java tun und dann das in C# und Xamarin übersetzen. –

Antwort

2

Für eines meiner aktuellen Projekte habe ich nach verfügbaren Syntax-Parsern geforscht. Einer von ihnen war ANTLR, und hier ist ein Artikel, wie man es von C# verwenden: https://tomassetti.me/getting-started-with-antlr-in-csharp/

Es ist eine sehr große (über 100) Sammlung von Pre-Build-Grammatiken für verschiedene Sprachen hat: https://github.com/antlr/grammars-v4

ANTLR ist Java-basiert, also denke ich, es wird kein Problem sein, um es auf Android funktionieren zu lassen.

Verwandte Themen