Denotational Semantics and a Fast Interpreter for jq

02/21/2023
by   Michael Färber, et al.
0

jq is a widely used tool that provides a programming language to manipulate JSON data. However, its semantics are currently only specified by its implementation, making it difficult to reason about its behaviour. To this end, I provide a syntax and denotational semantics for a subset of the jq language. In particular, the semantics provide a new way to interpret updates. I implement an extended version of the semantics in a novel interpreter for the jq language called jaq. Although jaq uses a significantly simpler approach to execute jq programs than jq, jaq is faster than jq on ten out of thirteen benchmarks.

READ FULL TEXT
research
08/22/2020

Semantics-Guided Synthesis

This paper develops a new framework for program synthesis, called semant...
research
11/30/2018

Parametric Denotational Semantics for Extensible Language Definition and Program Analysis

We present a novel approach to construction of a formal semantics for a ...
research
09/20/2022

A Tool for Describing and Checking Natural Semantics Definitions of Programming Languages

Many universities have courses and projects revolving around compiler or...
research
11/02/2018

Probabilistic Programming with Densities in SlicStan: Efficient, Flexible and Deterministic

Stan is a probabilistic programming language that has been increasingly ...
research
09/20/2017

Context-Updates Analysis and Refinement in Chisel

This paper presents the context-updates synthesis component of Chisel--a...
research
09/29/2020

Implementing Hybrid Semantics: From Functional to Imperative

Hybrid programs combine digital control with differential equations, and...
research
02/15/2021

JEST: N+1-version Differential Testing of Both JavaScript Engines and Specification

Modern programming follows the continuous integration (CI) and continuou...

Please sign up or login with your details

Forgot password? Click here to reset