Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Support transformations in the DSL #110

Open
countvajhula opened this issue Mar 31, 2023 · 0 comments
Open

Support transformations in the DSL #110

countvajhula opened this issue Mar 31, 2023 · 0 comments

Comments

@countvajhula
Copy link
Collaborator

Currently, the Symex DSL only has support for motions. We can perform transformations as side effects in traversals (via e.g. symex--do-while-traversing) but these side effects are performed at every step of the traversal and cannot be made more fine-grained. We'd like to perform operations in a traversal program at arbitrary points in the traversal.

This will likely involve adding a small set of core transformation primitives to the DSL -- like delete and paste -- where the implementation of these primitives themselves would be done for Lisp and Tree-Sitter separately. In addition, we will likely need to fine tune the contract between the DSL layer and the primitives layer to keep each operation contained and tractable.

The advantage of expressing transformations in the DSL is that, with only a few primitives, it could be possible to implement a large number of features, allowing us to reuse work across Lisp and Tree Sitter languages without requiring custom implementations for every new feature. And also, the ability to express the algorithm using a high level DSL (i.e. Symex rather than Lisp) would make writing such features more accessible to users and library authors.

@countvajhula countvajhula converted this from a draft issue Mar 31, 2023
@countvajhula countvajhula moved this to In Progress in Symex 2.0 Mar 31, 2023
@countvajhula countvajhula moved this from In Progress to Done in Symex 2.0 Apr 12, 2023
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
Status: Done
Development

No branches or pull requests

1 participant