Metode evoluate de programare Limbajele c şi C++


Anexă 19.1. Un memento al sintaxei limbajului C



Yüklə 1,64 Mb.
səhifə44/44
tarix07.04.2018
ölçüsü1,64 Mb.
#46828
1   ...   36   37   38   39   40   41   42   43   44

Anexă

19.1. Un memento al sintaxei limbajului C



Sintaxa limbajului C
În descrierea sintaxei limbajului vom folosi următoarele notaţii:

a) ::= cu semnificaţia "prin definiţie este";

b)  pentru a separa alternativele unei definiţii sintactice;

c) < > pentru definirea unor metavariabile;

d) [ ] pentru delimitarea elementelor opţionale;

e) .. pentru a indica elementele care se pot repeta.


Exemplu: Pentru a defini un "întreg_zecimal" ca o succesiune de cifre semnificative vom scrie:

<Întreg_zecimal> ::= [] ..
A. Atomi lexicali
<Cuvinte_cheie> ::= autobreakcasecharconstcontinuedefaultdodouble| elseenum

externfloatforgotoifint|longregister | returnshortsignedsizeof

static | struct switchtypedefunionunsignedvoidvolatilewhile
<Nume> ::= <Literă>[<Literă><Cifră>] ..
<Literă> ::= 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UVWXYZ_


<Cifră> ::= 0123456789
<Constantă> ::= <Constantă_întreagă><Constantă_reală>

