La description de la syntaxe abstraite d’un langage, se fait en d´efinissant :
1. Un ensemble de cat´egories syntaxiques : dans un programme, on
identifie typiquement des cat´egories comme declaration, type, instruction,
expression, etc.
2. Pour chaque cat´egorie, un ensemble de constructeurs permettant de
construire des objets de cette cat´egorie. Par exemple, dans la cat´egorie
instruction, on aura un constructeur For corespondant aux boucles
for, un constructeur While correspondant aux boucles while etc. Ces
constructeurs ont en g´en´eral des arguments. Par exemple, pour d´efinir
une boucle while, on a besoin d’un test, qui est une expression, et d’un
corps de boucle, qui est une instruction. Le constructeur While aura
donc deux arguments, une expression et une instruction.
Les constructeurs sont aussi utilis´es pour rendre compte de certaines formes
d’inclusions entre cat´egories et dans ce cas, ils peuvent ne pas avoir de
contrepartie au niveau de la syntaxe concrˆete.
Par exemple, en c, une constante est une expression et une expression suivie
d’un point-virgule est une instruction. Dans la syntaxe abstraite, un
constructeur permettra de transformer une constante en expression et un
autre constructeur permettra de transformer une expression en instruction.
Le second correspondra au point-virgule de la syntaxe concrˆete alors que le
premier n’aura pas de contrepartie dans la syntaxe concrˆete.
Voici comment on peut d´ecrire la syntaxe abstraite d’un sous-ensemble de
c :
CATEGORIES :
declaration, type, instruction, expression, ident, binop, constante
CONSTRUCTEURS :
declaration
VarDecl(type,ident)
FunDEcl(type,ident,declaration list,instruction)
type
IntType
FloatType
ArrayType(type)
PtrType(type)
instruction
Block(declaration list,instruction list)
Comput(expression)
While(expression,instruction)
For(expression,expression,expression,instruction)
If(expression,instruction)
Return(expression)
expression
ConstExp(constante)
VarExp(ident)
BinopExp(expression,binop,expression)
IndexExp(expression,expression)
RefExp(expression)
FunCallExp(expressionlist)
binop
Assign
Add
Mult
Less
constante
Int(int)
Float(float)
Les constructeurs permettent de repr´esenter la syntaxe abstraite d’un programme
sous la forme d’un terme. Par exemple, le programme
int fact(int n)
{
int i, m;
m=1;
for (i=2;i<n+1;i=i+1) m=m*i;
source : Université Denis Diderot
1. Un ensemble de cat´egories syntaxiques : dans un programme, on
identifie typiquement des cat´egories comme declaration, type, instruction,
expression, etc.
2. Pour chaque cat´egorie, un ensemble de constructeurs permettant de
construire des objets de cette cat´egorie. Par exemple, dans la cat´egorie
instruction, on aura un constructeur For corespondant aux boucles
for, un constructeur While correspondant aux boucles while etc. Ces
constructeurs ont en g´en´eral des arguments. Par exemple, pour d´efinir
une boucle while, on a besoin d’un test, qui est une expression, et d’un
corps de boucle, qui est une instruction. Le constructeur While aura
donc deux arguments, une expression et une instruction.
Les constructeurs sont aussi utilis´es pour rendre compte de certaines formes
d’inclusions entre cat´egories et dans ce cas, ils peuvent ne pas avoir de
contrepartie au niveau de la syntaxe concrˆete.
Par exemple, en c, une constante est une expression et une expression suivie
d’un point-virgule est une instruction. Dans la syntaxe abstraite, un
constructeur permettra de transformer une constante en expression et un
autre constructeur permettra de transformer une expression en instruction.
Le second correspondra au point-virgule de la syntaxe concrˆete alors que le
premier n’aura pas de contrepartie dans la syntaxe concrˆete.
Voici comment on peut d´ecrire la syntaxe abstraite d’un sous-ensemble de
c :
CATEGORIES :
declaration, type, instruction, expression, ident, binop, constante
CONSTRUCTEURS :
declaration
VarDecl(type,ident)
FunDEcl(type,ident,declaration list,instruction)
type
IntType
FloatType
ArrayType(type)
PtrType(type)
instruction
Block(declaration list,instruction list)
Comput(expression)
While(expression,instruction)
For(expression,expression,expression,instruction)
If(expression,instruction)
Return(expression)
expression
ConstExp(constante)
VarExp(ident)
BinopExp(expression,binop,expression)
IndexExp(expression,expression)
RefExp(expression)
FunCallExp(expressionlist)
binop
Assign
Add
Mult
Less
constante
Int(int)
Float(float)
Les constructeurs permettent de repr´esenter la syntaxe abstraite d’un programme
sous la forme d’un terme. Par exemple, le programme
int fact(int n)
{
int i, m;
m=1;
for (i=2;i<n+1;i=i+1) m=m*i;
source : Université Denis Diderot
ليست هناك تعليقات:
إرسال تعليق