A Symbolic CAS that operates directly on Javascript and Python code.
Features
Allows users to highlight blocks of math code and right-click to symbolically integrate, diff, limit, solve, series, and more!

Enables beautiful code-to-LaTeX conversion via the latex() and unevaluated Integral and Derivative functions.

Requirements
Symplex requires that Python and SymPy are installed. SymPy can be installed with pip install SymPy.
Known Issues
- Javascript parsing is somewhat fragile, this is due for a major refactor to better accomodate for the inconsistences in the nodegraph sourceFile output.
- Only variable assignment and basic arithmetic/trigonometric operations on real numbers are supported. No for-Loops, control-statements, etc.
Adding new languages
To add a new language:
- Implement the conversion of a block of that language's code to a SymPy string (
convertToSympy()) inside a new *LANGUAGE*Support.ts file.
- Throughout
extension.ts, add a new case for your language's identifier, calling your convertToSympy() function.
- In
python/symplex.py, add a case for your language's conversion (SymPy supports codegen in many languages already, so check to see if it's already there).
- Add it to the
package.json as well and Test it by building the extension with F5!
Future Work
Add support for
Release Notes
0.0.4 - Add Snippets
Group all Symplex functionality underneath the symplex.Evaluate command. Add snippets which document a few of the SymPy features that Symplex exposes. Also make Python parsing slightly more robust.
0.0.3 - Major Refactor
Allow writing of arbitrary SymPy operations, encapsulate adding support for new languages, and add LaTeX output!
0.0.2 - Python Support
Since SymPy operates natively in Python syntax, it was straight-forward to add basic Python support.
0.0.1 - Proof of Concept
Have proven that the typescript AST tree can be transformed into a SymPy compatible format, and that Python scripts can be invoked to perform arbitrary work for the editor at low-latencies. The infrastructure is ready for massive expansion in capability, once the right UI affordances are found and the Javascript/Typescript parsing code is improved.