Compiler - gusenov/kb GitHub Wiki
- A compiler and an interpreter usually consist of two parts:
- a lexical analyzer
- and a parser.
- Wikipedia / Comparison of parser generators
- Usually the language to be parsed conforms to the rules of some grammar.
- Your Program as a Transpiler: Applying Compiler Design to Everyday Programming by Edoardo Vacchi
- YouTube
- wiki.c2.com/?TranslatorPattern
- Programming Utilities Guide
- Grammar: The language of languages (BNF, EBNF, ABNF and more)
- GCC MELT is a high-level domain specific language for extending or customizing the Gnu Compiler Collection (i.e. gcc, g++, gfortran, gnat, gccgo, gobjc, ...).
- bstarynk/bismon: persistent monitor (for static source code analysis, GCC based) might later become a successor to GCC MELT
- You should make a new programming language
Books
- Implementing a Custom Language by Vassili Kaplan
- flex & bison by John Levine
- Language Implementation Patterns: Create Your Own Domain-Specific and General Programming Languages by Terence Parr
- The Definitive ANTLR 4 Reference by Terence Parr - 328 pages
- Build Your Own Programming Language. A programmer's guide to designing compilers, interpreters, and DSLs for solving modern computing problems by Clinton L. Jeffery - 494 pages
LLVM
- Clang a C language family frontend for LLVM
- JSON Compilation Database Один из способов представления структуры C++ проекта. Это файл, в котором записаны параметры компиляции, необходимые для создания объектных файлов из исходного кода проекта. Обычно он имеет имя 'compile_commands.json'. База данных компиляции в JSON-формате состоит из массива "командных объектов", где каждый объект определяет один из способов компиляции единицы трансляции в проекте. Файл 'compile_commands.json' может использоваться для компиляции проекта или для анализа сторонними утилитами.
- UndefinedBehaviorSanitizer
- Clang-Tidy Checks
- clangd understands your C++ code and adds smart features to your editor: code completion, compile errors, go-to-definition and more.
- Clang Static Analyzer
- documentation
- MLIR Multi-Level IR Compiler Framework
- YouTube / LLVM / “XRay in LLVM: Function Call Tracing and Analysis” by D. Michael
- reviews.llvm.org
- Google Группы / LLVM Development
- LLVM Techniques, Tips, and Best Practices Clang and Middle-End Libraries. Design powerful and reliable compilers using the latest libraries and tools from LLVM by Min-Yih Hsu
- Learn LLVM 12 by Kai Nacke - 392 pages
- Chapter 11: Debugging Using LLVM Tools
Courses
Community
Wikipedia
- Category:Compiler construction
- Binary-code compatibility
- Template:Application binary interface
- Категория:Теория компиляторов
- Категория:Технологии компиляторов
- AOT-компиляция
- JIT-компиляция
- Syntax diagram
- Abstract syntax tree
- Template:Formal languages and grammars
- Formal grammar
- Template:Metasyntax notations
- Backus–Naur form
- Extended Backus–Naur form
- Категория:Синтаксический анализ
- Static single-assignment form (SSA form) is a property of an intermediate representation (IR) that requires each variable to be assigned exactly once and defined before it is used.
- Tombstone diagram consist of a set of “puzzle pieces” representing compilers and other related language processing programs.
- Template:Executables
- Mach-O short for Mach object file format, is a file format for executables, object code, shared libraries, dynamically loaded code, and core dumps. It was developed to replace the a.out format.
- Binary File Descriptor library mechanism for the portable manipulation of object files in a variety of formats.
- Бутстрэппинг (значения)
- Bootstrapping (compilers)
- Cross compiler is a compiler capable of creating executable code for a platform other than the one on which the compiler is running.
- Кросс-компилятор компилятор, производящий исполняемый код для платформы, отличной от той, на которой исполняется сам кросс-компилятор.
- Data dependency is a situation in which a program statement (instruction) refers to the data of a preceding statement.
- Reaching definition for a given instruction is an earlier instruction whose target variable can reach (be assigned to) the given one without an intervening assignment
- Dead-code elimination is a compiler optimization to remove dead code (code that does not affect the program results).
- Source-to-source compiler is a type of translator that takes the source code of a program written in a programming language as its input and produces an equivalent source code in the same or a different programming language.
- Category:Free compilers and interpreters
- MLIR (software) is a framework for compiler development. The project belongs to the LLVM ecosystem and aims to abstract intermediate representations through the concept of dialects.
Grammars
Python
Go
Object Algebras
- From Object Algebras to Finally Tagless Interpreters by Oleksandr Manzyuk
- Modular Interpreters for the Masses: Implicit Context Propagation using Object Algebras by Inostroza, Pablo; van der Storm, Tijs
- Extensible Language Implementation with Object Algebras (Short Paper) by Maria Gouseti, Chiel Peters, Tijs van der Storm
- Evolving Languages with Object Algebras by Pablo Inostroza, Tijs van Der Storm