Update 'Initialization'

Sasha Koshka 2022-08-24 05:47:00 +00:00
parent 72172c19e4
commit 348574a51a
1 changed files with 55 additions and 0 deletions

55
Initialization.md Normal file

@ -0,0 +1,55 @@
`set` phrases, data sections, and type and function return default values all
support value initialization. There are two types of initialization in ARF:
simple and complex.
Simple initialization is just a single argument that is sufficient for setting
the value of a simple thing such as an Int. However, objects and arrays require
more than that. This is where complex initialization comes in.
An indented block under a...
- Data section
- Type section
- Enum section member
- Objt section member
- Set phrase
... is to be treated as a complex initialization. There are two types of complex
initialization: object and array. Array initialization is simple, it is just a
list of values of the same type. The following array initializations are
syntactically and semantically valid:
```
set x:{Int 4}
3849 92348 93 -21
set y:{Int 5}
23 2
39 695 1
set z:{Int 5}
23
2
39
695
1
```
Object initializations allow setting the values for an entire object, including
its constituent parts:
```
set x:SomeObject
.someMember 5
.memberWithMembers
.bird0
.bird1
.arrayMember
9853 943850 2093 399
394 93
```
The parser is able to differentiate between the two because in an object
initialization block, every member is preceded by a dot. Object initialization
members may nest - they may have arrays initializations in them, or even other
object initializations.