Report a bug
If you spot a problem with this page, click here to create a Bugzilla issue.
Improve this page
Quickly fork, edit online, and submit a pull request for this page.
Requires a signed-in GitHub account. This works well for small changes.
If you'd like to make larger changes you may want to consider using
a local clone.
ddmd.dinterpret
Compiler implementation of the
D programming language.
Authors:
License:
Source: dinterpret.d
- struct
CtfeStack
; - The values of all CTFE variables
- struct
CompiledCtfeFunction
; - CTFE-object code for a single functionCurrently only counts the number of local variables in the function
- void
ctfeCompile
(FuncDeclarationfd
); - Compile this function for CTFE. At present, this merely allocates variables.
- Expression
ctfeInterpret
(Expressione
); - Entry point for CTFE. A compile-time result is required. Give an error if not possible.
e
must be semantically valid expression. In other words, it should not contain any ErrorExps in it. But, CTFE interpretation will cross over functions and may invoke a function that contains ErrorStatement in its body. If that, the "CTFE failed because of previous errors" error is raised. - Expression
interpret
(FuncDeclarationfd
, InterState*istate
, Expressions*arguments
, Expressionthisarg
); - Attempt to
interpret
a function given thearguments
.Input:
Return result expression if successful, TOKcantexp if not, or CTFEExp if function returned void.istate
state for calling function (NULL if none)arguments
functionarguments
thisarg
'this', if a needThis() function, NULL if not. - Expression
interpret
(Statements
, InterState*istate
); - Interpret the statement.Returns:NULL continue to next statement TOKcantexp cannot
interpret
statement at compile time !NULL expression from return statement, or thrown exception - Expression
interpret_length
(InterState*istate
, Expressionearg
); - Special Functions
- bool
hasValue
(VarDeclarationvd
); - CTFE Sanity Checks
Copyright © 1999-2017 by the D Language Foundation | Page generated by
Ddoc on (no date time)