diff options
Diffstat (limited to 'data/ast.yml')
-rwxr-xr-x | data/ast.yml | 275 |
1 files changed, 0 insertions, 275 deletions
diff --git a/data/ast.yml b/data/ast.yml deleted file mode 100755 index 805b5dc68..000000000 --- a/data/ast.yml +++ /dev/null @@ -1,275 +0,0 @@ -# -# -# The Nimrod Compiler -# (c) Copyright 2009 Andreas Rumpf -# -# See the file "copying.txt", included in this -# distribution, for details about the copyright. -# - -{ -'SymFlag': [ # already 29 flags! - 'sfUsed', # read access of sym (for warnings) or simply used - 'sfStar', # symbol has * visibility - 'sfMinus', # symbol has - visibility - 'sfInInterface', # symbol is in interface section declared - 'sfFromGeneric', # symbol is instantiation of a generic; this is needed - # for symbol file generation; such symbols should always - # be written into the ROD file - 'sfGlobal', # symbol is at global scope - - 'sfForward', # symbol is forward directed - 'sfImportc', # symbol is external; imported - 'sfExportc', # symbol is exported (under a specified name) - 'sfVolatile', # variable is volatile - 'sfRegister', # variable should be placed in a register - 'sfPure', # object is "pure" that means it has no type-information - - 'sfResult', # variable is 'result' in proc - 'sfNoSideEffect', # proc has no side effects - 'sfSideEffect', # proc may have side effects; cannot prove it has none - 'sfMainModule', # module is the main module - 'sfSystemModule', # module is the system module - 'sfNoReturn', # proc never returns (an exit proc) - 'sfAddrTaken', # the variable's address is taken (ex- or implicitely) - 'sfCompilerProc', # proc is a compiler proc, that is a C proc that is - # needed for the code generator - 'sfCppMethod', # proc is a C++ method (not implemented yet) - 'sfDiscriminant', # field is a discriminant in a record/object - 'sfDeprecated', # symbol is deprecated - 'sfInClosure', # variable is accessed by a closure - 'sfTypeCheck', # wether macro parameters should be type checked - 'sfCompileTime', # proc can be evaluated at compile time - 'sfThreadVar', # variable is a thread variable - 'sfMerge', # proc can be merged with itself - 'sfDeadCodeElim', # dead code elimination for the module is turned on - 'sfBorrow' # proc is borrowed -], - -'TypeFlag': [ - 'tfVarargs', # procedure has C styled varargs - 'tfNoSideEffect', # procedure type does not allow side effects - 'tfFinal', # is the object final? - 'tfAcyclic', # type is acyclic (for GC optimization) - 'tfEnumHasWholes' # enum cannot be mapped into a range -], - -'TypeKind': [ # order is important! - # Don't forget to change hti.nim if you make a change here - 'tyNone', 'tyBool', 'tyChar', - 'tyEmpty', 'tyArrayConstr', 'tyNil', 'tyExpr', 'tyStmt', 'tyTypeDesc', - 'tyGenericInvokation', # ``T[a, b]`` for types to invoke - 'tyGenericBody', # ``T[a, b, body]`` last parameter is the body - 'tyGenericInst', # ``T[a, b, realInstance]`` instantiated generic type - 'tyGenericParam', # ``a`` in the example - 'tyDistinct', - 'tyEnum', - 'tyOrdinal', - 'tyArray', - 'tyObject', - 'tyTuple', - 'tySet', - 'tyRange', - 'tyPtr', 'tyRef', - 'tyVar', - 'tySequence', - 'tyProc', - 'tyPointer', 'tyOpenArray', - 'tyString', 'tyCString', 'tyForward', - # numerical types: - 'tyInt', 'tyInt8', 'tyInt16', 'tyInt32', 'tyInt64', # signed integers - 'tyFloat', 'tyFloat32', 'tyFloat64', 'tyFloat128' -], - -'NodeFlag': [ # keep this number under 16 for performance reasons! - 'nfNone', - 'nfBase2', # nfBase10 is default, so not needed - 'nfBase8', - 'nfBase16', - 'nfAllConst', # used to mark complex expressions constant - 'nfTransf', # node has been transformed - 'nfSem', # node has been checked for semantics -], - -'NodeKind': [ # these are pure nodes - # order is extremely important, because ranges are used to check whether - # a node belongs to a certain class - 'nkNone', # unknown node kind: indicates an error - - # Expressions: - # Atoms: - 'nkEmpty', # the node is empty - 'nkIdent', # node is an identifier - 'nkSym', # node is a symbol - 'nkType', # node is used for its typ field - - 'nkCharLit', # a character literal '' - - 'nkIntLit', # an integer literal - 'nkInt8Lit', - 'nkInt16Lit', - 'nkInt32Lit', - 'nkInt64Lit', - 'nkFloatLit', # a floating point literal - 'nkFloat32Lit', - 'nkFloat64Lit', - 'nkStrLit', # a string literal "" - 'nkRStrLit', # a raw string literal r"" - 'nkTripleStrLit', # a triple string literal """ - 'nkMetaNode', # difficult to explan; represents itself - # (used for macros) - 'nkNilLit', # the nil literal - # end of atoms - 'nkDotCall', # used to temporarily flag a nkCall node; this is used - # for transforming ``s.len`` to ``len(s)`` - 'nkCommand', # a call like ``p 2, 4`` without parenthesis - 'nkCall', # a call like p(x, y) or an operation like +(a, b) - 'nkCallStrLit', # a call with a string literal - # x"abc" has two sons: nkIdent, nkRStrLit - # x"""abc""" has two sons: nkIdent, nkTripleStrLit - 'nkExprEqExpr', # a named parameter with equals: ''expr = expr'' - 'nkExprColonExpr', # a named parameter with colon: ''expr: expr'' - 'nkIdentDefs', # a definition like `a, b: typeDesc = expr` - # either typeDesc or expr may be nil; used in - # formal parameters, var statements, etc. - 'nkVarTuple', # a ``var (a, b) = expr`` construct - 'nkInfix', # a call like (a + b) - 'nkPrefix', # a call like !a - 'nkPostfix', # something like a! (also used for visibility) - 'nkPar', # syntactic (); may be a tuple constructor - 'nkCurly', # syntactic {} - 'nkBracket', # syntactic [] - 'nkBracketExpr', # an expression like a[i..j, k] - 'nkPragmaExpr', # an expression like a{.pragmas.} - 'nkRange', # an expression like i..j - 'nkDotExpr', # a.b - 'nkCheckedFieldExpr', # a.b, but b is a field that needs to be checked - 'nkDerefExpr', # a^ - 'nkIfExpr', # if as an expression - 'nkElifExpr', - 'nkElseExpr', - 'nkLambda', # lambda expression - 'nkAccQuoted', # `a` as a node - - 'nkTableConstr', # a table constructor {expr: expr} - 'nkQualified', # describes a.b for qualified identifiers - 'nkBind', # ``bind expr`` node - 'nkSymChoice', # symbol choice node - 'nkHiddenStdConv', # an implicit standard type conversion - 'nkHiddenSubConv', # an implicit type conversion from a subtype - # to a supertype - 'nkHiddenCallConv', # an implicit type conversion via a type converter - 'nkConv', # a type conversion - 'nkCast', # a type cast - 'nkAddr', # a addr expression - 'nkHiddenAddr', # implicit address operator - 'nkHiddenDeref', # implicit ^ operator - 'nkObjDownConv', # down conversion between object types - 'nkObjUpConv', # up conversion between object types - 'nkChckRangeF', # range check for floats - 'nkChckRange64', # range check for 64 bit ints - 'nkChckRange', # range check for ints - 'nkStringToCString', # string to cstring - 'nkCStringToString', # cstring to string - 'nkPassAsOpenArray', # thing is passed as an open array - # end of expressions - - 'nkAsgn', # a = b - 'nkFastAsgn', # internal node for a fast ``a = b`` (no string copy) - 'nkGenericParams', # generic parameters - 'nkFormalParams', # formal parameters - 'nkOfInherit', # inherited from symbol - - 'nkModule', # the syntax tree of a module - 'nkProcDef', # a proc - 'nkMethodDef', # a method - 'nkConverterDef', # a converter - 'nkMacroDef', # a macro - 'nkTemplateDef', # a template - 'nkIteratorDef', # an iterator - - 'nkOfBranch', # used inside case statements for (cond, action)-pairs - 'nkElifBranch', # used in if statements - 'nkExceptBranch', # an except section - 'nkElse', # an else part - 'nkMacroStmt', # a macro statement - 'nkAsmStmt', # an assembler block - 'nkPragma', # a pragma statement - 'nkIfStmt', # an if statement - 'nkWhenStmt', # a when statement - 'nkForStmt', # a for statement - 'nkWhileStmt', # a while statement - 'nkCaseStmt', # a case statement - 'nkVarSection', # a var section - 'nkConstSection', # a const section - 'nkConstDef', # a const definition - 'nkTypeSection', # a type section (consists of type definitions) - 'nkTypeDef', # a type definition - 'nkYieldStmt', # the yield statement as a tree - 'nkTryStmt', # a try statement - 'nkFinally', # a finally section - 'nkRaiseStmt', # a raise statement - 'nkReturnStmt', # a return statement - 'nkBreakStmt', # a break statement - 'nkContinueStmt', # a continue statement - 'nkBlockStmt', # a block statement - 'nkDiscardStmt', # a discard statement - 'nkStmtList', # a list of statements - 'nkImportStmt', # an import statement - 'nkFromStmt', # a from * import statement - 'nkIncludeStmt', # an include statement - 'nkCommentStmt', # a comment statement - 'nkStmtListExpr', # a statement list followed by an expr; this is used - # to allow powerful multi-line templates - 'nkBlockExpr', # a statement block ending in an expr; this is used - # to allowe powerful multi-line templates that open a - # temporary scope - 'nkStmtListType', # a statement list ending in a type; for macros - 'nkBlockType', # a statement block ending in a type; for macros - - # types as syntactic trees: - 'nkTypeOfExpr', - 'nkObjectTy', - 'nkTupleTy', - 'nkRecList', # list of object parts - 'nkRecCase', # case section of object - 'nkRecWhen', # when section of object - 'nkRefTy', - 'nkPtrTy', - 'nkVarTy', - 'nkDistinctTy', # distinct type - 'nkProcTy', - 'nkEnumTy', - 'nkEnumFieldDef', # `ident = expr` in an enumeration - 'nkReturnToken', # token used for interpretation -], - -'SymKind': [ - # the different symbols (start with the prefix sk); - # order is important for the documentation generator! - 'skUnknown', # unknown symbol: used for parsing assembler blocks - # and first phase symbol lookup in generics - 'skConditional', # symbol for the preprocessor (may become obsolete) - 'skDynLib', # symbol represents a dynamic library; this is used - # internally; it does not exist in Nimrod code - 'skParam', # a parameter - 'skGenericParam', # a generic parameter; eq in ``proc x[eq=`==`]()`` - 'skTemp', # a temporary variable (introduced by compiler) - 'skType', # a type - 'skConst', # a constant - 'skVar', # a variable - 'skProc', # a proc - 'skMethod', # a method - 'skIterator', # an iterator - 'skConverter', # a type converter - 'skMacro', # a macro - 'skTemplate', # a template - 'skField', # a field in a record or object - 'skEnumField', # an identifier in an enum - 'skForVar', # a for loop variable - 'skModule', # module identifier - 'skLabel', # a label (for block statement) - 'skStub' # symbol is a stub and not yet loaded from the ROD - # file (it is loaded on demand, which may mean: never) -] -} |