s'more documantation

This commit is contained in:
Rusty Striker 2024-04-04 10:06:07 +03:00
parent 7b14d7ccb3
commit 066fee44ac
Signed by: RustyStriker
GPG key ID: 87E4D691632DFF15
2 changed files with 14 additions and 1 deletions

View file

@ -16,4 +16,16 @@ The compiler is seperated into multiple files:
- items.py: contains data structs for the parser - items.py: contains data structs for the parser
- lexer.py: lexer class - lexer.py: lexer class
- parser.py: parser class - parser.py: parser class
- cpq.py: main program and cmd handling logic - 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)

View file

@ -14,6 +14,7 @@ class Parser(sly.Parser):
last_used_temp = 0 # cpl doesnt allow _ in ids, so use t_NUM as variables last_used_temp = 0 # cpl doesnt allow _ in ids, so use t_NUM as variables
def next_temp(self): def next_temp(self):
# returns the next temp variable name
self.last_used_temp += 1 self.last_used_temp += 1
return f't_{self.last_used_temp}' return f't_{self.last_used_temp}'