Skip to content
/ Symplex Public

A Symbolic Code Algebra+Calculus system for VS Code

License

Notifications You must be signed in to change notification settings

zalo/Symplex

Repository files navigation

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!

Extremum Demo

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

LaTeX Demo

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.