From f670b5b540bc6f7848adb6f4e497dc9dd1d2bdd3 Mon Sep 17 00:00:00 2001 From: HeronErin Date: Fri, 10 May 2024 13:39:52 -0400 Subject: [PATCH 1/2] first commit --- source/fnc/symbols.d | 55 +++----------------------------------------- source/main.d | 6 ++--- 2 files changed, 6 insertions(+), 55 deletions(-) diff --git a/source/fnc/symbols.d b/source/fnc/symbols.d index 17a72b0..9b3fa59 100644 --- a/source/fnc/symbols.d +++ b/source/fnc/symbols.d @@ -85,9 +85,7 @@ public enum SymAttr : ulong GLOB = 1L << 53, ALIAS = 1L << 54, - FORMAT_MASK = DYNARRAY | ASOARRAY | SIGNED | FLOAT | DOUBLE | BITFIELD, - INTEGRAL = BYTE | WORD | DWORD | QWORD, - FLOATING = FLOAT | DOUBLE, + FORMAT_MASK = DYNARRAY | ASOARRAY | SIGNED | FLOAT | DOUBLE | BITFIELD } public class Symbol @@ -118,16 +116,12 @@ final: bool isModule() => (symattr & SymAttr.MODULE) != 0; bool isGlob() => (symattr & SymAttr.GLOB) != 0; bool isAlias() => (symattr & SymAttr.ALIAS) != 0; - bool isAliasSeq() => isAlias && isArray; - bool isAggregate() => isModule || isStruct || isClass || isTagged || isTuple; bool isFunction() => (symattr & SymAttr.FUNCTION) != 0; bool isDelegate() => (symattr & SymAttr.DELEGATE) != 0; bool isLambda() => (symattr & SymAttr.LAMBDA) != 0; bool isCtor() => (symattr & SymAttr.CTOR) != 0; bool isDtor() => (symattr & SymAttr.DTOR) != 0; - bool isSCtor() => isCtor && isStatic; - bool isSDtor() => isDtor && isStatic; bool isUnittest() => (symattr & SymAttr.UNITTEST) != 0; bool isField() => (symattr & SymAttr.FIELD) != 0; @@ -138,46 +132,6 @@ final: bool isExpression() => (symattr & SymAttr.EXPRESSION) != 0; bool isLiteral() => (symattr & SymAttr.LITERAL) != 0; - bool isArray() => (symattr & SymAttr.ARRAY) != 0; - bool isDynamicArray() => (symattr & SymAttr.DYNARRAY) != 0; - bool isStaticArray() => (symattr & SymAttr.FIXARRAY) != 0; - bool isAssociativeArray() => (symattr & SymAttr.ASOARRAY) != 0; - bool isString() => (symattr & SymAttr.STRING) != 0; - bool isWideString() => (symattr & SymAttr.WSTRING) != 0 || (symattr & SymAttr.DSTRING) != 0; - bool isSigned() => (symattr & SymAttr.SIGNED) != 0; - bool isIntegral() => (symattr & SymAttr.INTEGRAL) != 0; - bool isFloating() => (symattr & SymAttr.FLOATING) != 0; - bool isNumeric() => isIntegral || isFloating; - bool isByRef() => isClass || isKHeap || isRef; - bool isVector() => isKXMM || isKYMM || isKZMM; - - bool isPublic() => (symattr & SymAttr.PUBLIC) != 0; - bool isPrivate() => (symattr & SymAttr.PRIVATE) != 0; - bool isInternal() => (symattr & SymAttr.INTERNAL) != 0; - - bool isSafe() => (symattr & SymAttr.SAFE) != 0; - bool isSystem() => (symattr & SymAttr.SYSTEM) != 0; - bool isTrusted() => (symattr & SymAttr.TRUSTED) != 0; - - bool isStatic() => (symattr & SymAttr.STATIC) != 0; - bool isGlobal() => (symattr & SymAttr.GLOBAL) != 0; - bool isTransient() => (symattr & SymAttr.TRANSIENT) != 0; - bool isAtomic() => (symattr & SymAttr.ATOMIC) != 0; - bool isBitfield() => (symattr & SymAttr.BITFIELD) != 0; - bool isPure() => (symattr & SymAttr.PURE) != 0; - bool isConst() => (symattr & SymAttr.CONST) != 0; - bool isRef() => (symattr & SymAttr.REF) != 0; - - bool isKHeap() => (symattr & SymAttr.KIND_HEAP) != 0; - bool isKStack() => (symattr & SymAttr.KIND_STACK) != 0; - bool isKScalar() => (symattr & SymAttr.KIND_SCALAR) != 0; - bool isKFloat() => (symattr & SymAttr.KIND_FLOAT) != 0; - bool isKXMM() => (symattr & SymAttr.KIND_XMM) != 0; - bool isKYMM() => (symattr & SymAttr.KIND_YMM) != 0; - bool isKZMM() => (symattr & SymAttr.KIND_ZMM) != 0; - bool isKReadOnly() => (symattr & SymAttr.KIND_READONLY) != 0; - bool isKDefault() => (symattr & SymAttr.KIND_DEFAULT) != 0; - Symbol freeze() { if (isVariable) @@ -297,9 +251,6 @@ final: // Expressions and literals should also be represented by a variable, // but I haven't yet worked this out. -// Store alias to instance?? -// NOTE: foo->fields should allow you to get the data of foo at runtime!! - public class Variable : Symbol { public: @@ -313,9 +264,9 @@ final: alias marker this; - Symbol type() + Type type() { - return parents[$-1]; + return cast(Type) parents[$-1]; } } diff --git a/source/main.d b/source/main.d index c0833ac..69f68dc 100644 --- a/source/main.d +++ b/source/main.d @@ -64,9 +64,9 @@ void main() int add(const ref int x, const ref int y, const int offset = 0){ return => x + y - (offset+1); } - // int main(){ - // return => add(y : 1, x : 1, offset : 3); - // } + int main(){ + return => add(y : 1, x : 1, offset : 3); + } "); From c9077b19ca42d9c1540766c4968aeb1ed2fbc0f2 Mon Sep 17 00:00:00 2001 From: cetio Date: Fri, 10 May 2024 13:46:18 -0400 Subject: [PATCH 2/2] cum --- source/fnc/symbols.d | 53 ++++++++++++++++++++++++++++++++++++++++++-- 1 file changed, 51 insertions(+), 2 deletions(-) diff --git a/source/fnc/symbols.d b/source/fnc/symbols.d index 9b3fa59..deaa7c0 100644 --- a/source/fnc/symbols.d +++ b/source/fnc/symbols.d @@ -85,7 +85,9 @@ public enum SymAttr : ulong GLOB = 1L << 53, ALIAS = 1L << 54, - FORMAT_MASK = DYNARRAY | ASOARRAY | SIGNED | FLOAT | DOUBLE | BITFIELD + FORMAT_MASK = DYNARRAY | ASOARRAY | SIGNED | FLOAT | DOUBLE | BITFIELD, + INTEGRAL = BYTE | WORD | DWORD | QWORD, + FLOATING = FLOAT | DOUBLE, } public class Symbol @@ -116,12 +118,16 @@ final: bool isModule() => (symattr & SymAttr.MODULE) != 0; bool isGlob() => (symattr & SymAttr.GLOB) != 0; bool isAlias() => (symattr & SymAttr.ALIAS) != 0; + bool isAliasSeq() => isAlias && isArray; + bool isAggregate() => isModule || isStruct || isClass || isTagged || isTuple; bool isFunction() => (symattr & SymAttr.FUNCTION) != 0; bool isDelegate() => (symattr & SymAttr.DELEGATE) != 0; bool isLambda() => (symattr & SymAttr.LAMBDA) != 0; bool isCtor() => (symattr & SymAttr.CTOR) != 0; bool isDtor() => (symattr & SymAttr.DTOR) != 0; + bool isSCtor() => isCtor && isStatic; + bool isSDtor() => isDtor && isStatic; bool isUnittest() => (symattr & SymAttr.UNITTEST) != 0; bool isField() => (symattr & SymAttr.FIELD) != 0; @@ -132,6 +138,46 @@ final: bool isExpression() => (symattr & SymAttr.EXPRESSION) != 0; bool isLiteral() => (symattr & SymAttr.LITERAL) != 0; + bool isArray() => (symattr & SymAttr.ARRAY) != 0; + bool isDynamicArray() => (symattr & SymAttr.DYNARRAY) != 0; + bool isStaticArray() => (symattr & SymAttr.FIXARRAY) != 0; + bool isAssociativeArray() => (symattr & SymAttr.ASOARRAY) != 0; + bool isString() => (symattr & SymAttr.STRING) != 0; + bool isWideString() => (symattr & SymAttr.WSTRING) != 0 || (symattr & SymAttr.DSTRING) != 0; + bool isSigned() => (symattr & SymAttr.SIGNED) != 0; + bool isIntegral() => (symattr & SymAttr.INTEGRAL) != 0; + bool isFloating() => (symattr & SymAttr.FLOATING) != 0; + bool isNumeric() => isIntegral || isFloating; + bool isByRef() => isClass || isKHeap || isRef; + bool isVector() => isKXMM || isKYMM || isKZMM; + + bool isPublic() => (symattr & SymAttr.PUBLIC) != 0; + bool isPrivate() => (symattr & SymAttr.PRIVATE) != 0; + bool isInternal() => (symattr & SymAttr.INTERNAL) != 0; + + bool isSafe() => (symattr & SymAttr.SAFE) != 0; + bool isSystem() => (symattr & SymAttr.SYSTEM) != 0; + bool isTrusted() => (symattr & SymAttr.TRUSTED) != 0; + + bool isStatic() => (symattr & SymAttr.STATIC) != 0; + bool isGlobal() => (symattr & SymAttr.GLOBAL) != 0; + bool isTransient() => (symattr & SymAttr.TRANSIENT) != 0; + bool isAtomic() => (symattr & SymAttr.ATOMIC) != 0; + bool isBitfield() => (symattr & SymAttr.BITFIELD) != 0; + bool isPure() => (symattr & SymAttr.PURE) != 0; + bool isConst() => (symattr & SymAttr.CONST) != 0; + bool isRef() => (symattr & SymAttr.REF) != 0; + + bool isKHeap() => (symattr & SymAttr.KIND_HEAP) != 0; + bool isKStack() => (symattr & SymAttr.KIND_STACK) != 0; + bool isKScalar() => (symattr & SymAttr.KIND_SCALAR) != 0; + bool isKFloat() => (symattr & SymAttr.KIND_FLOAT) != 0; + bool isKXMM() => (symattr & SymAttr.KIND_XMM) != 0; + bool isKYMM() => (symattr & SymAttr.KIND_YMM) != 0; + bool isKZMM() => (symattr & SymAttr.KIND_ZMM) != 0; + bool isKReadOnly() => (symattr & SymAttr.KIND_READONLY) != 0; + bool isKDefault() => (symattr & SymAttr.KIND_DEFAULT) != 0; + Symbol freeze() { if (isVariable) @@ -251,6 +297,9 @@ final: // Expressions and literals should also be represented by a variable, // but I haven't yet worked this out. +// Store alias to instance?? +// NOTE: foo->fields should allow you to get the data of foo at runtime!! + public class Variable : Symbol { public: @@ -266,7 +315,7 @@ final: Type type() { - return cast(Type) parents[$-1]; + return cast(Type)parents[$-1]; } }