diff options
Diffstat (limited to 'src/common/typespec.txt')
-rw-r--r-- | src/common/typespec.txt | 87 |
1 files changed, 87 insertions, 0 deletions
diff --git a/src/common/typespec.txt b/src/common/typespec.txt new file mode 100644 index 0000000..6fdd726 --- /dev/null +++ b/src/common/typespec.txt @@ -0,0 +1,87 @@ +# This file contains Icon type specifications. + +# The first group of types have special semantics that are not completely +# captured by the specification system. + + + string{s}: simple + # special form of descriptor + # has RLT return construct with two arguments + + integer{i}: simple + # two kinds of dwords + + record{R}: simple # really special aggregate + return block_pointer + # special semantics for allocating sub-types + # different sub-types have different components + + proc: simple + return block_pointer + # special semantics for allocating sub-types + + coexpr{C}: simple + return block_pointer + # special semantics for allocating sub-types + + # sub-string trapped variables + tvsubs{sstv}: aggregate(str_var) + # has RTL return construct with three arguments + # variable type with special dereferencing semantics + + # table-element trapped variables + tvtbl{tetv}: aggregate(trpd_tbl) + return block_pointer + # variable type with special dereferencing semantics + + +# The second group of types are required by iconc but have no special +# semantics. + + null{n}: simple + + cset{c}: simple + return block_pointer + + real{r}: simple + return block_pointer + + list{L}: aggregate(var lst_elem{LE}) + return block_pointer + + table{T}: aggregate(tbl_key, var tbl_val{TV}, tbl_dflt) + return block_pointer + + +# The third group of types appear only in RTL code. They have no special +# semantics nor any special uses by iconc. + + file{f}: simple + return block_pointer + + set{S}: aggregate(set_elem) + return block_pointer + + # integer keyword variables: &random, &trace, &error + kywdint: variable always integer + return descriptor_pointer + + # &subject + kywdsubj: variable always string + return descriptor_pointer + + # &pos + kywdpos: variable always integer + return descriptor_pointer + + # &eventsource, &eventvalue, &eventcode + kywdevent: variable always any_value + return descriptor_pointer + + # &window + kywdwin: variable always file ++ null + return descriptor_pointer + + # &fg and friends + kywdstr: variable always string + return descriptor_pointer |