# JSONata language definition

**URL:** <https://discourse.nodered.org/t/jsonata-language-definition/96806>\
**Category:** General\
**Created:** [29 April 2025 13:14 UTC](https://discourse.nodered.org/t/jsonata-language-definition/96806 "2025-04-29T13:14:30Z")\
**Posts on this page:** 5\
**Page:** 1

<div class="post-metadata">

**Author:** ![gregorius](https://sea2.discourse-cdn.com/flex026/user_avatar/discourse.nodered.org/gregorius/32/73816_2.png) [@gregorius](https://discourse.nodered.org/u/gregorius)\
**Post date:** [29 April 2025 13:14 UTC](https://discourse.nodered.org/t/jsonata-language-definition/96806/1 "2025-04-29T13:14:30Z")

</div>

Hi There,

So part of my [Erlang-RED](https://discourse.nodered.org/t/erlang-red-erlang-backed-node-red/96458) project is JSONata - probably a big part.

I had a quick look around and found no Erlang library for implementing JSONata so it's kind of up to me to get something working.

Now where to start? Well a BNF/DSL/LALR/... any language specification that I can throw at a parser generator (i.e. Bison or Yacc). I had a quick look at the [repo](https://github.com/jsonata-js/jsonata) and found the [parser](https://github.com/jsonata-js/jsonata/blob/master/src/parser.js) code but no specification.

Is there anything that might be used as an official specification of the JSONata language?

I assume that no one has an Erlang implementation lying around somewhere? 😉

/cc @andrew-coleman

---

<div class="post-metadata">

**Author:** ![Sean-McG](https://sea2.discourse-cdn.com/flex026/user_avatar/discourse.nodered.org/sean-mcg/32/54677_2.png) [@Sean-McG](https://discourse.nodered.org/u/Sean-McG)\
**Post date:** [29 April 2025 23:08 UTC](https://discourse.nodered.org/t/jsonata-language-definition/96806/2 "2025-04-29T23:08:51Z")

</div>

> [@gregorius](#):
>
> I assume that no one has an Erlang implementation lying around somewhere?

Let me just check, err no sorry 😉

---

<div class="post-metadata">

**Author:** ![bakman2](https://sea2.discourse-cdn.com/flex026/user_avatar/discourse.nodered.org/bakman2/32/6207_2.png) [@bakman2](https://discourse.nodered.org/u/bakman2)\
**Post date:** [30 April 2025 05:08 UTC](https://discourse.nodered.org/t/jsonata-language-definition/96806/3 "2025-04-30T05:08:13Z")

</div>

This sounds like a job for AI. Perhaps you can try to provide the parser code and have it do its thing 😉

---

<div class="post-metadata">

**Author:** ![gregorius](https://sea2.discourse-cdn.com/flex026/user_avatar/discourse.nodered.org/gregorius/32/73816_2.png) [@gregorius](https://discourse.nodered.org/u/gregorius)\
**Post date:** [3 May 2025 17:42 UTC](https://discourse.nodered.org/t/jsonata-language-definition/96806/4 "2025-05-03T17:42:05Z")

</div>

> [@bakman2](#):
>
> This sounds like a job for AI.

You mean Chuck

 ![signal-2025-04-22-175540_002](https://us1.discourse-cdn.com/flex026/uploads/nodered/original/3X/5/1/51b70b984432405246350b906c51e591e90c4c9f.jpeg)

But no, did it using [leex](https://www.erlang.org/doc/apps/parsetools/leex.html) and [yecc](https://www.erlang.org/doc/apps/parsetools/yecc.html) - fun times. Code is over [there](https://github.com/gorenje/erlang-red/tree/main/src).

---

<div class="post-metadata">

**Author:** ![system](https://us1.discourse-cdn.com/flex026/uploads/nodered/original/1X/d073cd938eafa2e558d7c2cd59003b3ef4963033.png) [@system](https://discourse.nodered.org/u/system)\
**Post date:** [17 May 2025 17:42 UTC](https://discourse.nodered.org/t/jsonata-language-definition/96806/5 "2025-05-17T17:42:57Z")

</div>

This topic was automatically closed 14 days after the last reply. New replies are no longer allowed.
