FSL - Force Script Language

0

FSL jest napisanym przeze mnie językiem skryptowym, głównym założeniem jest to aby chodził na Delphi , choć pewnie w przyszłości będzie interpreter kodu dla C++. Aktualna wersja to 0.1, umożliwia:

  • pisanie skryptu/programu w stylu:
    program <nazwa>;
    [Definicje stałych, zmiennych,metod i usesów (jako <Nazwa> in <Ściezka względna>]
    begin
    [Kod]
    end.
  • skoro mamy sekcje usesów to można pisac moduły jako:
    unit <nazwa>;
    interface
    [Definicje stałych,zmiennych, i usesów, ale bez ścieżek (ścieżki bierze z programu),deklaracje metod]
    implementation
    [Definicje stałych,zmiennych,definicje metod]
    end.
  • są na razie 3 typy zmiennych: string,integer,bolean
  • metody to funkcje i procedury, parametry można modyfikować modyfikatorami "var","out","const"
  • można wywoływać metody rekurencyjnie
  • metody można przeładować
  • 3 type pętli: for to/downto do, while do, repeat until
  • if z else[opcjonalnym]
  • wbudowane metody do pisania po ekranie i odczytu danych
  • przez kropkę można odwołując się do danych z inny modułów jeśli w aktualnym taka dana już jest np. a :=5; unit1.a := 6+8;
  • 24 operatory, porównania, arytmetyczne, bitowe, kilka nowych jako: rol,ror,nand,nor,imp
  • składnia podobna w 95% do Delphi.
    Link: http://fp.unit1.pl/wp-content/uploads/2008/12/FSL01.rar
    Polecam przeczytanie readme aby poznać co ma być oraz przeglądnięcie przykładów (uruchamiać z konsoli lepiej niż przez nasuwanie myszką nad exe), uruchamia się interpreter podając jako parametr plik dpr. Przykłady nie maja jakiejś pożytecznej funkcji, ich założeniem jest pokazanie jakie konstrukcje działają (break,continue,exit,zagnieżdżanie pętli, rekurencje itp.), dopiero przy wersji 0.2 FSL rozwinie skrzydła.
    Napisane w Delphi, działa na Windowsie, ale planowane jest aby szło na Lazarusie i Linuksie, no i może nie kompilator do kodu pośredniego, ale interpreter do c++.
    Małe "uwaga"- w FSL-u nie używa się overload do przeładowania funkcji, przeładowani jest gratis.
    Zachęcam do testowania
0

wychodzi ci cos w rodzaju kompilatora pascala do uruchamiania aplikacji w czasie "kompilowania" ;]
jesli dobrze to rozumiem to wydaje mi sie ze po prostu Twoja aplikacja "ConsoleIterpreter" przeszukuje kod szukając błędów, a jak ich nie znajdzie to wykonuje polecenia tak, jakby to zrobił normalny program konsolowy, z tym ze tutaj nic sie nie kompiluje.

Pytanie z czystej ciekawości: W jakim celu to powstało i czemu ma sluzyc?

0

Ona najpierw tworzy kod pośredni, ale na razie nie ma zapisu do plików. To powstało i powstaję z dwóch powodów (od najmniej ważnego do najbardziej):-projekt na kompilatory; - ciekawość;-chęć napisania języka skryptowego, który można by używać w projektach w Delphi o wiele łatwiej niż gyby trzeba do tego zaprząść luę bo jest specjalnie pod Delphi więc np. chce używać rtti do obsługi obiektów a nie zmuszać użytkownika do pisania wraperów dla każdej klasy, tak samo wywołanie metod zewnętrznych ma polegać, że FSL sam wrzuca co trzeba na stos i wywołuje metodę spod danego wskaźnika.

0

Napisałem już wersję 0.2 FSL-a. Od poprzedniej wersji tu umieszczonej jest wiele zmian:

  • dwa nowe typu wbudowane
  • możliwość tworzenia sekcji "type" w której można tworzyć własne typy: aliasy wbudowanych i tabele i można je używać przy definiowaniu zmiennych, parametrów, wyników metod.
  • w stałych i zmiennych globalnych można inicjować wartość wyrażeniami matematycznymi
  • instrukcja case..of
  • dodano krótki obwód
  • nowe metody wbudowane
  • inne drobniejsze rzeczy

Jest także 62 stronicowy manual oraz 4 większe przykłady użycia języka, dwa rozwiązują jakieś zadania algorytmiczne, jeden pokazujący jak używając tablice gdy chce się zrobić pewną arytmetykę wektorów oraz jeden będący grą komputerową - kółko i krzyżyk na 5 na planszy 15x15 przeciwko sztucznej inteligencji, taki screen z niej:
user image
Oraz link do paczki (co ważne, kod można oglądać):http://fp.unit1.pl/wp-content/uploads/2009/02/fsl02.rar
Wszystko zostało napisane w Turbo Delphi, wiec kompiluje się na nim, oraz na Delphi 2006, 2007 i 2009.

0

Ale to zaraz.
Czy mogę tego używać w aplikacji pisanej w Delphi?

Tzn. w kodzie aplikacji dynamicznie tworzę skrypt, a później Twój interpreter go wykonuje w moim programie?

Tak to rozumiem jako przydatne :P
Dobrze by było, gdyby interpreter był w dllce.

0

Całkiem fajnie wygląda to kółko i krzyżyk ;]
można by w taki sposób zrobić konsolową grę w statki z możliwością gry samemu jak i z innym żywym graczem :)

0

W planie jest właśnie aby można było wywoływać metody z załadowanego skryptu i ze skryptu używać metod w kodzie z Delphi. Może będzie jako dll-ka, ale po co? choć w sumie.. przenośność do innych języków by była :) Do wersji 0.3 będzie możliwość wywoływania metod ze skryptu z poziomu kodu

1 użytkowników online, w tym zalogowanych: 0, gości: 1