Skip to content

Latest commit

 

History

History
175 lines (126 loc) · 6.12 KB

README.md

File metadata and controls

175 lines (126 loc) · 6.12 KB

JSL Language

abstract:item type="item" {
    size 0.2 1 3
    model "madel/cube.obj"
    texture "texture/missing.png"
    material "material/missing.mtl"
    pointlessProp "i am prop"
    transform {
        1 0 0 0
        0 1 0 0
        0 0 1 0
        0 0 0 1
    }
    glow on
}

override abstract:item {
    override model "model/cube.obj"
}

override abstract:item {
    delete pointlessProp
}

armor inherit=abstract:item type="pickup" interactable

Design

Based on SDLang and partially KDL out of need for new features.

JSL takes SDLang's base specification and adds on top of it without loosing support for most of files used, while at the same time drawing inspiration from KDL's features, like /- comments and allowing comments after line escaping with \.

New features added by JSL (might not be exhaustive list):

  • spec Automatic truthfulness of properties (node property = node property=true).
  • spec Automatic falseness of properties (node !property = node property=false).
  • spec Literal strings (node prop=literal:string = node prop="literal:string").
  • spec More escape sequences (contains all escapes supported by D).
  • spec Node /- comments.
  • spec Comments after line break with \ are allowed (even in strings).
  • spec Nesting multiline comments with /+ comment +/ (/* comment */ comments are not nesting).
  • spec New date/time types (including ISO standard).
  • spec Exponential numbers.

Implementations

Since JSL is based on both SDLang and KDL v1, which is itself based on SDLang, JSL can be partially used with any of SDLang's or KDL's tooling.

For now there will be lists of forks of SDLang's and KDL's implementations and editor support with indication from which language it came from. Please note that since JSL is intended to be compatible with SDLang, SDLang's tooling is more preferred, until there are more "native" JSL implementations.

TLDR:

  • Everything under Forks might not parse JSL files.
  • SDLang based forks will parse JSL better.
  • There are more KDL based forks, but they support way less features.

JSL

WIP

Forks

SDLang based:

KDL based:

Editor Support

JSL

Forks

SDLang based:

KDL based:

Overview

Basics

Literals

Misc

FAQ

JSL name?

It's just something that was available, there's no meaning behind it.

Why another language (14? Ridiculous!)?

See next answer.

Why not SDLang or KDL?

KDL is a very good and very supported language, but it made too many modifications to original SDLang specification.

SDLang, however, is very fitting for almost any needs, but! There are certain features that SDLang is missing because of strictness it decided to enforce. JSL simplifies some of those features and adds new ones.

For new features that JSL adds see the design part of readme.

JSL is a just an extension to SDLang and JSL tools will be able to be used with SDLang without any problem.

YAML?

Not flexible enough.

JSON?

Not intended for humans.

TOML?

It's great, but it has same problems as good old INI.

XML?

Have you ever seen HTML files?

License

Creative Commons License
This work is licensed under a Creative Commons Attribution-ShareAlike 4.0 International License.

This license applies to the text and assets in this repository. Implementations of this specification are not "derivative works", and thus are not bound by the restrictions of CC-BY-SA.