La forme de Backus-Naur (souvent abrégée en BNF, de l'anglais Backus-Naur Form) est une notation qui permet d'écrire les règles des langages informatiques (notamment des langages de programmation).
C’est donc un métalangage employé pour définir inductivement un langage. Elle est utilisée dans certains livres pour décrire le langage étudié, mais également par de nombreux logiciels d’analyse syntaxique pour travailler sur des fichiers sources de plusieurs langages différents. Elle est une notation pour des grammaires formelles de type hors-contexte (car on définit les termes hors de leur contexte, pour replacer ensuite la définition desdits termes dans ce contexte).
Cette syntaxe a été conçue par John Backus et Peter Naur lors de la création de la grammaire du langage Algol 60. Initialement appelée Backus normal form (« forme normale de Backus »), elle est devenue la « forme de Backus-Naur » à la suggestion de Donald Knuth.
Le grammairien Panini est un précurseur de Backus et Naur.
Bien que la prise de connaissance d’un langage demande une connaissance des rudiments de sa syntaxe, la BNF n'est pas nécessairement adaptée à l'apprentissage d'un langage.
En effet, si la BNF a pour rôle de fixer des règles à des compilateurs et permet aussi à des informaticiens ayant les bases d'un langage d'en approfondir la logique fine, l'apprentissage initial de ce langage ne nécessite pas un tel degré de précision au départ, où on cherche à maîtriser la sémantique bien plus que la syntaxe (dont le compilateur signalera de toute façon les erreurs). Celui-ci peut même constituer un handicap par sa profusion de détails et de degrés d'abstraction imbriqués inutiles au simple utilisateur d'un langage.
Des expériences tentées vers 1967-1972 dans trois écoles des mines, par exemple, ont montré que cette forme axiomatique générale se mémorisait moins bien qu'une série d'exemples particuliers que l'élève généralisait ensuite de lui-même.
Cela n'enlève rien à l'intérêt du métalangage dans le domaine pour lequel il a été conçu, qui n'est pas l'enseignement.
Cette page est générée automatiquement et peut contenir des informations qui ne sont pas correctes, complètes, à jour ou pertinentes par rapport à votre recherche. Il en va de même pour toutes les autres pages de ce site. Veillez à vérifier les informations auprès des sources officielles de l'EPFL.
We teach the fundamental aspects of analyzing and interpreting computer languages, including the techniques to build compilers. You will build a working compiler from an elegant functional language in
We present syntax rewriting rules that translate Scala 2 code into Scala 3. Two major syntactic changes are introduced: new control structure syntax and significant indentation. We describe the design and the implementation of these rules and evaluate thei ...
Une grammaire formelle est un formalisme permettant de définir une syntaxe et donc un langage formel, c'est-à-dire un ensemble de mots admissibles sur un alphabet donné. La notion de grammaire formelle est particulièrement utilisée en programmation logique, compilation (analyse syntaxique), en théorie de la calculabilité et dans le traitement des langues naturelles (tout particulièrement en ce qui concerne leur morphologie et leur syntaxe).
Yacc est un outil de génération d'analyseurs syntaxiques en langage C. Yacc est l'acronyme de Yet Another Compiler Compiler (« Encore un autre compilateur de compilateur »).Yacc est notamment utilisé dans la construction des jeux d'instructions en langage machine pour les microprocesseurs. Du point de vue de la classification des langages, Yacc fournit le code nécessaire à l'analyse de langages de type 2 (non contextuels). Il est fréquemment utilisé en association avec Lex, générateur d'analyseur lexical.
En informatique, la programmation impérative est un paradigme de programmation qui décrit les opérations en séquences d'instructions exécutées par l'ordinateur pour modifier l'état du programme. Ce type de programmation est le plus répandu parmi l'ensemble des langages de programmation existants, et se différencie de la programmation déclarative (dont la programmation logique ou encore la programmation fonctionnelle sont des sous-ensembles).
RDF and SPARQL are established standards for data interchange and querying on the Web. While they have been shown to be useful and applicable in many scenarios, they are not sufficiently adequate for dealing with streams of data and their intrinsic continu ...
The research community of dialog generation has been interested in incorporating emotional information into the design of open-domain dialog systems ever since neural networks (sequence-to-sequence models in particular) were adopted for modeling dialogs. T ...