mirror of
https://github.com/KevinMidboe/linguist.git
synced 2025-10-29 17:50:22 +00:00
Support for Type Language (#3593)
* Support for Type Language * Update Type Language * Add one more sample for Type Language * Update Type Language grammar
This commit is contained in:
committed by
Colin Seymour
parent
ca6121e3ea
commit
60f864a138
39
samples/Type Language/builtin.tl
Normal file
39
samples/Type Language/builtin.tl
Normal file
@@ -0,0 +1,39 @@
|
||||
// built-in types
|
||||
int#a8509bda ? = Int;
|
||||
long ? = Long;
|
||||
double ? = Double;
|
||||
string ? = String;
|
||||
null = Null;
|
||||
|
||||
vector {t:Type} # [ t ] = Vector t;
|
||||
coupleInt {alpha:Type} int alpha = CoupleInt<alpha>;
|
||||
coupleStr {gamma:Type} string gamma = CoupleStr gamma;
|
||||
|
||||
/* The name of the type variable is irrelevant: "gamma" could be replaced with "alpha"
|
||||
However, the combinator number will depend on the specific choice. */
|
||||
|
||||
intHash {alpha:Type} vector<coupleInt<alpha>> = IntHash<alpha>;
|
||||
strHash {alpha:Type} (vector (coupleStr alpha)) = StrHash alpha;
|
||||
intSortedHash {alpha:Type} intHash<alpha> = IntSortedHash<alpha>;
|
||||
strSortedHash {alpha:Type} (strHash alpha) = StrSortedHash alpha;
|
||||
|
||||
// custom types
|
||||
pair x:Object y:Object = Pair;
|
||||
triple x:Object y:Object z:Object = Triple;
|
||||
|
||||
user#d23c81a3 id:int first_name:string last_name:string = User;
|
||||
no_user#c67599d1 id:int = User;
|
||||
group id:int title:string last_name:string = Group;
|
||||
no_group = Group;
|
||||
|
||||
---functions---
|
||||
|
||||
// Maybe some built-in arithmetic functions; inverse quotes make "identifiers" out of arbitrary non-alphanumeric strings
|
||||
`+` Int Int = Int;
|
||||
`-` Int Int = Int;
|
||||
`+` Double Double = Double;
|
||||
// ...
|
||||
|
||||
// API functions (aka RPC functions)
|
||||
getUser#b0f732d5 int = User;
|
||||
getUsers#2d84d5f5 (Vector int) = Vector User;
|
||||
1102
samples/Type Language/scheme.tl
Normal file
1102
samples/Type Language/scheme.tl
Normal file
File diff suppressed because it is too large
Load Diff
Reference in New Issue
Block a user