Table of Contents

Literatura

Niklaus Wirth: Compiler Construction
http://inf.ethz.ch/personal/wirth/CompilerConstruction/CompilerConstruction1.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/view

https://gitlab.fjfi.cvut.cz/culikzde/ev3comp

Dalsi priklady

https://gitlab.fjfi.cvut.cz/culikzde/java-parser

https://gitlab.fjfi.cvut.cz/culikzde/c-parser

https://gitlab.fjfi.cvut.cz/culikzde/pascal-parser/

Letošní příklady

Letošní příklady http://gitlab.fjfi.cvut.cz/culikzde/prekl-2024

Loňské příklady http://gitlab.fjfi.cvut.cz/culikzde/prekl-2023

Předloňské příklady http://gitlab.fjfi.cvut.cz/culikzde/prekl-2022

Lexikální analyzátor

Lexikální analyzátor pro jazyk podobný jazyku C ( napsaný v jazyce Python )

lexikální analyzátor

Video: Lexical Analysis http://www.youtube.com/watch?v=sJKFLcsysVs

( Úvod: http://www.youtube.com/watch?v=0A079QpDAzY )

Syntaktická analýza

Syntaktická analýza výrazů

syntaktická analýza výrazů

Gramatika popisující příkazy zjednodušeného jazyka C

gramatika popisující příkazy

Příklady syntaktických analyzátorů

Příklad ručně psaného parseru příkazů

Příklad parseru pro popis databázových tabulek

mini-parser.zip

pokus

Video: Syntax Analysis http://www.youtube.com/watch?v=8nBoVjEOCMI

Strojově generované syntaktické analyzátory

Gramatika popisující gramatiku

gramatika

Parser pro popis gramatiky

Načtení popisu gramatiky a uložení do stromové struktury

Zobrazení gramatiky

Zobrazení pomocí HTML

Zobrazení programem LOUT

Množiny symbolů, kterými začínají jednotlivá syntaktická pravidla

Vypouštějící pravidla

Množiny symbolů

Syntaktický analyzátor

Parser (a také lexer)

Program

http://github.com/zdenekzc/plain-grammar

Objektově orientované syntaktické stromy

Syntaktický analyzátor vytvářející syntaktický strom

parser vytvářející strom

Tisk programu uloženého v syntaktickém stromu

product

Select

select

Choose

choose

Program

http://github.com/zdenekzc/easy-grammar

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

c3 - zpracování deklarací

c3 - převod do Pythonu

c4 - syntaktické predikáty, generování instrukcí

http://github.com/zdenekzc/simple-view

C--

gramatika C--, sémantické predikáty

zpracování deklarací

převod do Pythonu, PyQt

CLang a Python

cindex

peachpy

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

dots

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