Table of Contents
Literatura
Niklaus Wirth: Compiler Construction
http://inf.ethz.ch/personal/wirth/CompilerConstruction/CompilerConstruction1.pdf
http://inf.ethz.ch/personal/wirth/CompilerConstruction/CompilerConstruction2.pdf
Steven Pemberton and Martin Daniels: Pascal Implementation: The P4 Compiler and Interpreter
http://homepages.cwi.nl/~steven/pascal
Andrew W. Appel: Modern Compiler Implementation in C
http://www.cs.princeton.edu/~appel/modern/c/
Příklady
Příklady v Pythonu
http://github.com/zdenekzc/plain-grammar
http://github.com/zdenekzc/easy-grammar
http://github.com/zdenekzc/simple-view
http://gitlab.fjfi.cvut.cz/culikzde/view-2022
http://gitlab.fjfi.cvut.cz/culikzde/view-2023
http://gitlab.fjfi.cvut.cz/culikzde/simple-view
https://gitlab.fjfi.cvut.cz/culikzde/ev3comp
Dalsi priklady
https://gitlab.fjfi.cvut.cz/culikzde/java-parser
Letošní příklady
Letošní příklady http://gitlab.fjfi.cvut.cz/culikzde/prekl-2025
Loňské příklady http://gitlab.fjfi.cvut.cz/culikzde/prekl-2024
Lexikální analyzátor
Lexikální analyzátor pro jazyk podobný jazyku C ( napsaný v jazyce Python )
Video: Lexical Analysis http://www.youtube.com/watch?v=sJKFLcsysVs
Syntaktická analýza
Syntaktická analýza výrazů
Gramatika popisující příkazy zjednodušeného jazyka C
Příklady syntaktických analyzátorů
Příklad ručně psaného parseru příkazů
Příklad parseru pro popis databázových tabulek
Video: Syntax Analysis http://www.youtube.com/watch?v=8nBoVjEOCMI
Strojově generované syntaktické analyzátory
Gramatika popisující gramatiku
Parser pro popis gramatiky
Zobrazení gramatiky
Množiny symbolů, kterými začínají jednotlivá syntaktická pravidla
Syntaktický analyzátor
Program
Objektově orientované syntaktické stromy
Syntaktický analyzátor vytvářející syntaktický strom
Tisk programu uloženého v syntaktickém stromu
Select
Choose
Program
Příklady
Příklady v adresáři tutorial
c1 - jednoduchá gramatika pro výrazy a příkazy
c2 - zobrazení syntaktického stromu
c3 - gramatika se zjednodušenými deklaracemi
C--
CLang a Python
TCC
http://repo.or.cz/tinycc.git/blob/HEAD:/i386-gen.c#l699 gen_opi /* generate an integer binary operation */
http://repo.or.cz/tinycc.git/blob/HEAD:/x86_64-gen.c#l1705 gen_opi
http://repo.or.cz/tinycc.git/blob/HEAD:/tccgen.c#l6370 expr_landor
http://repo.or.cz/tinycc.git/blob/HEAD:/tccgen.c#l6943 block
http://repo.or.cz/tinycc.git/blob/HEAD:/i386-gen.c#l518 gfunc_prolog
https://repo.or.cz/tinycc.git/blob/HEAD:/x86_64-gen.c#l938 gfunc_prolog
http://repo.or.cz/tinycc.git/blob/HEAD:/tccgen.c#l8298 gen_function
http://repo.or.cz/tinycc.git/blob/HEAD:/tccgen.c#l8436 decl
http://repo.or.cz/tinycc.git/blob/HEAD:/tccgen.c#l383 tccgen_compile
http://repo.or.cz/tinycc.git/blob/HEAD:/libtcc.c#l776 tcc_compile_string
http://repo.or.cz/tinycc.git/blob/HEAD:/tccelf.c#l2809 elf_output_file
Poznámky
http://tomassetti.me/a-tutorial-on-how-to-write-a-compiler-using-llvm
https://mukulrathi.com/create-your-own-programming-language/llvm-ir-cpp-api-tutorial/
http://mlir.llvm.org ( http://www.youtube.com/MLIRCompiler )
http://anoopsarkar.github.io/compilers-class/llvm-practice.html
http://llvm.org/docs/tutorial/MyFirstLanguageFrontend/LangImpl03.html
http://llvm.org/docs/tutorial/MyFirstLanguageFrontend/LangImpl05.html
lldb example http://github.com/llvm/llvm-project/blob/main/lldb/examples/python/disasm.py
llvm lite http://llvmlite.readthedocs.io/en/latest/user-guide/index.html
cpu0 http://jonathan2251.github.io/lbd/asm.html
Gede is a graphical frontend (GUI) to GDB written in C++ and using the Qt4 toolkit https://github.com/Nanoseb/gede
gdbgui - A modern, browser-based frontend to gdb https://www.gdbgui.com/
PeachPy - https://github.com/Maratyszcza/PeachPy
tcc - https://github.com/C-Chads/tinycc
8cc - https://github.com/rui314/8cc
chibicc - https://github.com/rui314/chibicc
http://github.com/learn-llvm/awesome-llvm
https://assignments.lrde.epita.fr/tools/llvm/irbuilder.html
https://github.com/zyantific/zasm
https://fileadmin.cs.lth.se/cs/Education/EDAN65/2021/lectures/L11.pdf