<Constantă_enumerare><Constantă_caracter>
<Constantă_întreagă> ::= <Număr_întreg>[<Sufix_întreg>
ăr_întreg> ::= <Întreg_zecimal><Întreg_hexazecimal><Întreg_octal>
<Întreg_zecimal> ::= <Cifră_nenulă>[<Cifră>] ..
<Cifră_nenulă> ::= 123456789
<Întreg_hexazecimal> ::= 0x<Cifră_hexa> ..
<Cifră_hexa> ::= <Cifră>abcdefABCDEF
<Întreg_octal> ::= 0[<Cifră_octală>] ..
<Cifră_octală> ::= 01234567
<Sufix_întreg> ::= <Sufix_unsigned>[<Sufix_long>]<Sufix_long>[<Sufix_unsigned>]
<Sufix_unsigned> ::= Uu
<Sufix_long> ::= Ll
<Constantă_reală> ::= <Constantă_fract>[<Exponent>][<Sufix_real>]

<Cifră> .. <Exponent>[<Sufix_real>]
<Constantă_fract> ::= [<Cifră>] .. . <Cifră>..<Cifră>.. .
<Exponent> ::= Ee[+-]<Cifră> ..
<Sufix_real> ::= FfLl
<Constantă_enumerare> ::= <Nume>
<Constantă_caracter> ::= '<Caracter_C> ..'L'<Caracter_C>'
<Caracter_C> ::= <Orice_caracter_tipăribil_cu excepţia: ' i \>

ţă_escape>
<Secvenţă_escape> ::= \"\'\?\\\a\b\f\n\r\t\v

\<Cifră_octală>[<Cifră_octală>[<Cifră_octală>]]

\x<Cifră_hexa> ..
ir_de_caractere> ::= "[<Caracter_S> ..]"
<Caracter_S> ::= <Orice_caracter_tipăribil_cu excepţia: ' şi \><Secvenţa_escape>
<Operatori_şi_semne_de_punctuaţie >::= +-*/%^&~!=->+=-=*=

/=%=^=&=!=<<>><<=>>== =<=



>=<>&&!!++--,()[]{};?:...

B. Declaraţii
<Unitate_de_compilare> ::= <O_declaraţie> ..
<O_declaraţie> ::= <Def_funcţie><Declaraţie>;
<Declaraţie> ::= [<Specificatori>][<Listă_declaratori>]
<Specificatori> ::= <Specificator> ..
<Specificator> ::= <Clasă_memorare><Tip>typedef
<Clasă_memorare> ::= autoregisterstaticextern
<Tip> ::= <Tip_simplu><Nume_typedef><Calificator>

<Descriere_tip_enumerare><Descriere_tip_neomogen>
<Tip_simplu> ::= charshortintlongsignedunsignedfloatdouble void
<Nume_typedef> ::= <Nume>
<Descriere_tip_enumerare> ::= enum<Nume>enum[<Nume>]{<Lista_enum>}
<Lista_enum> ::= <Enumerator>[,<Enumerator>] ..
<Enumerator> ::= <Nume>[=<Expr_constant_>{]
<Descriere_tip_neomogen> ::= <Tip_neomogen><Nume>

<Tip_neomogen>[<Nume>]{<List__câmpuri>}
<Tip_neomogen> ::= structunion
<Listă_câmpuri> ::= <Decl_câmpuri>;[<Decl_câmpuri>;] ..
<Decl_câmpuri> ::= [<Specificatori>][<Câmp>[,<Câmp>] ..]
<Câmp> ::= <Declarator>[<Nume>]:<Expr_constantă>
<Listă_declaratori> ::= <Decl_init>[,<Decl_init>] ..
<Decl_init> ::= <Declarator>[<Iniializare>]
<Declarator> ::= [<Indirect>..]<Denumire>[<Decl_F_T>]
<Indirect> ::= *[<Calificator> ..]
<Denumire> ::= <Nume>(<Declarator>)
<Decl_F_T> ::= ([<L_declar_par>])<Decl_tablou> ..
<Decl_tablou> ::= [][<Expr_constantă>]
<L_declar_par> ::= <Decl_par>[,<Decl_par>] .. [, ..]
<Decl_par> ::= <Tip>..<Declarator><Decl_tip>
<Decl_tip> ::= <Tip>..[<Indirect>..][(<Decl_tip>)][<Decl_F_T>]
<Iniţializare> ::= =<Expr> ={<Listă_init>[,]}
<Listă_init>::=<Expr>[,<Listă_init> ..{<Listă_init>}[,<Listă_init>] ..
<Def_funcţie> ::= [<Specif_funcţie> ..]<Declarator>[<Declaraţie>;] ..<Bloc>
<Specif_funcţie> ::= externstatic<Tip>

C. Expresii
<Expr> ::= <Expresie>[,<Expresie>] ..
<Expresie> ::= <Expr_condiţională>|<Expr_unară><Oper_atribuire><Expresie>
<Oper_atribuire> ::= +*=/=%=+=-=<<=>>=&=^=!=
<Expr_condiţională> ::= <Expr_SAU_logic>

<Expr_SAU_logic> ? <Expr> : <Expr_condiţională>
<Expr_SAU_logic> ::= <Expr_ŞI_logic><Expr_SAU_logic> !! <Expr_ŞI_logic>
<Expr_ŞI_logic> ::= <Expr_SAU><Expr_ŞI_logic> && <Expr_SAU>
<Expr_SAU> ::= <Expr_SAU_exclusiv><Expr_SAU><Expr_SAU_exclusiv>

<Expr_SAU_exclusiv> ::= <Expr_ŞI><Expr_SAU_exclusiv> ^ <Expr_ŞI>
<Expr_ŞI> ::= <Expr_egalitate><Expr_ŞI> & <Expr_egalitate>
> ::= <Expr_relaională><Expr_egalitate>==Expr_relaţională>

<Expr_egalitate> != <Expr_relaţională>
<Expr_relaţională> ::= <Expr_deplasare> <Expr_relaţională> < <Expr_deplasare>

<Expr_relaţională> > <Expr_deplasare>

<Expr_relaţională> <= <Expr_deplasare>

<Expr_relaţională> >= <Expr_deplasare>
<Expr_deplasare> ::= <Expr_aditivă> <Expr_deplasare> << <Expr_aditivă>

<Expr_deplasare> >> <Expr_aditivă>
<Expr_aditivă> ::= <Expr_multiplicativă><Expr_aditivă> + <Expr_multiplicativă>

<Expr_aditivă> - <Expr_multiplicativă>


<Expr_multiplicativă>::= <Expr_multiplicativă> * <Expr_prefixată>

<Expr_multiplicativă> / <Expr_prefixată>

<Expr_multiplicativă> % <Expr_prefixată>
<Expr_prefixată> ::= <Expr_unară>(<Decl_tip>)<Expr_prefixată>


<Expr_unară> ::= <Expr_postfixată><Op_unar><Expr_prefixată>

++<Expr_unară> --<Expr_unară>sizeof<Expr_unară>

sizeof(<Decl_tip>)
<Op_unar> ::= &*+-~!
<Expr_postfixată> ::= <Termen><Expr_postfixată>[<Expr>]

<Expr_postfixată>(<Listă_Expresii>) <Expr_postfixată> . <Nume>

<Expr_postfixată> -> <Nume><Expr_postfixată> ++ <Expr_postfixată>--
<Termen> ::= <Nume><Constantă><Şir_de_caractere>(<Expr>)

<Listă_Expresii> ::= [<Expr>] ..
<Expr_constantă> ::= <Expr_condiţională>

D. Instrucţiuni
<Instr>::= <Instr_etichetată><Instr_compusă> <Instr_expresie>Instr_de_selecţie>

<Instr_de_ciclare><Instr_de_salt>
<Instr_etichetată> ::= <Nume>:<Instr>case <Expr_constantă { :<Instr>

default : <Instr>


<Instr_compusă> ::= <Bloc>
<Bloc> ::= {[<Declaraţie>;] .. [<Instr>] ..}
<Instr_expresie> ::= [<Expr>];

<Instr_de_selecţie> ::= if (<Expr>) <Instr>if (<Expr>) <Instr> else <Instr>

switch (<Expr>) <Instr>


<Instr_de_ciclare> ::= while (<Expr>)<Instr>;

do <Instr> while (<Expr>);

for ( [<Expr>];[<Expr>];[<Expr>] ) [<Instr>];
<Instr_de_salt> ::= goto <Nume>;continue;break;return [<Expr>];


19.2. Lista programelor C++

Prezentăm lista programelor împreună cu numărul secţiunii în care se află programul respectiv.


Nr. crt.

Nume fişier

Secţiune Nr. crt.

Nume fişier


  1. Secţiune caracter.cpp15.1.increm1.cpp16.7.3.conv1.cpp15.1.increm2.cpp16.7.3.rezol.cpp15.2.1.conv2.cpp16.8.2.refer1.cpp15.2.2.lung1.cpp16.8.2.refer2.cpp15.2.2.conv3.cpp16.8.3.valoare1.cpp15.2.3.lung2.cpp16.8.3.valoare2.cpp15.2.3.virtual1.cpp17.1.refer3.cpp15.2.3.fractie2.cpp17.3.union1.cpp15.3.animal1.cpp17.4.init1.cpp15.4.1.animal2.cpp17.4.init2.cpp15.4.1.virtual2.cpp17.4.refer4.cpp15.4.2.abstract.cpp17.5.sup_fun1.cpp15.4.3.stream1.cpp18.2.1.sup_fun2.cpp15.4.3.stream2.cpp18.2.1.macro1.cpp15.4.4.stream3.cpp18.2.1.inline1.cpp15.4.4.stream4.cpp18.2.2.vector1.cpp16.1.stream5.cpp18.2.3.vector2.cpp16.1.stream6.cpp18.2.3.vector3.cpp16.4.stream7.cpp18.2.4.vector4.cpp16.4.stream8.cpp18.2.4.pereche1.cpp16.5.1.fractie2.cpp18.2.5.pereche2.cpp16.5.1.fractie3.cpp18.2.5.pereche3.cpp16.5.2stream9.cpp18.3.1.destruct.cpp16.6.stream10.cpp18.3.1.fractie1.cpp16.7.2.stream11.cpp18.3.1.vector5.cpp16.7.2.stream12.cpp18.3.1.vector6.cpp16.7.2.stare1.cpp18.3.2.vector7.cpp16.7.2.stare2.cpp18.3.2.vector8.cpp16.7.2.20. Bibliografie:

[1] ***: Borland C++. Getting Started. Borland International, 1991.

[2] ***: Borland C++. User's Guide. Borland International, 1991.

[3] ***: Borland C++. Programmer's Guide. Borland International, 1991.

[4] ***: Borland C++. Library Reference. Borland International, 1991.

[5] Benkő T., Moré G.: Object Windows, ComputerBooks, Budapest, 1993.

[6] Benkő T., Poppe A., Benkő L.: Bevezetés a Borland C++ programozásba, ComputerBooks, Budapest, 1991.

[7] Decker R., Hirschfield S.: The Object Concept. An Introduction to Computer Programming Using the C++, PWS Publishing Company, 1995.

[8] Horowitz E., Sahni S., Mehta D.: Fundamentals od Data Structures in C++, Computer Science Press, New York, 1995.

[9] Horstmann C.S.: Practical Object-Oriented Development in C++ and Java, John Wiley and Sons, 1997.

[10] Brian W.Kerninghan, Dennis M. Ritchie, The C Programming Language, INC. Englewood Cliffs, New Jersey, 1978.

[11] G. Moldovan, M. Lupea, V.Cioban, Probleme pentru programare în limbajul C,

Litografia Universităţii Babeş-Bolyai, Cluj-Napoca, 1995.

[12] Negrescu L.: Limbajele C şi C++ pentru începători. Limbajul C++, Editura Microinformatica, 1994.



[13] Stroustrup B.: The C++ Programming Language, Second Edition, AT&T Bell Telephone Laboratories, 1991.


Yüklə 1,64 Mb.

Dostları ilə paylaş:
1   ...   36   37   38   39   40   41   42   43   44




Verilənlər bazası müəlliflik hüququ ilə müdafiə olunur ©muhaz.org 2024
rəhbərliyinə müraciət

gir | qeydiyyatdan keç
    Ana səhifə


yükləyin