Vous êtes sur la page 1sur 3

Syntax de Pascal

In Backus-Naur Form (BNF)


https://condor.depaul.edu/ichu/csc447/notes/wk2/pascal.html

<program> ::= program <identifier> ; <block> .

<block> ::= <variable declaration part> <statement part>

<variable declaration part> ::= var <variable declaration> { ; <variable declaration>} ;

<variable declaration> ::= <identifier> { , <identifier>} : <type>

<type> ::= string | integer | real | boolean

<statement part> ::= begin <statement> { ; <statement> } end;

<statement> ::= <simple statement> | <structured statement>

<simple statement> ::= <assignment statement> | <read statement> | <write statement>

<assignment statement> ::= <variable> := <expression>

<variable> ::= <entire variable>

<entire variable> ::= <variable identifier>

<variable identifier> ::= <identifier>

<read statement> ::= read (<variable> { , <variable} )

<write statement> ::= write (<variable> { , <variable} )

<structured statement> ::= <conditional statement> | <repetitive statement>

<conditional statement> ::= <if statement>

<if statement> ::= if <expression> then <statement> | if <expression> then <statement> else <statement>

<repetitive statement> ::= <while statement>

<while statement> ::= while <expression> do <statement>

<expression> ::= <simple expression> | <simple expression> <relational operator> <simple expression>

<relational operator> ::= < | <= | >= | > | == | <>

<simple expression> ::= <term> | <sign> <term> | <simple expression> <adding operator> <term>

<adding operator> ::= + | - | or

<term> ::= <factor> | <term> <multiplying operator> <factor>

<multiplying operator> ::= * | / | and

<factor> ::= <variable> | <unsigned constant> | ( <expression> ) | not <factor>

<unsigned constant> ::= <unsigned number> | <string> | < constant identifier>

<unsigned number> ::= <unsigned integer> | <unsigned real>

<unsigned integer> ::= <digit> {<digit>}


<sign> ::= + | -
<constant identifier> ::= <identifier>

<string> ::= '<character> {<character>}'

<identifier> ::= <letter > {<letter or digit>}

<letter or digit> ::= <letter> | <digit>

<letter> ::= a | b | c | d | e | f | g | h | i | j | k | l | m | n | o | p | q | r | s | t | u | v | w | x | y | z |
A|B|C|D|E|F|G|H|I|J|K|L|M|N|O|P|Q|R|S|T|W|V|W|X|Y|Z

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

<special symbol> ::= ( | ) | . | , | ; | ' | ''


< comentarios> ::= /* { < ASCII > } */

EJEMPLO: construir un programa siguiendo la sintaxis de Pascal

program ejemplo1;

var

a, x, y : integer;
b : integer;
c : real;
d : string;

begin

read (a, b);


c := a * b;

/* este es un comentario */

if c >= 20 then
if c >= 20 then
write (c)
else
write (b);

else
while c < a do
write (a)

end .
Tarea: Construir las expresiones regulares de lo que se indica a continuación:

Cómo se forma un identificador?


Cómo se forma un numero entero?
Cómo se forma un numero real?
Cómo se forma una cadena o string?
Cuáles son los operadores aritméticos?
Cuáles son los operadores relaciones?
Cuáles son los operadores lógios?.
Cuál es el operador de asignación?
Cómo se forma un comentario?
Cuáles son las palabras reservadas?
Cuáles son los símbolos especiales?

Tarea: Construir los diagramas de bloques correspondientes, basado en el que se encuentra en:
https://condor.depaul.edu/ichu/csc447/notes/wk2/pascal.html

Vous aimerez peut-être aussi