Nie planuję pisać kompilatora w najbliższej przyszłości; nadal jestem dość zainteresowany technologiami kompilatora i tym, jak można to ulepszyć. Zaczynając od języków skompilowanych, większość kompilatorów ma dwa poziomy błędów: ostrzeżenia i błędy, z których pierwszy to najczęściej niekrytyczne rzeczy, które należy naprawić, oraz błędy wskazujące przez większość czasu, że niemożliwe …
Niedawno podjąłem się zadania napisania języka programowania opartego na stosie. Zanim jednak zacząłem projektować swój język, pomyślałem, że dobrym pomysłem byłoby czytanie i eksperymentowanie z istniejącymi językami stosowymi. To prowadzi mnie do tematu tego postu. Czytałem artykuł w Wikipedii na temat Forth , języka opartego na stosie, który używa wyrażeń …
Czy wymagała tego zmiana języka lub jakiś praktyczny powód, dla którego Bison nie był już odpowiedni ani optymalny? Widziałem na Wikipedii , że się zmieniły, odnosząc się do informacji o wersji GCC 3.4 i GCC 4.1 . Te informacje o wersji zawierają: Ręcznie napisany parser C ++ z rekurencyjnym pochodzeniem …
Zamknięte . To pytanie jest oparte na opiniach . Obecnie nie przyjmuje odpowiedzi. Chcesz poprawić to pytanie? Zaktualizuj pytanie, aby można było na nie odpowiedzieć faktami i cytatami, edytując ten post . Zamknięte 6 lat temu . To może być dziwne pytanie. Facet piszący kompilator C ++ (lub inny język …
Jest to część serii pytań, które koncentrują się na siostrzanym projekcie Abstraction Project, którego celem jest wyodrębnienie pojęć używanych w projektowaniu języka w formie ram. Projekt siostrzany nazywa się OILexer, który ma na celu skonstruowanie analizatora składni z plików gramatycznych, bez użycia wstrzykiwania kodu do dopasowań. Niektóre inne strony związane …
Obecnie implementuję ewaluator wyrażeń (wyrażenia jednowierszowe, takie jak formuły) w oparciu o: wprowadzone wyrażenie jest tokenizowane w celu oddzielenia literalnych boolanów, liczb całkowitych, dziesiętnych, ciągów, funkcji, identyfikatorów (zmiennych) Zaimplementowałem algorytm Shunting-yard (lekko zmodyfikowany do obsługi funkcji o zmiennej liczbie argumentów), aby pozbyć się nawiasów i uporządkować operatorów z przyzwoitym pierwszeństwem …
Zamknięte. To pytanie jest nie na temat . Obecnie nie przyjmuje odpowiedzi. Chcesz poprawić to pytanie? Zaktualizuj pytanie, aby było tematem dotyczącym wymiany stosów inżynierii oprogramowania. Zamknięte 4 lata temu . Nie jestem studentem informatyki i pracuję jako programista stron internetowych (Java, Python, AS3 itp.) Jako profesjonalista. Biorę 1 kurs …
Jestem studentem trzeciego roku studiów inżynierskich. Od tego roku moja uczelnia wprowadziła nowy kurs o nazwie „Kompilatory kompilatorów”, który uczy podstaw teorii tworzenia kompilatora. Jaka byłaby rzeczywista zaleta dla inżyniera oprogramowania w nauce budowy kompilatora?
Jestem programistą C ++ i starając się lepiej zrozumieć rozwój międzyplatformowy, staram się lepiej zrozumieć niektóre szczegóły implementacyjne kompilatorów i jak dokładnie tworzą one pliki binarne specyficzne dla systemu operacyjnego. W trakcie moich badań zdałem sobie sprawę, że przynajmniej przez jakiś czas większość kompilatorów pobranych na określoną platformę kompilowała tylko …
Od wydania 4.8 kompilator C ++ GCC (część G ++) jest już napisany nie w języku C, ale w samym C ++. Mam hipotetyczne pytanie w tej sprawie. Zastanawiam się, jak skompilować kod C ++ GCC na nowej platformie, która nie ma jeszcze kompilatora C ++. Oczywiście można użyć wstępnie …
W obecnej formie to pytanie nie pasuje do naszego formatu pytań i odpowiedzi. Oczekujemy, że odpowiedzi poparte będą faktami, referencjami lub wiedzą fachową, ale to pytanie prawdopodobnie będzie wymagało debaty, argumentów, ankiet lub rozszerzonej dyskusji. Jeśli uważasz, że to pytanie można poprawić i ewentualnie ponownie otworzyć, odwiedź centrum pomocy w …
Nie znam wszystkich języków programowania, ale jasne jest, że zwykle nie jest możliwe przeładowanie metody, biorąc pod uwagę jej typ zwracany (zakładając, że jej argumenty mają tę samą liczbę i ten sam typ). Mam na myśli coś takiego: int method1 (int num) { } long method1 (int num) { } …
Rozumiem fakt, że Java potrzebuje zarówno kompilatora, jak i interpretera. Kompiluje kod źródłowy do kodu bajtowego, a następnie maszyna wirtualna (w systemie Windows, Linux, Android itp.) Tłumaczy ten kod bajtowy na kod maszynowy dla bieżącej architektury. Ale dlaczego Python potrzebuje zarówno kompilatora, jak i interpretera? Ponieważ Python nie jest niezależny …
Java jest często chwalona za niesamowitą przenośność, która, jak przypuszczam, wynika z JVM. Moje pytanie brzmi: co powstrzymuje C przed kompilacją / interpretacją / JIT'em? Jeśli tak, C można również napisać raz i sprawić, by działał na dowolnym urządzeniu. ale nie jest to popularny mechanizm przetwarzania programu w języku C. …
W tym wykładzie Guido van Rossum mówi (27:30) o próbach napisania kompilatora dla kodu Python, komentując go mówiąc: okazuje się, że nie jest tak łatwo napisać kompilator, który zachowuje wszystkie fajne właściwości dynamicznego pisania, a także zachowuje poprawność semantyczną programu, dzięki czemu robi to samo bez względu na to, jak …
Używamy plików cookie i innych technologii śledzenia w celu poprawy komfortu przeglądania naszej witryny, aby wyświetlać spersonalizowane treści i ukierunkowane reklamy, analizować ruch w naszej witrynie, i zrozumieć, skąd pochodzą nasi goście.
Kontynuując, wyrażasz zgodę na korzystanie z plików cookie i innych technologii śledzenia oraz potwierdzasz, że masz co najmniej 16 lat lub zgodę rodzica lub opiekuna.