Skip to content

The language server which provides type checking, autocomplete and other MCP features within code editors for the Quickfall language

Notifications You must be signed in to change notification settings

Quickfall/language-server

Repository files navigation

Quickfall Language Support

A VS Code extension providing language server support and syntax highlighting for the Quickfall programming language (.qf files).

Features

  • Syntax highlighting - full grammar for keywords, types, literals, strings, comments, and operators
  • Diagnostics — error reporting for lexer and parser errors
  • Autocompletion — keywords, built-in types, snippet templates, and in-scope symbols (functions, variables, structs, layouts)
  • Hover information — documentation on hover for keywords, types, functions, variables, and struct/layout fields
  • Language configuration — bracket matching, auto-closing pairs, folding, and indentation rules

Coming Soon (maybe??)

  • Boilerplates with code snippets
  • A full user-installable VSCode extension (including maybe some other IDEs, we'll see)
  • Code examples

Requirements

Getting Started

1. Clone the repository

git clone https://github.com/Quickfall/language-server.git
cd language-server

2. Install dependencies

npm install

3. Build

npm run build

This compiles all TypeScript sources into the out/ directory.

4. Run in VS Code

  1. Open this folder in VS Code.
  2. Press F5 to launch the Extension Development Host.
  3. Open or create a .qf file — the language server will activate automatically.

Watch mode (development)

npm run watch

Recompiles on every file save so you can simply reload the Extension Development Host window (Ctrl+Shift+P → Developer: Reload Window).

Built-in Types

Signed Unsigned Other
s8 u8 ptr
s16 u16 bool
s32 u32 staticstr
s64 u64
s128 u128

Integer literals support type suffixes: 65_s32, 255_u8, 544_u64.

Language Quick Reference

// Function declaration
func add(s32 a, s32 b) s32 {
  ret a + b
}

// External / FFI function
shadowfunc printf(ptr str_ptr) s32

// Variables
var s32 count = 0
static staticstr greeting = "hello"

// Control flow
if(count > 0) {
  // ...
} else {
  // ...
}

for(s32 i = 0, i <= 10, i += 1) {
  // ...
}

while(count > 0) {
  count -= 1
}

// Structs and layouts
struct Point {
  s32 x
  s32 y
}

layout Buffer {
  u8 data
  s32 length
}

Project Structure

├── client/src/extension.ts                 # VS Code extension client
├── src/
│   ├── entry.ts                            # Language server entry point
│   ├── lexer.ts                            # Tokenizer
│   ├── parser.ts                           # Parser → AST
│   ├── ast.ts                              # AST node definitions
│   ├── diagnostics.ts                      # Diagnostic bridge (parse errors → LSP)
│   ├── completion.ts                       # Completion provider
│   └── hover.ts                            # Hover provider
├── syntaxes/quickfall.tmLanguage.json      # TextMate grammar
├── language-configuration.json             # Bracket/folding/indent config
├── package.json
└── tsconfig.json

About

The language server which provides type checking, autocomplete and other MCP features within code editors for the Quickfall language

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published