1 |
|
2 | module nil8
|
3 | {
|
4 | # Very similar to core/value.asdl, which JSON8 is deserialized to.
|
5 | #
|
6 | # Right now we're keeping them separate because we want to write a standalone
|
7 | # Yaks compiler, with no dependency on Oils.
|
8 | #
|
9 | # Later I think that Null Bool Int Float Str can either be:
|
10 | # - defined as shared constants
|
11 | # - be "inlined" inside any sum type, because of pointer tagging
|
12 |
|
13 | nvalue =
|
14 | Null
|
15 | | Bool(bool b)
|
16 | | Int(int i)
|
17 | | Float(float f)
|
18 |
|
19 | # I wonder if we want nvalue.Char for translating to C?
|
20 | # Could be literal \\ and \n and \'a' or something
|
21 |
|
22 | # string literal e.g. "foo" or b'\yff'
|
23 | | Str(str s)
|
24 |
|
25 | # either Identifier like func main
|
26 | # or operator like + or ++
|
27 | | Symbol(str s)
|
28 |
|
29 | | List(List[nvalue] items)
|
30 | | Record(str name, List[nvalue] args, Dict[str, nvalue] named)
|
31 | }
|