2021-01-08 17:16:25 +08:00
|
|
|
Errors:
|
|
|
|
- Not supported
|
|
|
|
- Only * is supported
|
|
|
|
- Expected * in *, but got *
|
|
|
|
- Divergent type in (construct), (location 1), (location 2)
|
|
|
|
- Unknown field
|
|
|
|
- Unbounded variable
|
|
|
|
- Different variable
|
|
|
|
- Different domain
|
|
|
|
- * is not subclass of *
|
|
|
|
- Type not equal
|
|
|
|
- Incorrect number of parameters
|
|
|
|
|
|
|
|
Symbol Resolution:
|
2021-01-25 17:09:17 +08:00
|
|
|
- Add all files with annotated class/functions.
|
2021-01-08 17:16:25 +08:00
|
|
|
- Find class references, load them all in TopLevelContext.
|
2021-01-25 17:09:17 +08:00
|
|
|
- Find unbounded identifiers in the functions.
|
|
|
|
- If it is a function/class name, record its object ID.
|
|
|
|
- Otherwise, load its value. (check to see if specified with `global`)
|
|
|
|
(Function implemented in python, with rust binding to add value to global
|
|
|
|
variable dictionary)
|
|
|
|
|
|
|
|
Global variable dictionary:
|
|
|
|
- Primitives, including integers, floats, bools, etc.
|
|
|
|
- Primitive lists.
|
|
|
|
- Numpy multi-dimensional array, with value + dimension vectors.
|
|
|
|
- Reference array, with integer index referring to other things.
|
|
|
|
- Symbol table: python id -> reference id.
|
2021-01-08 17:16:25 +08:00
|
|
|
|
|
|
|
TopLevelContext/InferenceContext:
|
|
|
|
- Restrict visibility by user defined function.
|
|
|
|
|
2021-01-25 17:09:17 +08:00
|
|
|
|
|
|
|
|