s'more documantation
This commit is contained in:
parent
7b14d7ccb3
commit
066fee44ac
2 changed files with 14 additions and 1 deletions
14
README.md
14
README.md
|
@ -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)
|
|
@ -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}'
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue