For faster navigation, this Iframe is preloading the Wikiwand page for Sémantique opérationnelle.

Sémantique opérationnelle

Si ce bandeau n'est plus pertinent, retirez-le. Cliquez ici pour en savoir plus. Cet article ne cite pas suffisamment ses sources (septembre 2022). Si vous disposez d'ouvrages ou d'articles de référence ou si vous connaissez des sites web de qualité traitant du thème abordé ici, merci de compléter l'article en donnant les références utiles à sa vérifiabilité et en les liant à la section « Notes et références ». En pratique : Quelles sources sont attendues ? Comment ajouter mes sources ?

En informatique, la sémantique opérationnelle est l'une des approches qui servent à donner une signification aux programmes informatiques d'une manière rigoureuse, mathématiquement parlant (voir Sémantique des langages de programmation).

Une sémantique opérationnelle d'un langage de programmation particulier décrit comment chaque programme valide du langage doit être interprété en termes de suite d'états successifs dans la machine.

Cette suite d'états est la signification du programme.

Dans le cas d'un programme fonctionnel, l'état final d'une suite qui termine donne la valeur de retour du programme. Dans le cas général, il peut y avoir plusieurs suites de calculs et plusieurs valeurs de retour pour un seul programme, parce que celui-ci pourrait être non déterministe.

Un des moyens les plus courants pour définir rigoureusement une sémantique opérationnelle est de fournir un système de transition d'états rendant compte du comportement attendu du programme considéré. Une telle définition autorise une analyse formelle du langage, permettant l'étude de relations entre les programmes. Parmi les relations importantes, les pré-ordres de simulation et les bisimulations sont très utiles dans le cadre du parallélisme.

Définir une sémantique opérationnelle au travers d'un système de transition se fait habituellement en donnant une définition inductive de l'ensemble des transitions possibles. Habituellement, cela prend la forme d'un ensemble de règles d'inférence définissant les transitions valides du système. Le système devient ainsi représentable sous la forme d'un arbre de dérivation des états du programme lors de l’exécution.

La sémantique opérationnelle est reliée à la sémantique dénotationnelle au travers du concept d'abstraction.

Principe généraux

[modifier | modifier le code]

La syntaxe d'un langage de programmation définit l'ensemble des programmes acceptés par le compilateur lors de la première phase. La sémantique quant à elle vise à donner une interprétation aux programmes construit par cette grammaire. Elle définit des règles de dérivations qui indiquent comment les instructions du langage modifient l'état de la mémoire.

État mémoire

[modifier | modifier le code]

Un état mémoire est noté . C'est une fonction partielle qui à l'ensemble des variables associe leurs valeurs respectives.

Fonction sémantique

[modifier | modifier le code]

La syntaxe définit les suites de caractères pouvant être interprétées comme des programmes valides. Ces caractères ne sont pas des nombres, mais des expressions rationnelles (ou suite de token lors de la compilation). Ces dernières doivent donc être traduites en nombre pour pouvoir être stockées dans la machine.

Exemple d'implémentation d'une sémantique opérationnelle

[modifier | modifier le code]

Langage "While"

[modifier | modifier le code]

Le langage while est l'exemple typique pour expliquer les concepts principaux d'une sémantique opérationnelle pour un langage de programmation turing-equivalent. Il implémente les instructions de base (conditionnelles et boucles), et les types principaux (booléen, variables, entiers naturels). Des versions plus avancées de ces langages existent et introduisent les sémantiques des procédures et les notions de scope dynamique et statique (language proc & bloc). Ces deux langages ont cependant une implémentation bien plus complexe.

Définition des catégories syntaxiques

[modifier | modifier le code]

On définit tout d'abord les différents ensembles de catégories syntaxiques que le langage doit être capable de représenter. Ces définitions peuvent être inductives, ou sous forme de grammaires.


Nombre : n Num = {0,...,9}+

Variable : x Var

Expression arithmétique :

a Aexp

a  ::= n | x | a a tel que { +, -, /, * }

Expression booléenne :

b Bexp

b  ::= true | false | b | b b tel que { }

Instructions :

S := x:=a | skip

| S ; S

| if b then S else fi

| while b do S od

Ou S Statement est un non terminal.

Sémantique

[modifier | modifier le code]

La définition sémantique consiste a définir un ensemble de règles de transition permettant de passer d'un état mémoire . à un état mémoire '.

Fonction sémantique

[modifier | modifier le code]

Une fonction sémantique associe un élément appartenant à une catégorie syntaxique à son équivalent mathématique.

Articles connexes

[modifier | modifier le code]
{{bottomLinkPreText}} {{bottomLinkText}}
Sémantique opérationnelle
Listen to this article

This browser is not supported by Wikiwand :(
Wikiwand requires a browser with modern capabilities in order to provide you with the best reading experience.
Please download and use one of the following browsers:

This article was just edited, click to reload
This article has been deleted on Wikipedia (Why?)

Back to homepage

Please click Add in the dialog above
Please click Allow in the top-left corner,
then click Install Now in the dialog
Please click Open in the download dialog,
then click Install
Please click the "Downloads" icon in the Safari toolbar, open the first download in the list,
then click Install
{{::$root.activation.text}}

Install Wikiwand

Install on Chrome Install on Firefox
Don't forget to rate us

Tell your friends about Wikiwand!

Gmail Facebook Twitter Link

Enjoying Wikiwand?

Tell your friends and spread the love:
Share on Gmail Share on Facebook Share on Twitter Share on Buffer

Our magic isn't perfect

You can help our automatic cover photo selection by reporting an unsuitable photo.

This photo is visually disturbing This photo is not a good choice

Thank you for helping!


Your input will affect cover photo selection, along with input from other users.

X

Get ready for Wikiwand 2.0 🎉! the new version arrives on September 1st! Don't want to wait?