2015-12-13 2 views
1

Je veux développer un outil de vérification de syntaxe pour mon projet web. L'objectif est d'analyser la syntaxe ECMAScript 6.Comment développer un vérificateur de syntaxe de langue?

Je sais, qu'il existe des outils comme BabelJs, où il existe de tels outils (mais développés dans l'environnement NodeJs), mais je veux essayer de faire un tel outil, parce que j'obtiens de nouvelles connaissances.

Quel cri je commence à lire, quels livres et articles? Je vais mettre en évidence ce que je veux, je ne veux pas de compilateur/interprète, je veux juste un vérificateur de syntaxe.

+0

J'ai trouvé une série d'articles intéressants sur le sujet il y a quelque temps, je pense que cela vous sera utile. Bien qu'il implémente un sous-ensemble de C dans F #, les concepts pourraient être applicables à pratiquement toutes les langues: http://timjones.tw/blog/archive/2014/04/13/writing-a-minic-to-msil -Acompiler-in-fsharp-part-0-introduction – Alejandro

+0

@Alejandro: il est à noter que l'auteur de cet article tente seulement d'expliquer son compilateur spécifique, et cet auteur admet qu'il a déjà lu plusieurs livres techniques sur la compilation avant de commencer. –

Répondre

0

Vous devez:

  • Connaître la spécification ECMAScript 6 dans les moindres détails;
  • Construire un lexer
  • construire un analyseur

Vous devez en savoir plus sur lexing classique et l'analyse syntaxique, d'une bonne source de la théorie. Avec cet arrière-plan, vous pouvez penser à construire le lexeur et l'analyseur pour ECMAScript 6, qui est ce que fait la vérification de la syntaxe de base.

Voir https://en.wikipedia.org/wiki/Parsing, en particulier les références. Idéal est le livre Aho/Ullman/Sethi sur la compilation.

Ne vous attendez pas à ce que ce soit facile (la plupart des parser-newbies font cette erreur); l'analyse est en fait un sujet assez complexe. Attendez-vous à beaucoup d'efforts pour apprendre à bien faire les choses. Vous aurez également besoin d'apprendre comment construire la récupération d'erreur de syntaxe dans votre analyseur si vous allez vérifier la syntaxe et vous plaindre; les techniques pour ce faire ne sont pas aussi bien documentées/enseignées.

Indice fort: la construction de lexers et de parseurs est beaucoup plus facile si vous utilisez des outils générateurs lexer et parser. Vous avez toujours besoin des bases du compilateur pour comprendre ce que cela fait.

Voici une liste des lexer (« expression régulière ») et générateurs d'analyseur à choisir: http://en.wikipedia.org/wiki/Comparison_of_parser_generators

JavaScript a des caractéristiques (« insertion de virgule ») qui rendent singulièrement difficile à analyser par la plupart des méthodes conventionnelles. Donc, ce que vous devrez faire est d'apprendre la théorie pour obtenir les bases correctes, et ensuite apprendre à plier les analyseurs pour gérer des cas étranges comme JavaScript.

Vous aurez également besoin de cet analyseur spécial pour extraire le JavaScript des pages HTML qui composent votre "projet web".