diff options
Diffstat (limited to 'nim/ast.pas')
-rw-r--r-- | nim/ast.pas | 154 |
1 files changed, 78 insertions, 76 deletions
diff --git a/nim/ast.pas b/nim/ast.pas index aa83af4ed..681bf72d5 100644 --- a/nim/ast.pas +++ b/nim/ast.pas @@ -97,8 +97,8 @@ type nkStmtListExpr, nkBlockExpr, nkStmtListType, nkBlockType, nkVm, nkTypeOfExpr, nkObjectTy, nkTupleTy, nkRecList, nkRecCase, nkRecWhen, nkRefTy, - nkPtrTy, nkVarTy, nkProcTy, nkEnumTy, - nkEnumFieldDef, nkReturnToken); + nkPtrTy, nkVarTy, nkAbstractTy, nkProcTy, + nkEnumTy, nkEnumFieldDef, nkReturnToken); TNodeKinds = set of TNodeKind; const NodeKindToStr: array [TNodeKind] of string = ( @@ -132,8 +132,8 @@ const 'nkStmtListExpr', 'nkBlockExpr', 'nkStmtListType', 'nkBlockType', 'nkVm', 'nkTypeOfExpr', 'nkObjectTy', 'nkTupleTy', 'nkRecList', 'nkRecCase', 'nkRecWhen', 'nkRefTy', - 'nkPtrTy', 'nkVarTy', 'nkProcTy', 'nkEnumTy', - 'nkEnumFieldDef', 'nkReturnToken'); + 'nkPtrTy', 'nkVarTy', 'nkAbstractTy', 'nkProcTy', + 'nkEnumTy', 'nkEnumFieldDef', 'nkReturnToken'); type TSymFlag = ( sfUsed, sfStar, sfMinus, sfInInterface, @@ -142,7 +142,8 @@ type sfResult, sfNoSideEffect, sfMainModule, sfSystemModule, sfNoReturn, sfAddrTaken, sfCompilerProc, sfCppMethod, sfDiscriminant, sfDeprecated, sfInClosure, sfTypeCheck, - sfCompileTime, sfThreadVar, sfMerge, sfDeadCodeElim); + sfCompileTime, sfThreadVar, sfMerge, sfDeadCodeElim, + sfBorrow); TSymFlags = set of TSymFlag; const SymFlagToStr: array [TSymFlag] of string = ( @@ -152,30 +153,31 @@ const 'sfResult', 'sfNoSideEffect', 'sfMainModule', 'sfSystemModule', 'sfNoReturn', 'sfAddrTaken', 'sfCompilerProc', 'sfCppMethod', 'sfDiscriminant', 'sfDeprecated', 'sfInClosure', 'sfTypeCheck', - 'sfCompileTime', 'sfThreadVar', 'sfMerge', 'sfDeadCodeElim'); + 'sfCompileTime', 'sfThreadVar', 'sfMerge', 'sfDeadCodeElim', + 'sfBorrow'); type TTypeKind = ( tyNone, tyBool, tyChar, tyEmpty, tyArrayConstr, tyNil, tyGeneric, tyGenericInst, - tyGenericParam, tyEnum, tyAnyEnum, tyArray, - tyObject, tyTuple, tySet, tyRange, - tyPtr, tyRef, tyVar, tySequence, - tyProc, tyPointer, tyOpenArray, tyString, - tyCString, tyForward, tyInt, tyInt8, - tyInt16, tyInt32, tyInt64, tyFloat, - tyFloat32, tyFloat64, tyFloat128); + tyGenericParam, tyAbstract, tyEnum, tyOrdinal, + tyArray, tyObject, tyTuple, tySet, + tyRange, tyPtr, tyRef, tyVar, + tySequence, tyProc, tyPointer, tyOpenArray, + tyString, tyCString, tyForward, tyInt, + tyInt8, tyInt16, tyInt32, tyInt64, + tyFloat, tyFloat32, tyFloat64, tyFloat128); TTypeKinds = set of TTypeKind; const TypeKindToStr: array [TTypeKind] of string = ( 'tyNone', 'tyBool', 'tyChar', 'tyEmpty', 'tyArrayConstr', 'tyNil', 'tyGeneric', 'tyGenericInst', - 'tyGenericParam', 'tyEnum', 'tyAnyEnum', 'tyArray', - 'tyObject', 'tyTuple', 'tySet', 'tyRange', - 'tyPtr', 'tyRef', 'tyVar', 'tySequence', - 'tyProc', 'tyPointer', 'tyOpenArray', 'tyString', - 'tyCString', 'tyForward', 'tyInt', 'tyInt8', - 'tyInt16', 'tyInt32', 'tyInt64', 'tyFloat', - 'tyFloat32', 'tyFloat64', 'tyFloat128'); + 'tyGenericParam', 'tyAbstract', 'tyEnum', 'tyOrdinal', + 'tyArray', 'tyObject', 'tyTuple', 'tySet', + 'tyRange', 'tyPtr', 'tyRef', 'tyVar', + 'tySequence', 'tyProc', 'tyPointer', 'tyOpenArray', + 'tyString', 'tyCString', 'tyForward', 'tyInt', + 'tyInt8', 'tyInt16', 'tyInt32', 'tyInt64', + 'tyFloat', 'tyFloat32', 'tyFloat64', 'tyFloat128'); type TNodeFlag = ( nfNone, nfBase2, nfBase8, nfBase16, @@ -220,36 +222,36 @@ type //cog.outl("m" + magics[-1]) //]]] mNone, mDefined, mLow, mHigh, mSizeOf, mIs, - mSucc, mPred, mInc, mDec, mOrd, mNew, - mNewFinalize, mNewSeq, mRegisterFinalizer, mLengthOpenArray, mLengthStr, mLengthArray, - mLengthSeq, mIncl, mExcl, mCard, mChr, mGCref, - mGCunref, mAddI, mSubI, mMulI, mDivI, mModI, - mAddI64, mSubI64, mMulI64, mDivI64, mModI64, mShrI, - mShlI, mBitandI, mBitorI, mBitxorI, mMinI, mMaxI, - mShrI64, mShlI64, mBitandI64, mBitorI64, mBitxorI64, mMinI64, - mMaxI64, mAddF64, mSubF64, mMulF64, mDivF64, mMinF64, - mMaxF64, mAddU, mSubU, mMulU, mDivU, mModU, - mAddU64, mSubU64, mMulU64, mDivU64, mModU64, mEqI, - mLeI, mLtI, mEqI64, mLeI64, mLtI64, mEqF64, - mLeF64, mLtF64, mLeU, mLtU, mLeU64, mLtU64, - mEqEnum, mLeEnum, mLtEnum, mEqCh, mLeCh, mLtCh, - mEqB, mLeB, mLtB, mEqRef, mEqProc, mEqUntracedRef, - mLePtr, mLtPtr, mEqCString, mXor, mUnaryMinusI, mUnaryMinusI64, - mAbsI, mAbsI64, mNot, mUnaryPlusI, mBitnotI, mUnaryPlusI64, - mBitnotI64, mUnaryPlusF64, mUnaryMinusF64, mAbsF64, mZe8ToI, mZe8ToI64, - mZe16ToI, mZe16ToI64, mZe32ToI64, mZeIToI64, mToU8, mToU16, - mToU32, mToFloat, mToBiggestFloat, mToInt, mToBiggestInt, mCharToStr, - mBoolToStr, mIntToStr, mInt64ToStr, mFloatToStr, mCStrToStr, mStrToStr, - mEnumToStr, mAnd, mOr, mEqStr, mLeStr, mLtStr, - mEqSet, mLeSet, mLtSet, mMulSet, mPlusSet, mMinusSet, - mSymDiffSet, mConStrStr, mConArrArr, mConArrT, mConTArr, mConTT, - mSlice, mAppendStrCh, mAppendStrStr, mAppendSeqElem, mAppendSeqSeq, mInRange, - mInSet, mAsgn, mRepr, mExit, mSetLengthStr, mSetLengthSeq, + mEcho, mSucc, mPred, mInc, mDec, mOrd, + mNew, mNewFinalize, mNewSeq, mRegisterFinalizer, mLengthOpenArray, mLengthStr, + mLengthArray, mLengthSeq, mIncl, mExcl, mCard, mChr, + mGCref, mGCunref, mAddI, mSubI, mMulI, mDivI, + mModI, mAddI64, mSubI64, mMulI64, mDivI64, mModI64, + mShrI, mShlI, mBitandI, mBitorI, mBitxorI, mMinI, + mMaxI, mShrI64, mShlI64, mBitandI64, mBitorI64, mBitxorI64, + mMinI64, mMaxI64, mAddF64, mSubF64, mMulF64, mDivF64, + mMinF64, mMaxF64, mAddU, mSubU, mMulU, mDivU, + mModU, mAddU64, mSubU64, mMulU64, mDivU64, mModU64, + mEqI, mLeI, mLtI, mEqI64, mLeI64, mLtI64, + mEqF64, mLeF64, mLtF64, mLeU, mLtU, mLeU64, + mLtU64, mEqEnum, mLeEnum, mLtEnum, mEqCh, mLeCh, + mLtCh, mEqB, mLeB, mLtB, mEqRef, mEqProc, + mEqUntracedRef, mLePtr, mLtPtr, mEqCString, mXor, mUnaryMinusI, + mUnaryMinusI64, mAbsI, mAbsI64, mNot, mUnaryPlusI, mBitnotI, + mUnaryPlusI64, mBitnotI64, mUnaryPlusF64, mUnaryMinusF64, mAbsF64, mZe8ToI, + mZe8ToI64, mZe16ToI, mZe16ToI64, mZe32ToI64, mZeIToI64, mToU8, + mToU16, mToU32, mToFloat, mToBiggestFloat, mToInt, mToBiggestInt, + mCharToStr, mBoolToStr, mIntToStr, mInt64ToStr, mFloatToStr, mCStrToStr, + mStrToStr, mEnumToStr, mAnd, mOr, mEqStr, mLeStr, + mLtStr, mEqSet, mLeSet, mLtSet, mMulSet, mPlusSet, + mMinusSet, mSymDiffSet, mConStrStr, mConArrArr, mConArrT, mConTArr, + mConTT, mSlice, mAppendStrCh, mAppendStrStr, mAppendSeqElem, mAppendSeqSeq, + mInRange, mInSet, mRepr, mExit, mSetLengthStr, mSetLengthSeq, mAssert, mSwap, mIsNil, mArrToSeq, mCopyStr, mCopyStrLast, mNewString, mArray, mOpenArray, mRange, mSet, mSeq, - mInt, mInt8, mInt16, mInt32, mInt64, mFloat, - mFloat32, mFloat64, mBool, mChar, mString, mCstring, - mPointer, mAnyEnum, mEmptySet, mIntSetBaseType, mNil, mIsMainModule, + mOrdinal, mInt, mInt8, mInt16, mInt32, mInt64, + mFloat, mFloat32, mFloat64, mBool, mChar, mString, + mCstring, mPointer, mEmptySet, mIntSetBaseType, mNil, mIsMainModule, mCompileDate, mCompileTime, mNimrodVersion, mNimrodMajor, mNimrodMinor, mNimrodPatch, mCpuEndian, mHostOS, mHostCPU, mNaN, mInf, mNegInf, mNLen, mNChild, mNSetChild, mNAdd, mNAddMultiple, mNDel, @@ -479,36 +481,36 @@ const // "MagicToStr" array: //cog.outl("'%s'" % magics[-1]) //]]] 'None', 'Defined', 'Low', 'High', 'SizeOf', 'Is', - 'Succ', 'Pred', 'Inc', 'Dec', 'Ord', 'New', - 'NewFinalize', 'NewSeq', 'RegisterFinalizer', 'LengthOpenArray', 'LengthStr', 'LengthArray', - 'LengthSeq', 'Incl', 'Excl', 'Card', 'Chr', 'GCref', - 'GCunref', 'AddI', 'SubI', 'MulI', 'DivI', 'ModI', - 'AddI64', 'SubI64', 'MulI64', 'DivI64', 'ModI64', 'ShrI', - 'ShlI', 'BitandI', 'BitorI', 'BitxorI', 'MinI', 'MaxI', - 'ShrI64', 'ShlI64', 'BitandI64', 'BitorI64', 'BitxorI64', 'MinI64', - 'MaxI64', 'AddF64', 'SubF64', 'MulF64', 'DivF64', 'MinF64', - 'MaxF64', 'AddU', 'SubU', 'MulU', 'DivU', 'ModU', - 'AddU64', 'SubU64', 'MulU64', 'DivU64', 'ModU64', 'EqI', - 'LeI', 'LtI', 'EqI64', 'LeI64', 'LtI64', 'EqF64', - 'LeF64', 'LtF64', 'LeU', 'LtU', 'LeU64', 'LtU64', - 'EqEnum', 'LeEnum', 'LtEnum', 'EqCh', 'LeCh', 'LtCh', - 'EqB', 'LeB', 'LtB', 'EqRef', 'EqProc', 'EqUntracedRef', - 'LePtr', 'LtPtr', 'EqCString', 'Xor', 'UnaryMinusI', 'UnaryMinusI64', - 'AbsI', 'AbsI64', 'Not', 'UnaryPlusI', 'BitnotI', 'UnaryPlusI64', - 'BitnotI64', 'UnaryPlusF64', 'UnaryMinusF64', 'AbsF64', 'Ze8ToI', 'Ze8ToI64', - 'Ze16ToI', 'Ze16ToI64', 'Ze32ToI64', 'ZeIToI64', 'ToU8', 'ToU16', - 'ToU32', 'ToFloat', 'ToBiggestFloat', 'ToInt', 'ToBiggestInt', 'CharToStr', - 'BoolToStr', 'IntToStr', 'Int64ToStr', 'FloatToStr', 'CStrToStr', 'StrToStr', - 'EnumToStr', 'And', 'Or', 'EqStr', 'LeStr', 'LtStr', - 'EqSet', 'LeSet', 'LtSet', 'MulSet', 'PlusSet', 'MinusSet', - 'SymDiffSet', 'ConStrStr', 'ConArrArr', 'ConArrT', 'ConTArr', 'ConTT', - 'Slice', 'AppendStrCh', 'AppendStrStr', 'AppendSeqElem', 'AppendSeqSeq', 'InRange', - 'InSet', 'Asgn', 'Repr', 'Exit', 'SetLengthStr', 'SetLengthSeq', + 'Echo', 'Succ', 'Pred', 'Inc', 'Dec', 'Ord', + 'New', 'NewFinalize', 'NewSeq', 'RegisterFinalizer', 'LengthOpenArray', 'LengthStr', + 'LengthArray', 'LengthSeq', 'Incl', 'Excl', 'Card', 'Chr', + 'GCref', 'GCunref', 'AddI', 'SubI', 'MulI', 'DivI', + 'ModI', 'AddI64', 'SubI64', 'MulI64', 'DivI64', 'ModI64', + 'ShrI', 'ShlI', 'BitandI', 'BitorI', 'BitxorI', 'MinI', + 'MaxI', 'ShrI64', 'ShlI64', 'BitandI64', 'BitorI64', 'BitxorI64', + 'MinI64', 'MaxI64', 'AddF64', 'SubF64', 'MulF64', 'DivF64', + 'MinF64', 'MaxF64', 'AddU', 'SubU', 'MulU', 'DivU', + 'ModU', 'AddU64', 'SubU64', 'MulU64', 'DivU64', 'ModU64', + 'EqI', 'LeI', 'LtI', 'EqI64', 'LeI64', 'LtI64', + 'EqF64', 'LeF64', 'LtF64', 'LeU', 'LtU', 'LeU64', + 'LtU64', 'EqEnum', 'LeEnum', 'LtEnum', 'EqCh', 'LeCh', + 'LtCh', 'EqB', 'LeB', 'LtB', 'EqRef', 'EqProc', + 'EqUntracedRef', 'LePtr', 'LtPtr', 'EqCString', 'Xor', 'UnaryMinusI', + 'UnaryMinusI64', 'AbsI', 'AbsI64', 'Not', 'UnaryPlusI', 'BitnotI', + 'UnaryPlusI64', 'BitnotI64', 'UnaryPlusF64', 'UnaryMinusF64', 'AbsF64', 'Ze8ToI', + 'Ze8ToI64', 'Ze16ToI', 'Ze16ToI64', 'Ze32ToI64', 'ZeIToI64', 'ToU8', + 'ToU16', 'ToU32', 'ToFloat', 'ToBiggestFloat', 'ToInt', 'ToBiggestInt', + 'CharToStr', 'BoolToStr', 'IntToStr', 'Int64ToStr', 'FloatToStr', 'CStrToStr', + 'StrToStr', 'EnumToStr', 'And', 'Or', 'EqStr', 'LeStr', + 'LtStr', 'EqSet', 'LeSet', 'LtSet', 'MulSet', 'PlusSet', + 'MinusSet', 'SymDiffSet', 'ConStrStr', 'ConArrArr', 'ConArrT', 'ConTArr', + 'ConTT', 'Slice', 'AppendStrCh', 'AppendStrStr', 'AppendSeqElem', 'AppendSeqSeq', + 'InRange', 'InSet', 'Repr', 'Exit', 'SetLengthStr', 'SetLengthSeq', 'Assert', 'Swap', 'IsNil', 'ArrToSeq', 'CopyStr', 'CopyStrLast', 'NewString', 'Array', 'OpenArray', 'Range', 'Set', 'Seq', - 'Int', 'Int8', 'Int16', 'Int32', 'Int64', 'Float', - 'Float32', 'Float64', 'Bool', 'Char', 'String', 'Cstring', - 'Pointer', 'AnyEnum', 'EmptySet', 'IntSetBaseType', 'Nil', 'IsMainModule', + 'Ordinal', 'Int', 'Int8', 'Int16', 'Int32', 'Int64', + 'Float', 'Float32', 'Float64', 'Bool', 'Char', 'String', + 'Cstring', 'Pointer', 'EmptySet', 'IntSetBaseType', 'Nil', 'IsMainModule', 'CompileDate', 'CompileTime', 'NimrodVersion', 'NimrodMajor', 'NimrodMinor', 'NimrodPatch', 'CpuEndian', 'HostOS', 'HostCPU', 'NaN', 'Inf', 'NegInf', 'NLen', 'NChild', 'NSetChild', 'NAdd', 'NAddMultiple', 'NDel', |