d-u-d-e / c-compiler

GNU General Public License v3.0
3 stars 0 forks source link

Implement compiler driver #2

Closed albertoursino closed 3 days ago

albertoursino commented 1 week ago

Updates 🆕

I have implemented the Compiler Driver following pages 7-8 of the book.

As you learned in the Introduction, a compiler isn’t very useful on its own. You also need a compiler driver that calls the preprocessor, compiler, assembler, and linker.

Please if you have any doubt about my implementation don't hesitate to ask questions. 😊

Useful links ✨

I'll take advantage of this PR to recommend the use of Ruff as a Python linter and code formatter.

  1. Download the VSCode extension (through VSCode)
  2. Configure Ruff in order to let it automatically format your code every time you save a Python file

image

albertoursino commented 1 week ago

Thank you for the review @d-u-d-e 😊 I'll take a look at it tomorrow.

Btw I think you can avoid writing this if you have already made comments around the code in the PR.

CremaLuca commented 1 week ago

Could avoid import sys altogether if you use exit() or exit(1)

CremaLuca commented 1 week ago

If PREPROCESSED_FILE and ASSEMBLY_FILE are temporary files, and you have no interest in having them readily visible while compilation is running (or compilation fails), you could use python builtin tempfile

CremaLuca commented 1 week ago

What improvements does the logging library loguru have over the standard logging library?

albertoursino commented 1 week ago

What improvements does the logging library loguru have over the standard logging library?

@CremaLuca nice question! Actually I haven't used the logging library extensively enough to give you a clear comparison. During a working experience at Infineon I was introduced to it, and now I'm keeping using it because it's super easy and I love the colors of the logs.

Here and example:

image

Btw this is what the Loguru doc says:

The main difference is that standard logging requires the user to explicitly instantiate named Logger and configure them with Handler, Formatter and Filter, while loguru tries to narrow down the amount of configuration steps.

d-u-d-e commented 1 week ago

@albertoursino Aggiorni il CHANGELOG con le modifiche che introduce questa PR?

CremaLuca commented 1 week ago

@albertoursino Aggiorni il CHANGELOG con le modifiche che introduce questa PR?

Il CHANGELOG è una cosa che si può far compilare alla CI senza rompersi a riempirlo a mano, si può mettere la lista dei commit separati per feat/fix/dependency (ignorando refactor)

@albertoursino prima di fare il merge fai un bello squash, richiede force push sul branch (o seleziona l'opzione "squash and merge pull request" quando hai finito); e metti come descrizione il titolo di questa PR che va benissimo

d-u-d-e commented 6 days ago

@albertoursino Aggiorni il CHANGELOG con le modifiche che introduce questa PR?

Il CHANGELOG è una cosa che si può far compilare alla CI senza rompersi a riempirlo a mano, si può mettere la lista dei commit separati per feat/fix/dependency (ignorando refactor)

@albertoursino prima di fare il merge fai un bello squash, richiede force push sul branch (o seleziona l'opzione "squash and merge pull request" quando hai finito); e metti come descrizione il titolo di questa PR che va benissimo

Fico, @CremaLuca riesci a creare le actions?

CremaLuca commented 6 days ago

@CremaLuca riesci a creare le actions? Sure can do

Rigurado al CHANGELOG.md:

  1. Non inserirei che file sono cambiati in ogni PR/versione, per quello esiste già la git history. Molto più utile ad un utente è cosa funzionalmente è cambiato/migliorato e se ci sono breaking changes, che dovrebbe essere il contenuto della descrizione dei commit di merge delle PR che poi verranno raccolti dalla CI
  2. @albertoursino puoi cancellare il file/pulirlo per questa PR
CremaLuca commented 3 days ago

Please merge (and squash) with message "Implemented compiler driver (#13)"