An open API service indexing awesome lists of open source software.

https://github.com/redstonewizard08/dpscript

A programming language for datapacks, inspired by SethBling's CBScript.
https://github.com/redstonewizard08/dpscript

Last synced: 6 months ago
JSON representation

A programming language for datapacks, inspired by SethBling's CBScript.

Awesome Lists containing this project

README

          

# DPScript

DPScript is a transpiled programming language to aid in Datapack development, inspired by CBScript.

# Features

- Extremely comfortable syntax
- A friendly and familiar syntax
- An IR form to allow other syntaxes to grow on top of DPScript's framework
- Advanced conditionals
- Scoreboard & store manipulation
- A batteries-included standard library (WIP)
- Full array support
- Support for loops
- Compile-time constants
- Easy text components and NBT manipulation
- Functions & subroutines
- Tags
- Init & Tick blocks
- Modules
- Imports & Exports
- A language server for auto-completion (Coming Soon!)
- Support for your favorite IDEs (WIP)
- A fully-fledged package registry and build system (Coming Soon!)
- And much more!

DPScript features a fully custom tokenizer, lexer, validator, and AST to provide an extremely comfortable
syntax while being very stable. By merging all imported files into a single AST it can provide the best
error detection and validation possible. Don't worry anymore about strange issues when making datapacks!

## TODO List

### Core

- [x] Tokenizer
- [x] AST
- [x] Lexer
- [x] AST Validator
- [x] IR (DPIR)
- [x] Codegen
- [x] Build System

### Language Features

- [x] Functions
- [x] Variables
- [x] Compile-time constants
- [x] Imports
- [x] Exports
- [x] If/else statements
- [x] Subroutines & goto
- [x] `for entity in selector` loops
- [ ] `for ... in ...` loops
- [ ] `for ... in [0..3]` loop unrolling

### QoL

- [x] Syntax Highlighting
- [x] IR Syntax Highlighting
- [ ] More CLI commands and options
- [ ] Language server
- [ ] Code formatter

### Future Plans

- [ ] Package Registry
- [ ] Build system support for the package registry
- [ ] IR-level optimizer