2010-11-14 5 views
1

Quelqu'un peut-il m'aider s'il vous plaît à comprendre exactement ce que cela signifie?Langue Définition Question

<stmt> := var <ident> = <expr> 
    | <ident> = <expr> 
    | for <ident> = <expr> to <expr> do <stmt> end 
    | read_int <ident> 
    | print <expr> 
    | <stmt> ; <stmt> 

<expr> := <string> 
    | <int> 
    | <arith_expr> 
    | <ident> 

<bin_expr> := <expr> <bin_op> <expr> 
<bin_op> := + | - | * |/

<ident> := <char> <ident_rest>* 
<ident_rest> := <char> | <digit> 

<int> := <digit>+ 
<digit> := 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 

<string> := " <string_elem>* " 
<string_elem> := <any char other than "> 

Dans la première partie, je suppose <ident> signifie "Identifier" et <expr> signifie "expression" et <arith_expr> signifie "Expression Arithmatic". Mais le reste est un peu confus pour moi.

Merci

Répondre

2
<stmt> := var <ident> = <expr> 
    | <ident> = <expr> 
    | for <ident> = <expr> to <expr> do <stmt> end 
    | read_int <ident> 
    | print <expr> 
    | <stmt> ; <stmt> 

Traduction: Une déclaration peut être

  • une déclaration variable (avec une expression)
  • une affectation variable (avec une expression)
  • une boucle for() (avec deux expressions et une déclaration)
  • read_int (avec un identificateur)
  • impression (avec une expression)
  • deux états séparés par un point-virgule

<expr> := <string> 
    | <int> 
    | <arith_expr> 
    | <ident> 

Traduction: Une expression peut être soit

  • un littéral chaîne
  • et entier
  • une expression arithmétique
  • un identifiant

<bin_expr> := <expr> <bin_op> <expr> 
<bin_op> := + | - | * |/

Une expression binaire est constituée de deux expressions et un opérateur binaire entre les deux. Les opérateurs binaires sont:

+ - */

<ident> := <char> <ident_rest>* 
<ident_rest> := <char> | <digit> 

Un identifiant commence toujours par un caractère, mais le reste de l'identifiant peut être constitué de caractères et chiffres


<int> := <digit>+ 
<digit> := 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 

définition d'un chiffre


<string> := " <string_elem>* " 
<string_elem> := <any char other than "> 

définition d'une chaîne littérale

2
<stmt>  = Statement 
<expr>  = Expression 
<bin_expr> = Binary expression (Expression involving <bin_op>) 
<bin_op>  = Binary operator 
<ident>  = Identifier 
<ident_rest> = Rest of identifier 
<int>   = Integer 
<digit>  = Digit 
<string>  = String 
<string_elem> = String element 
+0

merci :) Kenny –

4

devriez peut-être rafraîchir vos compétences Backus Naur Form -Reading.

+0

Merci pour l'espace de lien –

Questions connexes