Jevko

minimal syntax

[#data] [#config] [#markup]
[#more]
[#pronunciation] [#license]

Jevko is a minimal general-purpose syntax.

It can be used as a basic building block for simple and portable formats, languages, and notations in a variety of domains, such as data interchange, configuration, or text markup.

Below are a few examples of Jevko formats in different domains, as compared to known formats.

Data interchange1

XML

<person 
  first-name="John" 
  last-name="Smith"
  is-alive="true"
  age="27"
>
  <address 
    street-address="21 2nd Street" 
    city="New York" 
    state="NY" 
    postal-code="10021-3100" 
  />
  <phone-numbers>
    <phone-number
      type="home"
      number="212 555-1234"
    />
    <phone-number
      type="office"
      number="646 555-4567"
    />
  </phone-numbers>
  <children />
  <spouse xsi:nil="true" />
</person>

JSON

{ 
  "first name": "John",
  "last name": "Smith",
  "is alive": true,
  "age": 27,
  "address": {
    "street address": "21 2nd Street",
    "city": "New York",
    "state": "NY",
    "postal code": "10021-3100"
  },
  "phone numbers": [
    {
      "type": "home",
      "number": "212 555-1234"
    },
    {
      "type": "office",
      "number": "646 555-4567"
    }
  ],
  "children": [],
  "spouse": null 
}
deleted: 25 % (101/412)
changed: 10 % (42/412)

Jevko

first name [John]
last name [Smith]
is alive [true]
age [27]
address [
  street address [21 2nd Street]
  city [New York]
  state [NY]
  postal code [10021-3100]
]
phone numbers [
  [
    type [home]
    number [212 555-1234]
  ]
  [
    type [office]
    number [646 555-4567]
  ]
]
children [seq]
spouse [nil]
Hover or tap on the JSON representation to highlight characters that would have to be deleted or changed to arrive at the Jevko version.

Configuration2

TOML

# last modified 1 April 2001 by John Doe
[owner]
name = "John Doe"
organization = "Acme Widgets Inc."

[database]
# use IP if name resolution is not working
server = "192.0.2.62"
port = 143
file = "payroll.dat"
"select columns" = [
  "name", 
  "address", 
  "phone number"
]

YAML

# last modified 1 April 2001 by John Doe
owner:
  name: John Doe
  organization: Acme Widgets Inc.

database:
  # use IP if name resolution is not working
  server: 192.0.2.62
  port: 143
  file: "payroll.dat"
  select columns:
    - name
    - address
    - phone number

Jevko

last modified 1 April 2001 by John Doe
owner [
  name [John Doe]
  organization [Acme Widgets Inc.]
]
database [
  use IP if name resolution is not working
  server [192.0.2.62]
  port [143]
  file ['payroll.dat']
  select columns [
    [name]
    [address]
    [phone number]
  ]
]

Text markup3

HTML

<html>
  <head>
    <title>This is a title</title>
  </head>
  <body>
    <div>
      <p>Hello world!</p>
      <abbr
        id="anId"
        class="jargon"
        style="color: purple;"
        title="Hypertext Markup Language">
      HTML</abbr>
      <a href="https://www.wikipedia.org/">
        A link to Wikipedia!
      </a>
      <p>
        Oh well, 
        <span lang="fr">c'est la vie</span>, 
        as they say in France.
      </p>
    </div>
  </body>
</html>

Jevko

html [
  head [
    title [This is a title]
  ]
  body [
    div [
      p [Hello world!]
      abbr [
        id=[anId]
        class=[jargon]
        style=[color: purple;]
        title=[Hypertext Markup Language]
      HTML]
      a [href=[https://www.wikipedia.org/]
        A link to Wikipedia!
      ]
      p [
        Oh well, 
        span [lang=[fr]c'est la vie],
        as they say in France.
      ]
    ]
  ]
]

More

Formal specification

The Jevko Syntax: Standard Grammar Specification is a complete, stable formal specification of the basic syntax.

Interactive railroad diagrams

The Jevko interactive railroad diagrams complement the specification, together providing a convenient reference for implementing parsers and other Jevko processors.

Jevko GitHub organization

The Jevko GitHub organization is the official Jevko development zone. There are open-source implementations of various Jevko-related software.

Jevko for hackers

For do-it-yourself-oriented tinkerers, hackers, or minimalists plain Jevko is ready to be used to define custom formats for all kinds of applications that deal with tree-structured information.

Use Jevko today

For solution-oriented users, Jevko formats like those shown above are in development and available to experiment with via the Jevko CLI or the Jevko Interface for Visual Studio Code.

Jevko CLI and Jevko for VS Code

You can try out the formats you see above today with the experimental Jevko Command Line Interface or the Jevko Interface for Visual Studio Code. These can convert Jevko into JSON, HTML, or various XML-based formats. This allows for easy integration with existing applications.

Jevko formats give you the full power of the target format via JSON or XML literals and data-model compatibility. On top of that you get features such as here documents (via the backwards-compatible Jevko syntax extension), extremely lean comments, ability to disable (“comment out”) an entire Jevko subtree by prefixing it with “-”, autotrimmed unquoted strings, or quoted multiline strings.

All this in a very simple human-friendly syntax.

Syntax highlighting

Experimental Jevko syntax highlighting extensions for Visual Studio Code are available for the following formats/file types:

There are also experimental Jevko syntax highlighting definitions for other environments:

News, social media, other resources

Jevko has an official RSS channel that you can subscribe to for latest news.

Alternatively, you can follow Jevko on Mastodon or Twitter.

You can also follow the official Jevko GitHub organization to track the latest developments.

There is also an official Jevko organization on Codeberg and an official /r/jevko subreddit.

Jevko-related resources can also be found at the official Jevko profile on archive.org and the official Jevko YouTube channel.

Etymology and pronunciation

The name Jevko /ˈd͡ʒef.kəʊ/ is derived from Polish drzewko /ˈdʐɛf.kɔ/, meaning small tree.

License

Jevko is intended as a universal syntax, to be used without restriction in any software, for any purpose. It is open and free, along with any syntaxes, formats, and standards based upon it.

For legal purposes, if not specified otherwise, Jevko and related projects are under the MIT License.

Copyright (c) 2021-2023 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.

Thank you for visiting.


Jevko is a part of TAO, a project to cultivate simplicity in software.


Google Translate jevko.org


  1. The data interchange examples shown here are based on an example piece of JSON from Wikipedia.↩︎

  2. The configuration examples shown here are based on an example piece of INI from Wikipedia.↩︎

  3. The text markup examples shown here are based on an example pieces of HTML from Wikipedia.↩︎