Commit Graph

27 Commits (5a643bffcaeab67308709aba529d9d725e1cdc9d)

Author SHA1 Message Date
ychenfo 80631fc92b Option type support (#224)
Co-authored-by: ychenfo <yc@m-labs.hk>
Co-committed-by: ychenfo <yc@m-labs.hk>
2022-03-26 15:09:15 +08:00
ychenfo be75fa7368 nac3core: fix assign to constant 2022-03-24 07:13:13 +08:00
pca006132 e303248261 nac3core: exception type check and codegen 2022-02-12 22:50:32 +08:00
Sebastien Bourdeauducq fd4bf12808 fix grammar of some type error messages 2022-01-14 16:56:23 +08:00
ychenfo 4a1a4dc076 nac3core/artiq/standalone: symbol resolver return error msg for type error of host variables 2022-01-14 16:28:34 +08:00
Sebastien Bourdeauducq 0ff995722c Revert "nac3core: add missing expr concrete type check"
This reverts commit cb450372d6.
2021-12-20 18:13:45 +08:00
ychenfo cb450372d6 nac3core: add missing expr concrete type check 2021-12-19 18:01:49 +08:00
Sebastien Bourdeauducq 142f82f987 remove debug prints 2021-12-01 22:48:06 +08:00
ychenfo b239806558 nac3core: adapt to ast change due to comment support 2021-11-04 15:02:51 +08:00
Sebastien Bourdeauducq bf7e2c295a integrate nac3parser 2021-11-03 17:11:00 +08:00
pca006132 083eacc268 with parallel/sequential support
Behavior of parallel and sequential:
Each function call (indirectly, can be inside a sequential block) within a parallel
block will update the end variable to the maximum now_mu in the block.
Each function call directly inside a parallel block will reset the timeline after
execution. A parallel block within a sequential block (or not within any block) will
set the timeline to the max now_mu within the block (and the outer max now_mu will also
be updated).

Implementation: We track the start and end separately.
- If there is a start variable, it indicates that we are directly inside a
parallel block and we have to reset the timeline after every function call.
- If there is a end variable, it indicates that we are (indirectly) inside a
parallel block, and we should update the max end value.

Note: requires testing, it is difficult to inspect the output IR
2021-10-31 23:54:37 +08:00
pca006132 2f6ba69770 nac3core/typecheck: check if value is none 2021-10-23 21:31:14 +08:00
pca006132 11144301ca nac3artiq: added simple host value support 2021-10-06 16:07:42 +08:00
pca006132 105d605e6d nac3core: fix clippy warnings 2021-09-22 18:04:06 +08:00
pca006132 084efe92af nac3core: use string interning 2021-09-22 18:04:06 +08:00
ychenfo 87f25e1c5d nac3core: remove mutex on dyn symbol resolve 2021-09-08 19:27:32 +08:00
ychenfo 54b4572c5f nac3core: allow interior mutability to dyn symbolresolver, add add_id_def to symbolresolver trait, remove primitive from top level def list 2021-09-06 19:23:04 +08:00
pca006132 6633eabb89 nac3core: optimized by using HashSet 2021-08-27 12:36:51 +08:00
pca006132 a24e204824 type_inferencer: check defined identifiers during inference 2021-08-27 11:13:43 +08:00
pca006132 f5b8b58826 added tuple assignment check 2021-08-21 15:11:01 +08:00
pca006132 b01d0f6fbb formatting 2021-08-05 14:56:09 +08:00
pca006132 832513e210 new is_concrete type check 2021-07-28 17:25:19 +08:00
pca006132 e15473d2c9 fixed pattern matching 2021-07-27 14:39:53 +08:00
pca006132 1d13b16f94 updated function check 2021-07-26 16:00:29 +08:00
pca006132 ddcf4b7e39 refactored typedef 2021-07-23 15:57:37 +08:00
pca006132 88c45172b2 basic check for use-before-def 2021-07-22 17:07:49 +08:00
pca006132 c315227a28 init function check 2021-07-22 15:36:37 +08:00