Skip to content

Commit a209747

Browse files
committed
docs
1 parent beff070 commit a209747

File tree

1 file changed

+18
-3
lines changed

1 file changed

+18
-3
lines changed

dev/design/VARIABLES_AND_VALUES.md

Lines changed: 18 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -11,17 +11,31 @@ PerlOnJava implements Perl's dynamic type system in Java, supporting Perl's thre
1111
```
1212
RuntimeBase (abstract)
1313
├── RuntimeScalar
14-
│ ├── RuntimeScalarReadOnly (cached immutable values)
15-
│ └── RuntimeBaseProxy (abstract - for lvalues)
14+
│ ├── RuntimeGlob
15+
│ │ ├── [contains] RuntimeScalar(RuntimeIO)
16+
│ │ └── RuntimeStashEntry
17+
│ └── RuntimeBaseProxy (abstract - for lvalues and special variables)
18+
│ ├── RuntimeScalarReadOnly (cacheable immutable values)
1619
│ ├── RuntimeArrayProxyEntry
1720
│ ├── RuntimeHashProxyEntry
1821
│ ├── RuntimeArraySizeLvalue
1922
│ ├── RuntimePosLvalue
20-
│ └── RuntimeVecLvalue
23+
│ ├── RuntimeSubstrLvalue
24+
│ ├── RuntimeVecLvalue
25+
│ └── ScalarSpecialVariable (variables such as $`, $&, $', or $1)
26+
├── PerlRange
27+
├── RuntimeCode
28+
├── RuntimeList
2129
├── RuntimeArray
30+
│ ├── [contains] ArraySpecialVariable
31+
│ └── [contains] AutovivificationArray
2232
└── RuntimeHash
33+
├── [contains] HashSpecialVariable
34+
├── [contains] AutovivificationHash
35+
└── RuntimeStash
2336
```
2437

38+
2539
### Scalar Type System
2640

2741
PerlOnJava uses integer constants to represent scalar types, defined in `RuntimeScalarType`:
@@ -165,6 +179,7 @@ Abstract base class for all lvalue proxies:
165179
3. **RuntimeArraySizeLvalue**: `$#array` (last index of array)
166180
4. **RuntimePosLvalue**: `pos()` function lvalue
167181
5. **RuntimeVecLvalue**: `vec()` function lvalue
182+
6. **RuntimeSubstrLvalue**: `substr()` function lvalue
168183

169184
## Reference and Dereferencing
170185

0 commit comments

Comments
 (0)