Principiul de funcționare al compilatoare
Luați în considerare limbajul academic operatorului.
· Pentru a introduce operatorul inițial de introducere a datelor. READ (a1, a2 ai.);
Operatorul pune în aplicare citesc valorile datelor originale I, sărind peste valorile rămase la începutul liniei următoare, citire atribuirea de valori variabile a1, a2, ... ai.
· Folosit pentru declarația de ieșire: write (a1, a2, ... ai);
Operatorul vinde variabilele de ieșire.
· Declarație condiționată, în cazul: Dacă <условие> apoi <оператор1> altfel <оператор2>- mediu operatorului proiectat pentru operatori, în funcție de condițiile de adevăr. dacă <условие> - „Adevărat“, atunci <оператор1>, în caz contrar îndeplinite <оператор2>, care apare după Else (Else și <оператор2> poate fi omisă, în cazul în care o valoare a cărei <условие> - „False“, programul va continua execuția, ocolind <оператор1>). <Условие> poate consta dintr-o secvență de condiții simple legate de operațiile logice AND (ȘI logic) și OR (SAU logic).
Dacă a> 0 Apoi, b = 3
Dacă valoarea unei variabile este mai mare decât 0, atunci b este setat la 3.
· Ciclul operator cu o condiție prealabilă. în timp ce <условие> face <оператор>. <Оператор> Acesta va fi executat atât timp cât <условие> adevărat. La fel ca și în exemplul anterior, <условие> Acesta poate consta dintr-o secvență de condiții simple de operatori AND și OR asociate.
În timp ce un<100 do a = a+1
Operațiunea a = a + 1 trebuie să fie executat până variabila o va fi mai mică de 100.
· Ciclul cu postconditie. repeta <оператор> până <условие>. <Оператор> Acesta va fi executat ca, până atunci, <условие> Nu va accepta o valoare de „true“.
Repetă a = a + 1 Până la un> 100
Afirmația este a = a + 1 final, când valoarea unei variabile este mai mare de 100.
· Buclă cu parametrul. pentru <переменная> : = <выражение1> la <выражение2> face <оператор> - Ciclul de lucru cu un parametru. <Оператор> au efectuat un număr predeterminat de iterații. <Переменная> - un contor, a cărui valoare inițială este dată de <выражением1>, <выражение2> stabilește valoarea țintă a contorului.
Pentru i = 1 până la 5 CITI (I);
După rularea acest exemplu a ajunge aici următorul rezultat:
5, adică. afișează toate numerele 1 - 5.
· Compusul declarație. Începe final - declarație compus. În exemplele de mai sus, în loc de <оператор> Acesta poate fi doar un singur operator, dar, de asemenea, un grup de declarații incluse în acoladă. Rolul operatorului în limba paranteze efectua două cuvinte-cheie - începe și se termină.
2. gramatică
În cadrul acestei proceduri, au fost utilizate următoarele variabile: contoare x, y, i, j, x1, y1 și o variabilă de tip șir Name pentru numele procedurii de transfer.
DoProcedure efectuează următoarele acțiuni indicate în figura 2.
Figura 2. Blocurile de bază procedurile DoProcedure
Primul bloc se realizează închiderea și deschiderea fișierului fișierul Out.asm Temp.tmp - se face pentru ceea ce ar fi mai târziu Temp.tmp a fișierului pentru a copia procedurile Out.asm fișier text.
In al doilea bloc se realizează fixarea numele procedurii și parametrii săi sunt stocate într-o matrice de pere.
În a treia generație procedura de bloc în corpul de generare directă limbaj de asamblare este realizată în următorul cod de reguli.
În al patrulea bloc se închide și se deschide fișierul Temp.tmp Out.asm, poziția este setată la dosar.
În limbajul de asamblare pentru parametrii de transmisie utilizate de directivă LOCAL.
Argumentul LOCAL [argument]. [= Identifier]
Unele argumente au următoarea sintaxă:
în cazul în care „slozhnyy_tip“ - acest tip de date argument. Poate fi fie un tip simplu sau un complex de expresie pointer.
Valorile declarate variabilele locale sunt trecute prin stivă.