skip to Main Content

Pamiętnik parsera MATLABa cz.3

Przygotowanie do pisania gramatyki

Pierwszą rzeczą jaką należy zrobić podczas pisania gramatyki dla jakiegoś języka jest sprawdzenie czy ktoś takiej gramatyki nie napisał.

Repozytorium: https://github.com/antlr/grammars-v4. Posiada kilkanaście gramatyk dla różnych języków.

Czy jest dla MATLABa? Nie ma.

Czy jest dla języka Octave [1]? Nie ma.

Który z dostępnych języków przypomina MATLABa? Lua.

Lua to język skryptowy wykorzystywany przez twórców gier komputerowych np. do programowania sztucznej inteligencji.

Warto z takich „gotowców” brać garściami, zawsze przydatne rzeczy to:

  • Definicja identyfikatora (czyli że np. nazwy zmiennych i funkcji składają się liter i liczb, ale mogą zaczynać od liczby)
  • Definicja liczby (liczba całkowita, zmiennoprzecinkowa, liczby w zapisie szesnastkowym)
  • Obsługa komentarzy
  • Obsługa białych znaków
[1] Octave –Taki opensourcowy MATLAB

Gramatyka

Spójrzmy na taki kod:

Dla osób, które MATLABa na oczy nie widziały, już tłumaczę. Jest to definicja funkcji o nazwie humps, która przy wywołaniu przyjmuje 1 argument i zwraca dwie zmienne out1 i out2. Ciało funkcji zostało pomięte, ponieważ nie będziemy parsowali ciała funkcji w tym odcinku.

Czytaj resztę...
Pamiętnik Parsera MATLABa Cz.2

Pamiętnik parsera MATLABa cz.2

Pierwszy etap to przekształcenie kodu źródłowego do własnego drzewa. Przygotowanie Biblioteka ANTLR działa następująco:  Plik g4 przechowuje gramatykę języka, który chcesz parsować Jako jeden z stopni procesu kompilacji twojej solucji, na podstawie pliku g4 są tworzone klasy YourLanguageLexer, YourLanguageParser oraz…

Czytaj resztę...
Pamiętnik Parsera MATLABa Cz.1

Pamiętnik Parsera MATLABa cz.1

Na studiach student przechodzi przez wiele przedmiotów, potrzebnych, nudnych, głupich oraz pasjonujących. Tym ostatnim był przedmiot dotyczący tworzenia kompilatorów, gdzie człowiek uzbrojony w narzędzia takie jak Lex oraz Bizon tworzy swój język kompilujący do quasi-asemblera. Dlatego przy wybieraniu tematu pracy…

Czytaj resztę...
Back To Top