| 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 | }
 |