Jump to content

Category:Sparkling: Difference between revisions

no edit summary
(improved English; clarifications, corrections)
No edit summary
Line 42:
 
<pre>
$ spn -r hello.spn
Hello, world!
14 characters written
Line 59:
* String manipulation
* Array and associative array manipulation
* Floating-point, integral and integralcomplex mathematical functions
* QueryingShell and environment access (including system date and time)
* Shell and environment access
 
== Implementation ==
 
Sparkling is an interpreted language, featuring a simple two-pass compiler and a register-based virtual machine. The compiler consists of a purely recursive descent parser and an almost naive (overwhelmingly non-optimizing) code generator, which directly generates bytecode for the VM. The compiler and the parser communicate using a right-leaning, binary abstract syntax tree (AST). The libraryREPL also contains a disassembler which can convert bytecode into an assembly-like, human-readable textual representation.
 
Despite the fact that the reference implementation imposes an interpreted nature on the language, there are plans aiming to create a just-in-time (JIT) compiler back-end that produces native executable code (rather than bytecode targeting the VM). The implementation of the REPL also features a "compiler" option (-c), which converts Sparkling source files into bytecode files. The format of the bytecode is not portable, so such an "object file" runs only on the platform/architecture it has been compiled on. This is done like so for simplicity and performance reasons: for example, floating-point and integer constants are stored in the bytecode as they are represented in memory, so that there needn't be any - potentially expensive and/or inconvenient to implement - runtime conversions.
 
Although the primary goal of Sparkling is to be used as an extension language, there is a separate, stand-alone program that comes with the source as well. It contains an interactive interpreter (REPL, read-eval-print loop), a compiler and a disassembler.
Line 81 ⟶ 80:
== Debugging ==
 
Apart from the already mentioned disassembler, the virtual machine provides a basic stack tracing feature, which can be accessed using the C API. Efforts are being made for extending the bytecode format with basic debug
information (filename and line numbers).
Anonymous user
Cookies help us deliver our services. By using our services, you agree to our use of cookies.