jsonpiler 0.1.5

a Json syntax programming language for Windows
docs.rs failed to build jsonpiler-0.1.5
Please check the build logs for more information.
See Builds for ideas on how to fix a failed build, or Metadata for how to configure docs.rs builds.
If you believe this is docs.rs' fault, open an issue.
Visit the last successful build: jsonpiler-0.7.3

Jsonpiler - JSON Syntax Programming Language

Jsonpiler is a compiler for the JSON Syntax Programming Language.

This program converts a JSON-based program into GNU Assembly, compiles it, and executes the result.

What's New

  • Added CHANGELOG.md to track updates.
  • Objects now preserve insertion order.
  • Object values are now evaluated in insertion order.

CHANGELOG (Markdown)

Prerequisites

Make sure the following tools are installed and available in your PATH environment variable:

  • ld (from MinGW-w64)
  • as (from MinGW-w64)

The following DLLs must be present in C:\Windows\System32\ for the program to work correctly:

  • kernel32.dll
  • user32.dll
  • ucrtbase.dll

Installation & Usage

cargo install jsonpiler
jsonpiler (input_json_file in UTF-8)

Replace (input_json_file) with the actual JSON file you want to compile.

Example

["begin", ["=", "a", "title"], ["message", ["$", "a"], "345"]]

Execution order:

The jsonpiler code consists of a single JSON object.

Expressions inside begin are evaluated sequentially.

The variable "a" is assigned the string "title" using "=".

A message box appears with the title (from variable "a") and the body "345", as specified by "message".

The program returns the integer ID of the pressed button in the message box
(currently only 1 is supported, which corresponds to IDOK in C/C++),
as the final value of the begin block.

Function Documentation

Function Reference (Markdown)

Language Documentation

Language Reference (Markdown)

Execution

graph TD
  A[file.json] --> B{Jsonpiler}
  B -->|Parse| C([AST])
  C -->|Compile| D[file.s]
  D --> |Assembling with GNU AS| E[file.obj]
  E --> |Linking with GNU LD| F[file.exe]
  S[C:\Windows\System32\] --> KERNEL32[kernel32.dll] --> F[file.exe]
  S --> USER32[user32.dll] --> F[file.exe]
  S --> UCRTBASE[ucrtbase.dll] --> F[file.exe]
  F --> Execute[(Execute!)]