Compare commits
2
Commits
c5b703efe8
...
873dc440b8
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
873dc440b8
|
||
|
|
123a65addf
|
+1
-1
@@ -121,7 +121,7 @@
|
||||
caption: [Implementation architecture overview]
|
||||
) <fig:architecture>
|
||||
|
||||
First, typing rules were formally defined, drawing heavily on _Types and Progamming Languages_@tapl.
|
||||
First, typing rules were formally defined, drawing heavily on _Types and Programming Languages_@tapl.
|
||||
The implementation of the parser for the definition language follows R. Nystrom's _Crafting Interpreters_@Nystrom2021. The whole system is itself implemented in Python, leveraging the language's own `ast` module to parse and manipulate source code.
|
||||
The type checker also includes some machinery to infer the result types of several *dataframe operations* and *aggregation methods*.
|
||||
]
|
||||
|
||||
+1
-1
@@ -1,7 +1,7 @@
|
||||
#import "@preview/acrostiche:0.7.0": *
|
||||
|
||||
#let acronyms = (
|
||||
"TaPL": ([Types and Progamming Languages@tapl],),
|
||||
"TaPL": ([Types and Programming Languages@tapl],),
|
||||
"LSP": (link("https://en.wikipedia.org/wiki/Liskov_substitution_principle")[Liskov substitution principle],),
|
||||
"AST": ([Abstract Syntax Tree],),
|
||||
"LUB": ([Least Upper Bound],),
|
||||
|
||||
@@ -103,7 +103,7 @@
|
||||
),
|
||||
rule(
|
||||
"T-Assign",
|
||||
$Gamma tack "x": "T"$,
|
||||
$"x": "T" in Gamma$,
|
||||
$Gamma tack "t": "T"$,
|
||||
$Gamma tack "x" = "t" tack.l Gamma$,
|
||||
```py x = t```,
|
||||
|
||||
Reference in New Issue
Block a user