W pracy miałem za zadanie wnioskować o pewnych typach informacji o dynamicznym języku. Przepisuję sekwencje instrukcji na letwyrażenia zagnieżdżone , tak jak poniżej: return x; Z => x var x; Z => let x = undefined in Z x = y; Z => let x = y in Z if …
Czy ktoś może mi dlaczego parser rekurencyjnego zejścia z produkcje i (w tej kolejności) nie rozpoznaje języka utworzonego przez gramatykę .S.→ a S.zaS.→zaS.zaS \rightarrow aSaS.→ a aS.→zazaS \rightarrow aaS.→ a S.a | S.→zaS.za | zazaS \rightarrow aSa\ |\ aa Wygląda na to, że analizuje tylko słowa z języka .{ a2)n …
Szukam zasobów na początek analizy programu . Jedyną książką, jaką znalazłem na ten temat, jest książka Nielson i Nielson . Poza tym wydaje się, że istnieją tylko książki „kompilatorowe”, w których „analiza programu” byłaby rozdziałem lub czymś podobnym. Czy ludzie znają inne zasoby?
Podczas studiów licencjackich wziąłem kurs na kompilatory, w którym napisaliśmy kompilator, który kompiluje programy źródłowe w zabawnym języku podobnym do języka Java z językiem montażu zabawek (dla którego mieliśmy tłumacza). W projekcie przyjęliśmy pewne założenia dotyczące maszyny docelowej ściśle związane z „prawdziwymi” natywnymi plikami wykonywalnymi, w tym: stos czasu wykonywania, …
Niech ΣΣ\Sigma będzie zbiorem terminali, a NNN zbiorem nieterminalnych symboli gramatyki bez kontekstu GGG. Powiedzieć, że posiada ciąg a∈(Σ∪N)+a∈(Σ∪N)+a \in (\Sigma \cup N)^+ taki, że w którym i są zdaniowymi formy .x , y ∈ ( Σ ∪ N ) ∗ S ( G ) Gxay∈S(G)xay∈S(G)x a y \in \mathcal{S}(G)x,y∈(Σ∪N)∗x,y∈(Σ∪N)∗x,y\in …
Jestem studentem informatyki. Chcę stworzyć własny język programowania (podstawowy język z kilkoma instrukcjami). Wiem, jak zrobić analizator składniowy, już to zrobiłem w Perlu. W artykule przeczytałem coś o kompilatorze, kompilator jest zrobiony sam w sobie. Na przykład kompilator C jest napisany w C. Jak to możliwe? Mogę stworzyć własny język, …
W Concepts in Programming Languages John Mitchell pisze, że statyczne sprawdzanie typów jest z konieczności konserwatywne (zbyt surowe) z powodu problemu zatrzymania. Podaje jako przykład: if (complicated-expression-that-could-run-forever) then (expression-with-type-error) else (expression-with-type-error) Czy ktoś może udzielić nieskomplikowanej odpowiedzi, która naprawdę byłaby kwestią praktyczną? Rozumiem, że Java zezwala na dynamicznie sprawdzane rzutowania …
Odpowiedź Babou na ostatnie pytanie przypomina mi, że kiedyś myślę, że przeczytałem artykuł na temat równoważności (zarówno pod względem faktów, które można wywnioskować lub udowodnić, jak i złożoności czasowej działania algorytmu wnioskowania) analizy przepływu danych , abstrakcyjna interpretacja i wnioskowanie typu . W niektórych pod-przypadkach (jak między kontekstową analizą przepływu …
Studiuję Bootstrapping z Red Dragon Book Compilers i znalazłem schemat T dla kompilatora krzyżowego dość mylący. Nie rozumiem, co należy rozumieć przez „Uruchamianie kompilatora 1 do kompilatora 2”. Czy ktoś może podać jakieś lepsze wyjaśnienie, analogię lub przykład odnoszący się do jakiegoś kompilatora w świecie rzeczywistym? Najpierw notacja. Przez Znaczy …
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.