Prosty analizator składniowy Gramatyki to instrukcje umożliwiające

Transkrypt

Prosty analizator składniowy Gramatyki to instrukcje umożliwiające
Prosty analizator sk�adniowy
Gramatyki to instrukcje umo�liwiaj�ce zbudowanie zda� z symboli
terminalnych u�o�onych wed�ug �cis�ych regu� w nich zawartych. Ka�dy
j�zyk
programowania
w postaci
gramatyki.
wymaga
pewnej
Napisanie
sk�adni
programu
formalnie
zapisywanej
w nieprawid�owej
sk�adni
uniemo�liwia jego kompilacj�. B��dy sk�adniowe mog� mie� dwa g�ówne
�ród�a:
�
zastosowanie niezdefiniowanego w gramatyce terminala
�
u�ycie terminali w kolejno�ci niezgodnej z regu�ami zawartymi
w gramatyce
Kolejno przyk�adami powy�szych b��dów w j�zyku C s�:
�
�
foreach (a in tab)
{
c = a * 12;
}
if (c == true) )
c = a * 12;
else
c = 0;
Analiz� programu pod wzgl�dem sk�adni realizuje analizator sk�adniowy,
który w momencie napotkania na b��d generuje stosowny komunikat.
Zadaniem laboratorium b�dzie napisanie analizatora leksykalnego do
nast�puj�cej gramatyki:
S
Z
W
P
L
C
O
::=
::=
::=
::=
::=
::=
::=
W
W
P
L
C
0
*
;
;
|
|
|
|
|
Z
Z
P
(
C
1
:
|
O
W
L
|
|
�
W
)
2 | 3 | 4 | 5 | 6 | 7 | 8 | 9
+ | - | ^
Gramatyka ta umo�liwia budowanie ci�gów liczb ca�kowitych i operacji
arytmetycznych (zda� arytmetycznych), np.:
(12*3)+5-(234+3)^3; 8:13;
Powy�sza gramatyka nie spe�nia za�o�e� gramatyk klasy LL(1). Dlatego
konieczne jest poprawienie produkcji W oraz L tak aby mo�na by�o zbudowa�
2
Prosty analizator sk�adniowy
prosty analizator dla tej gramatyki. Po poprawieniu produkcje te b�d�
wygl�da�y nast�puj�co:
W
W’
L
L’
::=
::=
::=
::=
P
O
C
L
W’
W | �
L’
| �
Aby u�atwi� zaimplementowanie analizatora sk�adniowego nale�y
przedstawi�
podan�
gramatyk�
(diagramów
kolejowych),
które
w
postaci
stanowi�
diagramów
zapis
sk�adniowych
schematu
blokowego
programu analizatora.
Diagramami sk�adni rz�dz� nast�puj�ce regu�y:
�
ka�d� produkcj� zast�pujemy diagramem:
A:
…
�
symbole pomocnicze przedstawiamy w kwadratowych blokach
…
�
…
symbole ko�cowe przedstawiamy w okr�g�ych blokach
…
�
B
x
…
alternatywy reprezentowane s� przez rozga��zienia
x
…
y
…
…
z
Zgodnie z tymi regu�ami nasz� gramatyk� mo�na przedstawi� w postaci
nast�puj�cych diagramów sk�adni:
3
Prosty analizator sk�adniowy
S:
W
;
Z
W
;
Z
P
W’
O
W
Z:
W:
W’:
P:
L
(
W
C
L’
)
L:
L’:
L
C:
O:
0
*
1
:
2
+
…
��
9
^
4
Prosty analizator sk�adniowy
Kolejno podstawiaj�c diagramy do siebie mo�na je upro�ci� oraz
zredukowa� ich ilo��.
S:
W
;
W:
L
(
W
)
O
L:
C
C:
O:
0
*
1
:
2
+
…
��
9
^
Nast�pnie na podstawie takiego diagramu sk�adni mo�na ju� napisa�
program analizatora.
5
Prosty analizator sk�adniowy
Zadanie
Aby umo�liwi� pe�ne wykorzystanie nieprzeci�tnych umiej�tno�ci
ka�dego z Pa�stwa zadanie tego laboratorium zosta�o podzielone na ró�ne
stopnie trudno�ci. Stopnie te nale�y przechodzi� kolejno od najprostszego
do najtrudniejszego.
Stopie� 1. Napisa� w jednym z wymienionych j�zyków: Java, C/C++,
C#, analizator sk�adniowy przyjmuj�cy jako parametr ci�g znaków b�d�cych
sprawdzanym
zdaniem,
jako
wynik
ma
si�
pojawi�
komunikat
o prawid�owo�ci lub nieprawid�owo�ci badanego zdania. Program ten mo�e
by� w formie konsolowej.
Stopie� 2. Jak wy�ej z t� ró�nic�, �e program dzia�a w �rodowisku
graficznym, czyli musi by� miejsce do wpisania badanego zdania oraz klawisz
lub inny wyzwalacz do rozpocz�cia analizy, wymagane jest równie� okienko
lub wyró�niony fragment interfejsu reprezentuj�cy komunikat o poprawno�ci
badanego zdania.
Stopie� 3. Przedstawiona gramatyka dzia�a jedynie na liczbach
ca�kowitych. Nale�y zmodyfikowa� j� w taki sposób, aby mog�a pracowa�
na liczbach zmiennoprzecinkowych. Po dokonaniu zmian w gramatyce nale�y
wykre�li� dla niej diagram sk�adni oraz zaimplementowa�.
Do zaliczenia tego �wiczenia wymagany jest jedynie pierwszy stopie�,
pozosta�e s� dla osób, które nie chc� równa� w dó� i z spokojnym sumieniem
nosi� dumne miano in�yniera i mistrza nauki (magistra).
6