Giter Site home page Giter Site logo

tajmone / c-compiler-course Goto Github PK

View Code? Open in Web Editor NEW
1.0 1.0 0.0 29 KB

Compiler course assets and exercises

Home Page: https://dragonzap.com/course/creating-a-c-compiler-from-scratch

License: GNU General Public License v2.0

Makefile 3.18% C 96.82%
c-compiler compiler-construction course

c-compiler-course's Introduction

C Compiler Course Exercises

Tristano Ajmone's personal notes and exercises for the Creating a C Compiler From Scratch video-course by Daniel McCarthy, along with the lessons source code material.


Table of Contents


Project Contents

About

Creating a C Compiler From Scratch is a commercial video-course on how to hand-code a C compiler in C, without resorting to third party lexer/parser generator tools like Yacc, Bison, etc.

The course is available at the Dragon Zap and Udemy online stores, as a single product at the former, and as three separate modules at the latter.

NOTE — at the time of this writing, only the first of the three modules has been released. Modules 2 and 3 are currently undergoing final editing, and should become available soon.

Course Lessons Assets

At Udemy store, course assets are provided as links to specific commits at the PeachCompiler repository, from which the reader can download the source files, with occasional in-video instructions to fetch specific files from the DragonCompiler repository — a rather cumbersome solution, compared to having access to Zip archives with lesson-specific ready files, or a dedicated repository for the course assets.

While studying the course, I decided to gather the required material in an orderly fashion, organized into subfolders according to lesson. Since both the PeachCompiler and DragonCompiler repositories are GPLv2 licensed, I thought I might just as well share the material for the benefit of other students.

Code Fixes

Besides saving end users the time of manually fetching each lesson files from specific commit checkouts, the files in this project often contain bug fixes that were introduced in later commits, for which I've manually overwritten the original files with their fixed versions, or other fixes that surfaced during students' Q&A.

I also took the liberty to fix some obvious typos in source comments and strings.

Personal Notes

This being first and foremost my personal study project, I'm including my own course notes and reference links within the project, for my own benefit, and often tweak the original comments in the source files, or even add new ones, as a means to annotate my learning process.

If these extra annotations turn out to be useful to others, that's an added value. Just beware at all times that this repository is a personal project, and that the assets herein contained often contain various changes compared to the original course material.

Windows Tested

Whereas the online course explicitly targets Ubuntu, all the code within this repository is tested under MS Windows 10 Home, using MinGW as the compiler suite. So far the project didn't require any fixes to run under MS Windows, but if the need arises I'll adapt the assets to ensure they work under Windows, at the expenses of other platforms.

License

All the C source assets in this project were taken from the PeachCompiler and DragonCompiler repositories, both created by Daniel McCarthy and released under GPLv2 license:

c-compiler-course's People

Contributors

tajmone avatar

Stargazers

 avatar

Watchers

 avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.