Jevko (jeff-ko /ˈd͡ʒef.kəʊ/) is a versatile minimal syntax for encoding tree-structured information as human- and machine-friendly text.
It can be used as a building block for simple formats, languages, and notations across a variety of domains.
Jevko is for you if you are a researcher, hacker, minimalist, language or format designer, or are just looking for an extremely minimal and simple text-based representation for trees.
Here is how Jevko compares to the most popular syntaxes often used for representing trees as text.
text
and
[
square brackets]
Plain Jevko is just Unicode text in which nested square brackets create a hierarchical tree structure. In addition, there is syntax to escape the brackets, so they can also be part of text, and some syntax sugar useful when we don’t want to worry about escaping. That’s it!
Jevko simply captures the concept of a generic tree of text in the most minimal reasonable way. The only significant characters in Jevko are two square brackets and one escape character: the backtick.
To treat a square bracket as text, precede it with the backtick.
`[
|
[
|
|
`]
|
]
|
|
``
|
`
|
Alternatively text can be fenced, like in Markdown, in which case no escaping is needed at all.
[```' this text is fenced it can contain [`] without escaping '```]
Jevko is completely whitespace-agnostic: it treats whitespace as any other character. It doesn’t ignore it or use it as a separator or anything like that. All whitespace is preserved in the tree verbatim.
all␣whitespace␣is␣preserved␣[⏎ ␣␣no whitespace␣is␣lost⏎ ]
Due to its simplicity and generic nature, Jevko is the perfect building block for formats that work well not only for representing data, but also for text markup. We can even do both in one format, as Jevko Data And Markup Language demonstrates.
Jevko can be thought of as a very stripped down XML where we only have:
All in an extremely lean syntax.
In Jevko the root element is implicit.
Jevko can be thought of as a minimal version of S-expressions where we only have:
However:
Jevko strings (text nodes) can span multiple lines and are not quoted (but can be fenced like in Markdown to include square brackets without having to escape them).
Instead of round brackets Jevko uses square brackets to delimit the lists (subjevkos).
Jevko can be thought of as simplified JSON where we only have:
However Jevko strings (text nodes) can span multiple lines and are not quoted (but can be fenced like in Markdown to include square brackets without having to escape them).
Jevko is designed to be so simple that implementing a basic Jevko parser by an experienced programmer is a matter of a few hours at most. Thanks to this, it can be introduced very quickly in any environment and programming language.
Jevko Vision: Total Intercommunication Of All Software Systems describes the historical motivation and the possible futures for Jevko, from ridiculously ambitious to more down-to-earth.
The Jevko Syntax: Standard Grammar Specification is a stable formal specification of the basic syntax. No breaking changes shall be introduced to this specification.
The Jevko interactive railroad diagrams complement the specification, together providing a convenient reference for implementing parsers and other Jevko processors.
The Jevko Syntax: Extensions Specification is a formal specification of two backwards-compatible extensions to Jevko. These extensions introduce fenced text a’la Markdown and tagged text a’la heredocs.
jevko.js is the official reference implementation of Jevko in JavaScript.
You may also want to have a look at the current and proposed research projects based on Jevko. Some of these need support and funding!
One of these projects is Jevko Data And Markup Language (JDAML), an experimental XML-like format built on Jevko that works equally well for data interchange, configuration, and text markup.
There are more resources available about Jevko, such as examples, user implementations, projects and formats based on Jevko, articles about Jevko, Jevko-based software, syntax highlighting for code editors, social media, and more.
The name Jevko is pronounced jeff-ko /ˈd͡ʒef.kəʊ/. It is derived from Polish drzewko /ˈdʐɛf.kɔ/, meaning small tree.
Jevko is intended as a universal, free and open syntax, to be used without restriction in any software, for any purpose.
For legal purposes, if not specified otherwise, official implementations related to Jevko are under the MIT License.
The content of this site and official Jevko-related materials is licensed under CC BY 4.0.
In short, these licenses allow you to freely use the materials, also for commercial purposes, provided that you include information about the author and the license. The author gives no warranties and is not responsible for the results.
Copyright (c) 2021-2024 Jevko.org
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:
The above copyright notice and this permission notice shall be included in all
copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
SOFTWARE.
Jevko is a part of TAO, a project to cultivate simplicity in software.
You can support Jevko in various ways:
If you think that Jevko is a valuable project and you are willing and able to support it, you can do so by clicking below:
I appreciate all support!
Thank you,
— Darius J Chuck
Thank you for visiting.