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: third output stream, for lexer/parser/compiler/interpreter errors
|
||||||
DONE: Assertion-based test scripts
|
DONE: Assertion-based test scripts
|
||||||
DONE: Import/export keywords
|
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
|
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
|
* int
|
||||||
* null
|
* null
|
||||||
* of
|
* of
|
||||||
* oftype
|
|
||||||
* print
|
* print
|
||||||
* return
|
* return
|
||||||
* string
|
* string
|
||||||
* true
|
* true
|
||||||
* type
|
* type
|
||||||
|
* typeof
|
||||||
* var
|
* var
|
||||||
* while
|
* while
|
||||||
|
|
||||||
|
|||||||
@@ -11,5 +11,5 @@ t = astype [float]; //redefnition
|
|||||||
|
|
||||||
var b: u;
|
var b: u;
|
||||||
|
|
||||||
print oftype a; //<[<int>]>
|
print typeof a; //<[<int>]>
|
||||||
print oftype b; //<[<float>]>
|
print typeof b; //<[<float>]>
|
||||||
@@ -32,7 +32,7 @@
|
|||||||
assert func() == 69, "import/export of functions failed";
|
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;
|
var t: type = int;
|
||||||
|
|
||||||
@@ -42,7 +42,7 @@
|
|||||||
{
|
{
|
||||||
import t;
|
import t;
|
||||||
|
|
||||||
assert oftype t == type, "type retention failed";
|
assert typeof t == type, "type retention failed";
|
||||||
}
|
}
|
||||||
|
|
||||||
print "All good";
|
print "All good";
|
||||||
|
|||||||
@@ -34,7 +34,7 @@ KeywordType keywordTypes[] = {
|
|||||||
{TOKEN_RETURN, "return"},
|
{TOKEN_RETURN, "return"},
|
||||||
{TOKEN_TYPE, "type"},
|
{TOKEN_TYPE, "type"},
|
||||||
{TOKEN_ASTYPE, "astype"},
|
{TOKEN_ASTYPE, "astype"},
|
||||||
{TOKEN_OFTYPE, "oftype"},
|
{TOKEN_TYPEOF, "typeof"},
|
||||||
{TOKEN_VAR, "var"},
|
{TOKEN_VAR, "var"},
|
||||||
{TOKEN_WHILE, "while"},
|
{TOKEN_WHILE, "while"},
|
||||||
|
|
||||||
|
|||||||
@@ -136,7 +136,7 @@ static Opcode asType(Parser* parser, Node** nodeHandle) {
|
|||||||
return OP_EOF;
|
return OP_EOF;
|
||||||
}
|
}
|
||||||
|
|
||||||
static Opcode ofType(Parser* parser, Node** nodeHandle) {
|
static Opcode typeOf(Parser* parser, Node** nodeHandle) {
|
||||||
Node* rhs = NULL;
|
Node* rhs = NULL;
|
||||||
parsePrecedence(parser, &rhs, PREC_TERNARY);
|
parsePrecedence(parser, &rhs, PREC_TERNARY);
|
||||||
emitNodeUnary(nodeHandle, OP_TYPE_OF, rhs);
|
emitNodeUnary(nodeHandle, OP_TYPE_OF, rhs);
|
||||||
@@ -821,7 +821,7 @@ ParseRule parseRules[] = { //must match the token types
|
|||||||
{NULL, NULL, PREC_NONE},// TOKEN_RETURN,
|
{NULL, NULL, PREC_NONE},// TOKEN_RETURN,
|
||||||
{atomic, NULL, PREC_NONE},// TOKEN_TYPE,
|
{atomic, NULL, PREC_NONE},// TOKEN_TYPE,
|
||||||
{asType, NULL, PREC_PRIMARY},// TOKEN_ASTYPE,
|
{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_VAR,
|
||||||
{NULL, NULL, PREC_NONE},// TOKEN_WHILE,
|
{NULL, NULL, PREC_NONE},// TOKEN_WHILE,
|
||||||
|
|
||||||
|
|||||||
@@ -32,7 +32,7 @@ typedef enum TokenType {
|
|||||||
TOKEN_RETURN,
|
TOKEN_RETURN,
|
||||||
TOKEN_TYPE,
|
TOKEN_TYPE,
|
||||||
TOKEN_ASTYPE,
|
TOKEN_ASTYPE,
|
||||||
TOKEN_OFTYPE,
|
TOKEN_TYPEOF,
|
||||||
TOKEN_VAR,
|
TOKEN_VAR,
|
||||||
TOKEN_WHILE,
|
TOKEN_WHILE,
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user