Pytania otagowane jako compilers

Pytania dotyczące programów, które czytają kod w jednym języku (język źródłowy) i tłumaczą go na równoważny program w innym języku (język docelowy).




2
Dlaczego w wielu kompilatorach wykorzystywanych w branży preferowane jest przypisanie statycznego pojedynczego nad stylem przekazywania ciągłego?
Według strony Wikipedii na temat statycznego pojedynczego przypisania (SSA) , SSA jest używany przez duże i dobrze znane projekty, takie jak LLVM, GCC, MSVC, Mono, Dalvik, SpiderMonkey i V8, podczas gdy strona o projektach używa stylu kontynuacji przejścia (CPS) jest trochę brakuje w porównaniu. Mam pojęcie, że CPS jest preferowany …

1
Po co rozdzielać leksowanie i parsowanie?
Możliwe jest parsowanie dokumentu za pomocą pojedynczego przejścia z automatu stanów. Jaka jest korzyść z dwóch przejść, tj. posiadanie leksera do konwersji tekstu na tokeny i parsera do testowania reguł produkcyjnych dla tych tokenów? Dlaczego nie mieć pojedynczego przejścia, które stosuje reguły produkcji bezpośrednio do tekstu?

1
Wnioskowanie typu na podstawie typów produktów
Pracuję nad kompilatorem dla języka konkatenatywnego i chciałbym dodać obsługę wnioskowania typu. Rozumiem Hindleya-Milnera, ale nauczyłem się teorii typów, więc nie jestem pewien, jak ją dostosować. Czy następujący system jest dźwiękowy i można go w sposób zdecydowanie wywnioskować? Termin jest literałem, kompozycją terminów, cytatem terminu lub prymitywem. e::=x∣∣ee∣∣[e]∣∣…e::=x|ee|[e]|… e ::= …


2
Jaka właściwość wad pozwala na wyeliminowanie wad modulo ogona rekurencyjnego?
Znam ideę podstawowej eliminacji rekurencji ogona, w której funkcje, które zwracają bezpośredni wynik wywołania do siebie, można przepisać jako pętle iteracyjne. foo(...): # ... return foo(...) Rozumiem również, że jako szczególny przypadek funkcja może być nadal przepisana, jeśli wywołanie rekurencyjne jest zawinięte w wywołanie do cons. foo(...): # ... return …






3
Jaka jest ta gramatyka LL (1)?
To pytanie z Dragon Book. Oto gramatyka: S→AaAb∣BbBaS→AaAb∣BbBaS \to AaAb \mid BbBa A→εA→εA \to \varepsilon B→εB→εB \to \varepsilon Pytanie dotyczy tego, jak pokazać, że jest to LL (1), ale nie SLR (1). Aby udowodnić, że jest to LL (1), próbowałem zbudować jego tabelę analizującą, ale otrzymuję wiele produkcji w komórce, …

1
Podejście „CPS” wyrządziło wielką szkodę wydajności w SML / NJ; uzasadnienie pożądane
W komentarzu do Nauka F #: Jakie książki w innych językach programowania można przetłumaczyć na F #, aby nauczyć się funkcjonalnych koncepcji? Makarius stwierdził: Zauważ, że podejście „CPS” wyrządziło wielką szkodę wydajności w SML / NJ. Jego model oceny fizycznej narusza zbyt wiele założeń wbudowanych w sprzęt. Jeśli weźmiesz duże …

Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.