2017-06-10 5 views
-1

Je suis intéressé par la création d'une application d'édition de code pour Android en C# (en utilisant Xamarin). Évidemment, une des nécessités pour tout bon éditeur de code est la coloration syntaxique pour un large éventail de langues populaires. Je ne veux pas écrire moi-même des tokenizers personnalisés pour toutes ces langues, donc je cherche une bibliothèque qui a déjà des grammaires pour eux.Quelles bibliothèques puis-je utiliser pour mettre en évidence la syntaxe des langages populaires en C#?

De mon temps à parcourir le VSCode editor source code, je sais qu'il ya beaucoup de fichiers de grammaire prédéfinis pour certaines langues, dans .tmLanguage (TextMate style) ou le format .cson (Atom style). Par exemple, here sont un ensemble de grammaires gérées par Atom, et here est la grammaire officielle C# gérée par la fondation .NET.

J'ai d'abord cherché une bibliothèque .NET qui analysait ces fichiers et me permettait de les faire correspondre aux expressions, mais aucune AFAICS n'existe. Quelque chose comme vscode-textmate ou textpow serait exactement ce que je cherchais, mais ceux-ci ne sont pas écrits en .NET.

Quelqu'un peut-il me diriger vers une bibliothèque qui m'aiderait dans ce but? Aussi, serait-il une bonne idée d'utiliser un .NET JavaScript engine pour exécuter des fonctions à partir des bibliothèques ci-dessus si je ne trouve pas? Normalement, je n'hésiterais pas à utiliser un moteur, mais je crains que des retards de quelques centaines de ms ne soient pas acceptables pour la mise en évidence de la syntaxe.

+0

Ceci est une question spécifique à Android, vous devriez donc le préciser. GitHub a son open source client Android qui utilise un contrôle, https://github.com/pockethub/PocketHub. Vous pouvez vérifier ce qu'ils font exactement en Java et ensuite traduire cela en C# et Xamarin. –

Répondre

2

Pour l'un de mes projets en cours, j'ai fait une recherche sur les analyseurs syntaxiques disponibles. L'un d'eux était ANTLR, et voici un article sur la façon de l'utiliser à partir de C#: https://tomassetti.me/getting-started-with-antlr-in-csharp/

Il a une très grande (plus de 100) collection de grammaires pré-construction pour des langues différentes: https://github.com/antlr/grammars-v4

ANTLR est Java basé, donc je suppose que ce ne sera pas un problème pour le faire fonctionner sur Android.