mirror of
https://github.com/krgamestudios/Toy.git
synced 2026-04-15 23:04:08 +10:00
Changed my mind about oftype/typeof
This commit is contained in:
@@ -31,7 +31,7 @@ DONE: are compounds shallow or deep copies? Deep copies
|
||||
DONE: third output stream, for lexer/parser/compiler/interpreter errors
|
||||
DONE: Assertion-based test scripts
|
||||
DONE: Import/export keywords
|
||||
DONE: A way to check the type of a variable (oftype keyword)
|
||||
DONE: A way to check the type of a variable (typeOf keyword)
|
||||
DONE: slice and dot notation around the builtin _index and _dot functions
|
||||
|
||||
|
||||
|
||||
@@ -45,12 +45,12 @@ The following list of keywords cannot be used as names, due to their significanc
|
||||
* int
|
||||
* null
|
||||
* of
|
||||
* oftype
|
||||
* print
|
||||
* return
|
||||
* string
|
||||
* true
|
||||
* type
|
||||
* typeof
|
||||
* var
|
||||
* while
|
||||
|
||||
|
||||
@@ -11,5 +11,5 @@ t = astype [float]; //redefnition
|
||||
|
||||
var b: u;
|
||||
|
||||
print oftype a; //<[<int>]>
|
||||
print oftype b; //<[<float>]>
|
||||
print typeof a; //<[<int>]>
|
||||
print typeof b; //<[<float>]>
|
||||
@@ -32,7 +32,7 @@
|
||||
assert func() == 69, "import/export of functions failed";
|
||||
}
|
||||
|
||||
//test that variables retain their types with the oftype keyword
|
||||
//test that variables retain their types with the typeof keyword
|
||||
{
|
||||
var t: type = int;
|
||||
|
||||
@@ -42,7 +42,7 @@
|
||||
{
|
||||
import t;
|
||||
|
||||
assert oftype t == type, "type retention failed";
|
||||
assert typeof t == type, "type retention failed";
|
||||
}
|
||||
|
||||
print "All good";
|
||||
|
||||
@@ -34,7 +34,7 @@ KeywordType keywordTypes[] = {
|
||||
{TOKEN_RETURN, "return"},
|
||||
{TOKEN_TYPE, "type"},
|
||||
{TOKEN_ASTYPE, "astype"},
|
||||
{TOKEN_OFTYPE, "oftype"},
|
||||
{TOKEN_TYPEOF, "typeof"},
|
||||
{TOKEN_VAR, "var"},
|
||||
{TOKEN_WHILE, "while"},
|
||||
|
||||
|
||||
@@ -136,7 +136,7 @@ static Opcode asType(Parser* parser, Node** nodeHandle) {
|
||||
return OP_EOF;
|
||||
}
|
||||
|
||||
static Opcode ofType(Parser* parser, Node** nodeHandle) {
|
||||
static Opcode typeOf(Parser* parser, Node** nodeHandle) {
|
||||
Node* rhs = NULL;
|
||||
parsePrecedence(parser, &rhs, PREC_TERNARY);
|
||||
emitNodeUnary(nodeHandle, OP_TYPE_OF, rhs);
|
||||
@@ -821,7 +821,7 @@ ParseRule parseRules[] = { //must match the token types
|
||||
{NULL, NULL, PREC_NONE},// TOKEN_RETURN,
|
||||
{atomic, NULL, PREC_NONE},// TOKEN_TYPE,
|
||||
{asType, NULL, PREC_PRIMARY},// TOKEN_ASTYPE,
|
||||
{ofType, NULL, PREC_CALL},// TOKEN_OFTYPE,
|
||||
{typeOf, NULL, PREC_CALL},// TOKEN_TYPEOF,
|
||||
{NULL, NULL, PREC_NONE},// TOKEN_VAR,
|
||||
{NULL, NULL, PREC_NONE},// TOKEN_WHILE,
|
||||
|
||||
|
||||
@@ -32,7 +32,7 @@ typedef enum TokenType {
|
||||
TOKEN_RETURN,
|
||||
TOKEN_TYPE,
|
||||
TOKEN_ASTYPE,
|
||||
TOKEN_OFTYPE,
|
||||
TOKEN_TYPEOF,
|
||||
TOKEN_VAR,
|
||||
TOKEN_WHILE,
|
||||
|
||||
|
||||
Reference in New Issue
Block a user