Powiedzmy na przykład, że chcę zapłacić komuś za stworzenie języka programowania lub języka skryptowego dla mnie. Jakiego rodzaju dokumentów będą potrzebować, aby w pełni zrozumieć, czego dokładnie chcę.
Mam na myśli, czy istnieją standardowe dokumenty opisujące nowy język programowania / skryptów?
Odpowiedzi:
To, co musisz napisać, nazywa się specyfikacją języka .
Powinien zawierać opis gramatyki języka (najlepiej w formularzu Extended Backus-Naur-Form ) i jego semantykę.
W drugiej części możesz albo napisać opis własnymi słowami (ale bądź dokładny), albo formalną semantykę .
źródło
Potrzebne będą:
Jak Twój język będzie inny? Jaka jest jego misja? Czy to działa? Czy jest zorientowany obiektowo? Czy to jest metajęzyk? Jakie są jego unikalne cechy? Co da światu, który nie istnieje (lub istnieje w brzydki sposób)? Jak chcesz to zmienić? Czy to jest kompilowane lub interpretowane? DSL czy język ogólnego przeznaczenia? To jest twoja filozofia i dyktuje wiele na temat projektu twojego języka.
Następnie pracuj nad zarysowaniem szorstkiej składni i semantyki na papierze. To będzie twoja semantyczna definicja ... pisanie fałszywego kodu to świetny sposób na rozwinięcie myśli. Przeczytaj „Język programowania C”, aby uzyskać doskonały przykład tego, jak to się robi. Baw się tym.
Następnie będziesz musiał w jakiś sposób zdefiniować swoje tokeny i składnię. Programy przetwarzają je następnie na automaty zdolne do odczytu ciągów i przetwarzania składni. Yacc i Bison używają wyrażeń regularnych i składni w stylu BNF odpowiednio do analizy leksykalnej i składni. Istnieją również narzędzia podobne do Yacc i Bison w innych językach.
Będziesz także potrzebował podstaw w teorii / kompilatorach języka, aby wiedzieć, czego NIE robić. Przykłady obejmują niejednoznaczne gramatyki, problemy z generowaniem i manipulowaniem AST oraz ogólnie, jak uprościć sobie życie. Znajomość teorii jest bardzo ważna. Rozważałbym, aby zacząć od następujących rzeczy:
Kompilatory: zasady, techniki i narzędzia (Dragon Book)
Nowoczesne wdrożenie kompilatora w C lub Nowoczesne wdrożenie kompilatora w Javie
źródło
99,9% czasu na tworzenie nowego języka jest całkowicie niepotrzebne. Zwrot z inwestycji byłby najprawdopodobniej niewielki i po prostu zmarnowałbyś swój czas.
Najprawdopodobniej możesz używać Javascript jako podatnego języka skryptowego, a dla większości języków dostępne są już parsery. Możesz także użyć innych języków skryptowych, które ci się podobają, jeśli znajdziesz dla nich odpowiedni parser. Wdrożenie ich do programu wymagałoby znacznie mniej pracy i przyniosłoby większe zyski. Ludzie nie muszą uczyć się innego języka, muszą tylko nauczyć się interfejsu API. To znacznie lepsze rozwiązanie.
Tworzenie nowego języka jest prawie zawsze złe.
źródło
Możesz opisać gramatykę swojego języka w BNF .
Na przykład jest to gramatyka Pythona .
źródło
jeśli używasz platformy .NET, natknąłem się na coś, z czym się kiedyś spotkałem. Rzuciłem mu tylko dziwne spojrzenie, ale może przydałoby ci się: ironia .
źródło