Własny język programowania. Część 4: Parser programów
15.07.2010 - Maciej Piróg
Część 1. Część 2. Część 3. Część 4. W czwartej części dopełnimy dzieła i dołożymy ostatnią cegłę brakującą do pełnego interpretera. Nadamy w końcu naszemu językowi kształt, czyli składnię konkretną. O składniW poprzedniej części artykułu napisaliśmy interpreter, który uruchamiał programy przechowywane w pamięci w postaci drzew, czyli wewnętrznej reprezentacji w postaci struktur języka C++. Teraz pora wymyślić dla poszczególnych instrukcji jakąś postać tekstową, by programiści mogli w końcu normalnie pisać kod w naszym języku.
Nasz język jest bardzo prosty, więc proponuję bardzo prostą składnię opartą na składni jezyka C. Ponieważ wszystkie operatory w wyrażeniach są infiksowe (to znaczy, że każdy operator, na przykład '+', buduje wyrażenia postaci InstrukcjeInstrukcja przypisania będzie mieć postać:
zmienna = wyrażenie Instrukcje read, write i skip będą mieć postać:
read x write x skip Blok kodu (czyli seria instrukcji złożenia) niech ma postać:
{ instrukcja_1 instrukcja_2 instrukcja_3 } Instrukcja warunkowa:
if wyrażenie instrukcja else instrukcja Instrukcja pętli:
while wyrażenie instrukcja Oczywiście wszelkie wcięcia i podział na wiersze przedstawiony jest jedynie dla czytelności. Równie dobrze moglibyśmy zapisać instrukcję warunkową jako:
if wyrażenie instrukcja else instrukcja Z powyższych reguł wynika, że program, który wypisuje liczby naturalne parzyste mniejsze od 20, mógłby wyglądać następująco:
i = 0 while 20 - i { if i % 2 -1 write i else skip i = i + 1 } (1 ocena) |
Copyright © 2008-2010 Wrocławski Portal Informatyczny
design: rafalpolito.com