Go to file
Rusty Striker 066fee44ac
s'more documantation
2024-04-04 10:06:07 +03:00
.gitignore gitignore 2024-03-26 21:02:54 +02:00
README.md s'more documantation 2024-04-04 10:06:07 +03:00
cpq.py i think its ready 2024-04-04 09:56:28 +03:00
helper.py i think its ready 2024-04-04 09:56:28 +03:00
items.py gitignore 2024-03-26 21:02:54 +02:00
lexer.py i think its ready 2024-04-04 09:56:28 +03:00
parser.py s'more documantation 2024-04-04 10:06:07 +03:00
test.ou some error stuff 2024-04-01 19:55:27 +03:00

README.md

CPQ

cpq.py compiles a cpl source file (.ou) into a quad ir file (.qud) using sly as the lexer and parser.

Usage

python cpq.py source_file.ou

Structure

The compiler is seperated into multiple files:

  • helper.py: contains a helper function (print_err)
  • items.py: contains data structs for the parser
  • lexer.py: lexer class
  • parser.py: parser class
  • cpq.py: main program and cmd handling logic

Implementation details

First i wanted to use rust/c, but it seems sly is very easy to work with and is a lot less cryptic than flex/bison.

the lexer class contains the token's regular expressions and the token types

the parser class contains functions for each possible reduction, and using each variable once (with next_temp function) and contains the ouput code in the list lines, which in turn is to be used by the caller (of the parsing routine) as it wished (currently, by cpq.py to write to a text file if no errors occured)