Skip to content

Latest commit

 

History

History
 
 

grammar

Folders and files

NameName
Last commit message
Last commit date

parent directory

..
 
 
 
 
 
 
 
 
 
 

SLQ Grammar

The query language used by sq is formally known as SLQ. The grammar is defined in SLQ.g4, which is an ANTLR4 grammar.

There's a bunch of valid sample input in the testdata dir.

The antlr4 tool generates the parser / lexer files from the grammar. Being that antlr4 is Java-based, Java must be installed to regenerate from the grammar. The process is encapsulated in generate.sh (or execute go generate ./...).

The generated .go files ultimately end up in package libsq/ast/internal/slq. Files in this directory should not be directly edited.

The libsq/ast.Parse function takes a SLQ input string and returns an *ast.AST. The entrypoint that accepts the SLQ string is libsq.ExecuteSLQ, which ultimately invokes ast.Parse.

Working with the grammar

You probably should install the antlr tools.

pip install antlr4-tools

You may also find antlr4ts useful.

npm install antlr4ts

And there are various IDE plugins available.

In particular, note the VS Code extension.