Compiling Expressions 17
This commit is contained in:
parent
8fb449825d
commit
41404633da
18 changed files with 546 additions and 64 deletions
|
|
@ -8,6 +8,37 @@ template defaultCtor(){
|
|||
}
|
||||
|
||||
import std.ascii : isAlpha, isAlphaNum;
|
||||
bool isAlpha_(dchar c) => c.isAlpha || c == '_';
|
||||
bool isAlphaNum_(dchar c) => c.isAlphaNum || c == '_';
|
||||
bool isAlpha_(dchar c) @nogc nothrow @safe => c.isAlpha || c == '_';
|
||||
bool isAlphaNum_(dchar c) @nogc nothrow @safe => c.isAlphaNum || c == '_';
|
||||
|
||||
T pop(T)(ref T[] arr){
|
||||
T v = arr.last;
|
||||
arr.length--;
|
||||
return v;
|
||||
}
|
||||
T shift(T)(ref T[] arr){
|
||||
T v = arr.first;
|
||||
arr = arr[1 .. $];
|
||||
return v;
|
||||
}
|
||||
ref T sole(T)(T[] arr) @nogc @safe pure{
|
||||
assert(arr.length == 1, "Not sole");
|
||||
return arr[0];
|
||||
}
|
||||
ref T first(T)(T[] arr) @nogc @safe pure{
|
||||
assert(arr.length >= 1, "No first");
|
||||
return arr[0];
|
||||
}
|
||||
ref T second(T)(T[] arr) @nogc @safe pure{
|
||||
assert(arr.length >= 2, "No second");
|
||||
return arr[1];
|
||||
}
|
||||
ref T third(T)(T[] arr) @nogc @safe pure{
|
||||
assert(arr.length >= 3, "No third");
|
||||
return arr[2];
|
||||
}
|
||||
ref T last(T)(T[] arr) @nogc @safe pure{
|
||||
assert(arr.length >= 1, "No last");
|
||||
return arr[$-1];
|
||||
}
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue