Section courante

A propos

Section administrative du site

 Langage  Elément  Tutoriel  Programmation  Projet  Système d'exploitation  Aide 
ABAP/4
Ada
Assembleur
Assembly & bytecode
ASP (Active Server Pages)
Basic
C
C++
C# (C Sharp)
Cobol
ColdFusion
Fortran
HTML
Java
JavaScript
LISP
Logo
LotusScript
Oberon
Pascal
Perl
PHP
PL/1
Prolog
Python
Rebol
REXX
Ruby
Rust
SAS
NoSQL
SQL
Swift
X++ (Axapta)
GNAT
SMALLAda
VHDL
Assembleur 370
Assembleur 1802
Assembleur 4004
Assembleur 6502
Assembleur 6800
Assembleur 68000
Assembleur 8080 et 8085
Assembleur 8089
Assembleur 80x86
Assembleur AGC4
Assembleur ARM
Assembleur DPS 8000
Assembleur i860
Assembleur Itanium
Assembleur MIPS
Assembleur PDP-11
Assembleur PowerPC
Assembleur RISC-V
Assembleur SPARC
Assembleur SuperH
Assembleur UNIVAC I
Assembleur VAX
Assembleur Z80
Assembleur Z8000
Assembleur z/Architecture
ASSEMBLER/MONITOR 64
Micol Assembler
GFA Assembler
A86
MASM (Macro Assembler)
TASM (Turbo Assembler)
CIL
Jasmin
LLVM
MSIL
Parrot
P-Code (PCode)
SWEET16
G-Pascal
ASP 1.0
ASP 2.0
ASP 3.0
ASP.NET
ASP.NET Core
ABasiC (Amiga)
Adam SmartBASIC
Altair BASIC
AmigaBASIC (Amiga)
AMOS Basic (Amiga)
Atari Basic (Atari 400, 600 XL, 800, 800XL)
Basic Apple II (Integer BASIC/APPLESOFT)
Basic Commodore 64 (CBM-BASIC)
Basic Commodore 128 (BASIC 7.0)
Basic Commodore VIC-20 (CBM-BASIC 2.0)
Basic Coco 1 (Color Basic)
Basic Coco 2 (Extended Color Basic)
Basic Coco 3 (Extended Color Basic 2.0)
BASICA (PC DOS)
Basic Pro
BBC BASIC
Blitz BASIC (Amiga)
DarkBASIC
Dartmouth BASIC
GFA-Basic (Atari ST/Amiga)
GWBASIC (MS-DOS)
Liberty BASIC
Locomotive BASIC (Amstrad CPC)
MSX-Basic
Omikron Basic (Atari ST)
Oric Extended Basic
Power Basic
Quick Basic/QBasic (MS-DOS)
Sinclair BASIC (ZX80, ZX81, ZX Spectrum)
ST BASIC (Atari ST)
Turbo Basic
Vintage BASIC
VBScript
Visual Basic (VB)
Visual Basic .NET (VB .NET)
Visual Basic pour DOS
Yabasic
BeckerBASIC
SIMONS' BASIC
Basic09 d'OS-9
Disk Extended Color Basic
Basic09 d'OS-9
Disk Extended Color Basic
Access
Excel
Visual Basic pour Windows
Visual Basic .NET pour Windows
C Shell Unix (csh)
C pour Amiga
C pour Atari ST
C pour DOS
C pour Falcon030
C pour GEMDOS (Atari ST)
C pour Linux
C pour PowerTV OS
C pour OS/2
C pour Unix
C pour Windows
Aztec C
CoCo-C
GNU C
HiSoft C
IBM C/2
Introl-C
Lattice C
Microsoft C
MinGW C
MSX-C
Open Watcom C
OS-9 C Compiler
Pure C
Quick C
Turbo C
HiSoft C for Atari ST
HiSoft C for CP/M (Amstrad CPC)
C++ pour OS/2
C++ pour Windows
Borland C++
C++Builder
IBM VisualAge C++
Intel C++
MinGW C++
Open Watcom C++
Symantec C++
Turbo C++
Visual C++
Visual C++ .NET
Watcom C++
Zortech C++
C# (C Sharp) pour Windows
Apple III Cobol
Microsoft Cobol
BlueDragon
Lucee
OpenBD
Railo
Smith Project
Microsoft Fortran
WATFOR-77
CSS
FBML
Open Graph
SVG
XML
XSL/XSLT
LESS
SASS
GCJ (GNU)
JSP
Jython
Visual J++
Node.js
TypeScript
AutoLISP
ACSLogo
LotusScript pour Windows
Amiga Oberon
Oberon .NET
Apple Pascal
Delphi/Kylix/Lazarus
Free Pascal
GNU Pascal
HighSpeed Pascal
IBM Personal Computer Pascal
Lisa Pascal
Maxon Pascal
MPW Pascal
OS-9 Pascal
OSS Personal Pascal
Pascal-86
Pascal du Cray Research
Pascal/VS
Pascal-XT
PURE Pascal
QuickPascal
RemObjets Chrome
Sun Pascal
THINK Pascal
Tiny Pascal (TRS-80)
Turbo Pascal
UCSD Pascal
VAX Pascal
Virtual Pascal
Turbo Pascal for CP/M-80
Turbo Pascal for DOS
Turbo Pascal for Macintosh
Turbo Pascal for Windows
CodeIgniter (Cadre d'application)
Drupal (Projet)
Joomla! (Projet)
Phalanger (PHP .NET)
phpBB (Projet)
Smarty (balise)
Twig (balise)
Symfony (Cadre d'application)
WordPress (Projet)
Zend (Cadre d'application)
PL360
PL/M-80
PL/M-86
Turbo Prolog
CPython
IronPython
Jython
PyPy
AREXX
Regina REXX
JMP
Btrieve
Cassandra
Clipper
CouchDB
dBASE
Hbase
Hypertable
MongoDB
Redis
Access
BigQuery
DB2
H2
Interbase
MySQL
Oracle
PostgreSQL
SAP HANA
SQL Server
Sybase
U-SQL
Introduction
Les remarques
Les opérateurs
Les instructions conditionnelles
Les instructions de boucles
Définition de fonction
Référence des mots réservés
Référence de procédures et de fonctions
Référence des modules standard
Les premiers pas
Une notation pour décrire la syntaxe de Modula-2
La représentation des programmes Modula-2
Instructions et expressions
Bonjour
Biochimie
Finance
Géographie
Histoire
Mathématique
Météorologie
Sport
Temps
Calcul du calcium corrigé
IPaymt/Interet
NPer
PPaymt/Principal
Distance en Km entre deux longitudes et latitudes
Chiffre romain
Nombre premier
Sqrt
Unité de mesure
Hockey
Année bissextile
Date de la Pâque
Q&D Tools for DOS
Medos-2
Préface
Notes légal
Dictionnaire
Recherche

La représentation des programmes Modula-2

La page Une notation pour décrire la syntaxe de Modula-2 a introduit un formalisme par lequel seront définies ultérieurement les structures des programmes bien formés. Il définit cependant simplement la manière dont les programmes sont composés en tant que séquences de symboles, contrairement aux symboles (et donc aux programmes) en termes de caractères étant considérés comme trop appropriés pour une définition de langage. La création d'un niveau intermédiaire de représentation par des séquences de symboles fournit un découplage utile entre les ensembles de langages. En conséquence, on doit postuler un ensemble de règles régissant la représentation des symboles en tant que séquences de caractères. Les symboles du vocabulaire Modula-2 sont divisés par les classes suivantes :

Les règles régissant leur représentation en termes d'ensemble de caractères standard ISO sont les suivantes :

1. Les identificateurs (identifiers) sont des séquences de lettres (letter) et de chiffres (digit). Le premier caractère doit être une lettre, les majuscules et les minuscules sont considérées comme distinctes.

identifier = letter {letter|digit}

Voici des exemples d'identificateurs bien formés :

Annie comme sauter BlueBird SM74

Voici des exemples de mots n'étant pas des identificateurs :

Identificateur invalide Raison
sound proof Les espaces vides ne sont pas autorisés
sound-proof Ni l'un ni l'autre n'est un trait d'union
2N Le premier caractère doit être une lettre
Miller's Aucune apostrophe autorisée

Il arrive qu'un identificateur doive être qualifié par un autre identificateur ; on exprime cela en préfixant i par j et un point (j,i) : l'identificateur combiné est appelé identificateur qualifié (abréviation de qualident). Sa syntaxe est :

qualident = {identifier "."} identifier.

2. Les nombres (Numbers) sont soit des entiers, soit des nombres réels. Les premiers sont représentés par des séquences de chiffres. Les nombres ne doivent pas contenir d'espaces. Les nombres réels contiennent un point décimal et une partie fractionnaire. De plus, un facteur d'échelle peut être ajouté. Il est spécifié par la lettre E et un entier étant éventuellement précédé d'un signe. Le E se prononce comme "fois 10 à la puissance de".

Exemples de nombres bien formés :

1974 1 3.25 5.1E3 4.0E-10

Voici des exemples de séquences de caractères n'étant pas reconnues comme des nombres :

Nombre invalide Raison
1,5 Aucune virgule ne peut apparaître
1'000'000 Les apostrophes ne peuvent pas non plus être spécifié.
3.5En Aucune lettre n'est autorisée (sauf le E).

Les règles exactes de formation des nombres sont données par la syntaxe suivante :

number = integer | real.
integer = digit (digit).
real = digit {digit} "." {digit} {ScaleFactor}.
ScaleFactor = "E" ["+"|"-"] digit {digit}.

3. Les chaînes de caractères (string) sont des séquences de caractères quelconques entre guillemets. Pour que la guillemet de fermeture soit reconnue sans ambiguïté, la chaîne de caractères elle-même ne peut évidemment pas contenir de guillemets. Pour autoriser les chaînes de caractères entre guillemets, une chaîne de caractères peut être entourée d'apostrophes au lieu de guillemets. Dans ce cas, cependant, la chaîne de caractères ne doit pas contenir d'apostrophes.

string = '"' {character} '"' | '"' {character} '"'.

Voici des exemples de chaînes de caractères :

"pas de commentaire" "Le coin du canard" 'Il a dit "ne vous inquiétez pas" et a tiré un coup de feu'

4. Les opérateurs et les délimiteurs (Operators and delimiters) sont soit des caractères, soit des mots réservés. Ces lettres sont écrites en majuscules et ne doivent pas être utilisées comme identifiants. Il est donc avantageux de mémoriser cette courte liste de mots. Les opérateurs et délimiteurs composés de caractères spéciaux sont :

Opérateur Description
+ addition, union d'ensemble
- soustraction, différence d'ensemble
* multiplication, intersection d'ensembles
/ division, différence d'ensemble symétrique
:= affectation
& ET logique
- NON logique
= égale
# < > inégale
< moins que
> plus grand que
<= inférieur ou égal
>= supérieur ou égal
( ) parenthèses
[ ] parenthèses d'index
( ) mettre des accolades
(* *) crochets de commentaires
opérateur de déréférencement
, . ; : .. | symboles de ponctuation

Les mots réservés sont énumérés dans la liste suivante ; leur signification sera expliquée tout au long des pages suivantes :

Il est d'usage de séparer les symboles consécutifs par un espace, c'est-à-dire un ou plusieurs espaces. Cependant, cela n'est obligatoire que dans les cas où l'absence d'un tel espace fusionnerait les deux symboles en un seul. Par exemple, dans "IF x = y THEN", les espaces sont nécessaires devant x et après y, mais peuvent être omis autour du signe égal.

5. Des commentaires (comments) peuvent être insérés entre deux symboles quelconques. Il s'agit de séquences arbitraires de caractères placées entre crochets de commentaires (* et *). Les commentaires sont ignorés par les compilateurs et servent d'informations supplémentaires au lecteur humain. Ils peuvent également servir à signaler des instructions (options) au compilateur.



PARTAGER CETTE PAGE SUR
Dernière mise à jour : Dimanche, le 1er septembre 2024