-
-
Notifications
You must be signed in to change notification settings - Fork 5
REPL
bizzehdee edited this page Jun 23, 2026
·
4 revisions
The dscript repl command starts an interactive read-eval-print loop backed by a persistent ScriptEngine. Variables, functions, and classes you declare in one line are available in all subsequent lines.
dscript repl
Or via dotnet run:
dotnet run --project DScript.Cli -- repl
DScript 0.1.0 REPL (type .exit to quit, .help for commands)
> var x = 10
> x + 5
15
> function square(n) { return n * n; }
> square(7)
49
> var nums = [1, 2, 3, 4, 5]
> nums.map(n => n * 2)
[ 2, 4, 6, 8, 10 ]
> .exit
bye.
The REPL distinguishes between statements and expressions:
- Lines that begin with
var,let,const,function, orclass, or that end with;, are treated as statements and executed withengine.Execute(). No value is printed. - Everything else is treated as an expression, evaluated with
engine.EvalComplex(), and its result printed (unless the result isundefined).
This means you can omit the trailing semicolon when typing expressions you want to see the value of.
| Command | Description |
|---|---|
.help |
Show the list of REPL commands |
.exit or .quit
|
End the session |
| Ctrl-C or Ctrl-D | End the session (EOF) |
The REPL loads DScript.Extras automatically, so console.log, Math, JSON, and all other standard-library globals are available immediately.
All globals survive across inputs within a single session. You can build up a script incrementally:
> function fib(n) { return n <= 1 ? n : fib(n-1) + fib(n-2); }
> fib(10)
55
> var result = fib(15)
> result
610
Errors are caught and printed to stderr without ending the session:
> undeclaredVariable
Error: 'undeclaredVariable' is not defined
> 1 / 0
Infinity