Top Loop
Storm is able to provide interactive top-loops (sometimes called REPL for Read Eval Print Loop) for
experimenting with programming languages. Whenever Storm is asked to provide an interactive
top-loop, it looks for a function core.<ext>.repl() that is assumed to create an instance of a
lang.Repl class that provides the functionality. Storm then handles input and output on
behalf of the language, and calls the appropriate members of the Repl class. The Repl class has
the following members:
-
greetCalled to print any greeting messages. Only called if executed interactively.
-
eval(Str)Called when a line of input has been received from the user. Expected to evaluate the code and print the result as is appropriate for the language. If the input is incomplete, it should return
false. This causes Storm to collect more input and callevalagain with the new input appended to the old input. -
exitCalled by Storm after each call to
evalto determine if the top loop is ready to exit.
The existence of this interface means that it is possible to write other front-ends that provides interactive execution. For example, it is possible to implement a GUI that submits input to the appropriate top-loop.
