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