Articles of compiler construction

Come decide il compilatore C # di emettere riferimenti all’assemblaggio retargetable?

Sono stati introdotti riferimenti all’assemblaggio retargetable per .NET Compact Framework e ora vengono utilizzati per supportare librerie di classi portatili. Fondamentalmente, il compilatore emette il seguente MSIL: .assembly extern retargetable mscorlib { .publickeytoken = (7C EC 85 D7 BE A7 79 8E ) .ver 2:0:5:0 } Come fa il compilatore C # a capire che […]

Alta, fluttuante ‘% Time in JIT’ sul sito Web ASP.NET precompilato

Con un sito Web ASP.NET di 150 * .dll precompilato (aggiornabile), quali sono alcune possibili cause per un ‘ % Time in JIT ‘ che è spesso piuttosto elevato (> 60%) e fluttuante molto dopo che l’applicazione si è riscaldata ( accesso a tutte le funzionalità) e senza riavvii dell’app o modifiche ai file che […]

Costruire il proprio compilatore C # usando ANTLR: Compilation Unit

// Crea uno scanner che legge dallo stream di input passato a noi CSLexer lexer = new CSLexer (new ANTLRFileStream (f)); tokens.TokenSource = lexer; // Create a parser that reads from the scanner CSParser parser = new CSParser(tokens); // start parsing at the compilationUnit rule CSParser.compilation_unit_return x = parser.compilation_unit(); object ast = x.Tree; Cosa posso […]

Compilare un array C # in fase di runtime e usarlo nel codice?

So che il codice C # può essere compilato in fase di esecuzione usando C # . Tuttavia sono molto molto traballante da quando ne ho letto qualche minuto fa. Imparo molto meglio con gli esempi. Allora dimmi. Se voglio compilare qualcosa come: // MapScript.CS String[] LevelMap = { “WWWWWWWWWWWWWWWWWWW”, “WGGGGGGGGGGGGGGGGGW”, “WGGGGGGGGGGGGGGGGGW”, “WWWWWWWWWWWWWWWWWWW” }; e […]

Utilizzo di CSharpCodeProvider con .net 4.5 beta

Recentemente ho installato Visual Studio 11 Beta e sto tentando di aggiornare un progetto 4.0 esistente per utilizzare 4.5. Nel programma compila un codice generato dynamicmente usando CSharpCodeProvider . /// /// Compile and return a reference to the compiled assembly /// private Assembly Compile() { var referencedDlls = new List { “mscorlib.dll”, “System.dll”, “System.Core.dll”, }; […]

Microsoft CCI – risorse, riferimenti per scrivere compilatori

Qualche tempo fa stavo lavorando al compilatore, ho usato System.Reflection per generare codice (IL) dal mio AST. Ora, ho un’idea per un altro compilatore su cui mi piacerebbe lavorare (sarà un altro progetto per animali domestici, niente che verrà usato nel codice di produzione, almeno, non ora). Come sapete, i progetti di animali domestici hanno […]

InvalidCastException per object dello stesso tipo: carico di controllo personalizzato

Ho un errore molto cablato, uno dei miei controlli personalizzati sembra che crei due file compilati e quando provo a caricarlo dynamicmente con LoadControl() non riesco proprio perché non riesco a LoadControl() l’uno all’altro – anche se sono esattamente lo stesso. Scrivo il messaggio per vedere che tutto è lo stesso, è solo modificare la […]

codifica a mano un parser

Per tutti i guru dei compilatori, voglio scrivere un parser di discesa ricorsivo e voglio farlo solo con il codice. Non ho generato lesseri e parser da qualche altra grammatica e non mi dicono di leggere il libro del drago, ma alla fine lo farò. Voglio entrare nei dettagli grintosi sull’implementazione di un lexer e […]

Traduci il codice C # in AST?

È attualmente ansible tradurre il codice C # in un Abstract Syntax Tree? Modifica: alcuni chiarimenti; Non mi aspetto necessariamente che il compilatore generi l’AST per me – un parser andrebbe bene, anche se mi piacerebbe usare qualcosa di “ufficiale”. Sfortunatamente le espressioni Lambda non saranno sufficienti dato che non mi permettono di usare i […]

La vista di disassemblaggio del codice di rilascio C # 64-bit è più lunga del 75% rispetto al codice debug a 32 bit?

MODIFICARE Ho testato la versione a 32 bit e il codice era compatto. Pertanto il seguito è un problema a 64 bit. Sto usando VS 2012 RC. Il debug è a 32 bit e Release è a 64 bit. Di seguito è riportato il debug, quindi rilasciare lo sassembly di una riga di codice: crc […]