It’s basically just JSON that can generate itself !
You have inspired me.
I will make JSON with meta-programming
I will call it DyJSON, i.e. “Dynamic JSON” but pronounced “Die, Jason!”
It is JSON with meta-programming and the ability to call C functions from libraries
Example:
# This is a line comment# Put your function definitions up here
(concat str_a str_b: "concat""my-lib.so") # Import a function through a C ABI
(make-person first_name last_name email -> { # Define our own generative func"name": (concat (concat $first_name " ") $last_name),
"email": $email
})
# And then the JSON part which uses them
[
(make-person "Jenny""Craig""jenn.craig.420@hotmail.com"),
(make-person "Parson""Brown" null)
]
As you can see, it is also a LISP to some degree
Is there a need for this? A purpose? No. But some things simply should exist
Thank you for helping bring this language into existence
You have inspired me.
I will make JSON with meta-programming
I will call it DyJSON, i.e. “Dynamic JSON” but pronounced “Die, Jason!”
It is JSON with meta-programming and the ability to call C functions from libraries
Example:
# This is a line comment # Put your function definitions up here (concat str_a str_b: "concat" "my-lib.so") # Import a function through a C ABI (make-person first_name last_name email -> { # Define our own generative func "name": (concat (concat $first_name " ") $last_name), "email": $email }) # And then the JSON part which uses them [ (make-person "Jenny" "Craig" "jenn.craig.420@hotmail.com"), (make-person "Parson" "Brown" null) ]As you can see, it is also a LISP to some degree
Is there a need for this? A purpose? No. But some things simply should exist
Thank you for helping bring this language into existence
I think you’ve just invented Jsonnet, but with C integration.
https://jsonnet.org/
Here is the grammar:
<json> ::= <value> | <fn-def> <json> <value> ::= <object> | <array> | <string> | <number> | <bool> | <fn-def> | <fn-app> | "null" <object> ::= "{" [ <member> { "," <member> } ] "}" <member> ::= <string> ":" <value> <string> ::= "\"" { <char> } "\"" <char> ::= (ASCII other than "\"", "\\", 0-31, 127-159) | (Unicode other than ASCII) | ( "\\" ( "\"" | "\\" | "/" | "b" | "f" | "n" | "r" | "t" | "u" <hex> <hex> <hex> <hex> ) <hex> ::= /A-Fa-f0-9/ <array> ::= "[" [ <value> { "," <value> } ] "]" <number> ::= <integer> [ <fraction> ] [ <exponent> ] <integer> ::= "0" | /[1-9]+/ | "-" <integer> <fractional> ::= "." /[0-9]+/ <exponent> ::= ("E" | "e") [ "-" | "+" ] /[0-9]+/ <bool> ::= "true" | "false" <fn-def> ::= "(" <ident> { <ident> } ("->" <value> | ":" <string> <string>) ")" <ident> ::= <startc> { <identc> } <startc> ::= /A-Za-z_/ or non-ASCII Unicode <identc> ::= <startc> | /[0-9-]/ <fn-app> ::= "(" <ident> { <value> } ")" <var> ::= "$" <ident>