Domande sui programmi che leggono il codice in una lingua (lingua di origine) e lo traducono in un programma equivalente in un'altra lingua (lingua di destinazione).
Nella progettazione del compilatore, perché la ricorsione sinistra dovrebbe essere eliminata nelle grammatiche? Sto leggendo che è perché può causare una ricorsione infinita, ma non è vero anche per una corretta grammatica ricorsiva?
Voglio analizzare lingue specifiche del dominio definite dall'utente. Queste lingue sono in genere vicine alle notazioni matematiche (non sto analizzando un linguaggio naturale). Gli utenti definiscono il loro DSL in una notazione BNF, in questo modo: expr ::= LiteralInteger | ( expr ) | expr + expr | expr * …
Il linguaggio assembly viene convertito in linguaggio macchina dall'assemblatore. Perché un compilatore dovrebbe convertire un linguaggio di alto livello in assembly? Non può convertire direttamente dal linguaggio di alto livello al codice macchina?
Secondo la pagina di Wikipedia sull'assegnazione statica-singola (SSA) , SSA viene utilizzata da progetti di grandi dimensioni e ben noti come LLVM, GCC, MSVC, Mono, Dalvik, SpiderMonkey e V8 mentre la pagina su progetti utilizza lo stile di passaggio di continuazione (CPS) è un po 'carente in confronto. Ho questa …
È possibile analizzare un documento utilizzando un singolo passaggio da una macchina a stati. Qual è il vantaggio di avere due passaggi, ad es. avere un lexer per convertire il testo in token e avere un parser per testare le regole di produzione su quei token? Perché non avere un …
Sto lavorando a un compilatore per un linguaggio concatenativo e vorrei aggiungere il supporto per l'inferenza del tipo. Capisco Hindley-Milner, ma sto imparando la teoria dei tipi mentre vado, quindi non sono sicuro di come adattarlo. Il seguente sistema è sano e decisamente inferibile? Un termine è un letterale, una …
Conosco l'idea dell'eliminazione di base della ricorsione della coda, in cui le funzioni che restituiscono il risultato diretto di una chiamata a se stesse possono essere riscritte come cicli iterativi. foo(...): # ... return foo(...) Comprendo anche che, come caso speciale, la funzione può ancora essere riscritta se la chiamata …
C'è qualche differenza tra i due? Secondo il libro di Ullman , i compilatori convertono una lingua in un'altra lingua (di solito di basso livello), così come un assemblatore. In che modo i due sono diversi?
L'output di un parser deve essere un albero o potrebbe anche essere un grafico generale? Inoltre, esiste una lingua esistente o plausibile che utilizza la rappresentazione di grafici generali anziché alberi per la loro sintassi?
Lavoro spesso con lexer / parser , al contrario di un combinatore di parser e vedo persone che non hanno mai frequentato un corso di analisi, chiedendo di analizzare i dati binari. In genere i dati non sono solo binari ma anche sensibili al contesto. Questo in pratica porta ad …
Ho un problema con questo esercizio: Sia G la seguente ambigua grammatica per il calcolo λ: E → v | λv.E | EE | (E) dove E è il singolo simbolo non terminale, λv.E rappresenta l'astrazione rispetto alla variabile v in E ed EE rappresenta l'applicazione. Definire una grammatica LL …
Penso che comprenda come la deforestazione consuma e produce un elenco allo stesso tempo (da una piega e una funzione spiegata - vedi questa buona risposta su CodeReview qui ), ma quando ho confrontato quello con la voce di Wikipedia sulla tecnica ha parlato di "rimozione alberi "da un programma. …
Di recente sto studiando la progettazione di compilatori. Sono venuto a conoscenza di due tipi di grammatica uno è la grammatica LL e l'altro è la grammatica LR. Sappiamo anche che ogni grammatica LL è LR, ovvero la grammatica LL è un sottoinsieme proprio della grammatica LR. Il primo viene …
Questa è una domanda dal Libro del Drago. Questa è la grammatica: S→ A a A b ∣ B b B aS→AaAb∣BbBaS \to AaAb \mid BbBa A → εA→εA \to \varepsilon B → εB→εB \to \varepsilon La domanda chiede come mostrare che è LL (1) ma non SLR (1). Per …
In un commento all'apprendimento di F #: quali libri che usano altri linguaggi di programmazione possono essere tradotti in F # per apprendere concetti funzionali? Makarius dichiarò: Si noti che l'approccio "CPS" ha arrecato gravi danni alle prestazioni in SML / NJ. Il suo modello di valutazione fisica viola troppe …
We use cookies and other tracking technologies to improve your browsing experience on our website,
to show you personalized content and targeted ads, to analyze our website traffic,
and to understand where our visitors are coming from.
By continuing, you consent to our use of cookies and other tracking technologies and
affirm you're at least 16 years old or have consent from a parent or guardian.