11
votes

Comment implémentez-vous la sélection de la syntaxe?

Je m'abarnie sur certains apprentissage et je veux écrire ma propre syntaxe en surbrillance pour les fichiers en C ++.

Quelqu'un peut-il me donner des idées sur la façon de faire cela?

Pour moi, il semble que lorsqu'un fichier est ouvert:

  1. Il faudrait être analysé et décidé du type de fichier source. Faire confiance à l'extension pourrait ne pas être une preuve incroyable

  2. Un moyen de savoir quels mots-clés / commandes s'appliquent à la langue

  3. un moyen de décider de quelle couleur chaque mot clé / commande obtient

    Je veux faire cela sur OS X, en utilisant c ++ ou objectif-c.

    Quelqu'un peut-il offrir des pointeurs sur la façon dont je pourrais commencer avec cela?


0 commentaires

4 Réponses :


0
votes

Je pense (1) n'est pas possible, car le seul moyen de dire si un fichier est valide C ++ consiste à l'exécuter via un analyseur C ++ et à voir si elle analyse ... mais si vous avez utilisé cela comme étant votre standard, Vous ne pouviez pas opérer sur le code qui ne compile pas car il s'agit d'un travail en cours, que vous voulez probablement faire. Il est probablement préférable de faire confiance à l'extension, car je ne pense pas que aucune autre méthode fonctionnera mieux que cela.

Vous pouvez obtenir une liste de mots-clés C ++ ici: http://www.cpppreference.com / wiki / mots-clés / démarrez

Les couleurs sont à vous (ou si vous le souhaitez, vous pouvez les rendre configurables et laisser le choix à l'utilisateur)


0 commentaires

15
votes

Les surligneurs de syntaxe ne vont généralement pas au-delà de l'analyse lexicale, ce qui signifie que vous n'avez pas à analyser la langue entière dans des déclarations et des déclarations et des expressions et de rien. Il suffit d'écrire un Lexer, qui est assez facile avec des expressions régulières. Je vous recommande de commencer par apprendre des expressions régulières, si vous ne l'avez pas déjà fait. Ça prendra toutes les 30 minutes.

Vous voudrez peut-être envisager de jouer avec Flex (le générateur d'analyseur lexical; https://github.com/westes / flex ) comme un exercice d'apprentissage. Il devrait être assez facile d'implémenter une syntaxe de base surligneur dans Flex que les sorties ont mis en évidence HTML ou quelque chose.

En bref, vous donneriez à FLEX un ensemble d'expressions régulières et à faire avec le texte correspondant, et le générateur correspondra goutcidement contre vos expressions. Vous pouvez faire votre transition Lexer parmi les états exclusifs (par exemple, dans les littéraux, les commentaires, etc.), comme indiqué dans La FAQ Flex . Voici un exemple canonique d'un lexer pour C écrit en flex: HTTP : //www.lysator.liu.se/c/ansi-c-grammar-l.html .

Faire une syntaxe extensible surligneur serait la partie suivante de votre voyage. Bien que je ne ss en aucun cas un fan de XML, jetez un coup d'œil à la définition des fichiers de mise en surbrillance de Kate Syntaxe, tels que Celui-ci pour C ++ . Votre tâche consisterait à comprendre la manière dont vous souhaitez définir des surligneurs de syntaxe, puis effectuez un programme qui utilise ces définitions pour générer HTML ou ce que vous voulez.


0 commentaires

1
votes

Vous voudrez peut-être examiner comment Geshi implémente en surbrillance, etc. En outre, il a un ensemble Bouquet de packs de langue contenant tous les mots-clés que vous voudrez jamais.


0 commentaires