nocturne 0.0.1

Code analyzer
Documentation

nocturne

A language-agnostic code analysis library that provides LSP-like functionality without the LSP protocol.

Overview

nocturne allows you to analyze source code by providing it as a string and performing various operations similar to what Language Server Protocols (LSPs) do, such as:

  • Diagnostics: Parse code and find syntax errors
  • Symbol extraction: Find all functions, structs, types, etc. with full signatures
  • Symbol lookup: Find symbols at specific positions
  • Completions: Get completion suggestions
  • Formatting: Validate and format code

Rust Support:

  • Hover information
  • Type inference
  • Go to definition
  • Find references
  • Signature help

Supported Languages

  • Rust: Uses rust-analyzer's syntax parser (ra_ap_syntax) for robust parsing and analysis

Usage

use nocturne::{nocturne, Position};
use nocturne::rust::Rustnocturne;

fn main() {
    let nocturne = Rustnocturne::new();

    // Parse and check for errors
    let source = r#"
        fn main() {
            println!("Hello, world!");
        }
    "#;

    let diagnostics = nocturne.diagnostics(source);
    if diagnostics.is_empty() {
        println!("No errors!");
    }

    // Find all symbols
    let symbols = nocturne.symbols(source).unwrap();
    for symbol in symbols {
        println!("{:?}: {}", symbol.kind, symbol.name);
    }

    // Find symbol at a specific position
    let position = Position { line: 2, column: 12 };
    if let Some(symbol) = nocturne.symbol_at_position(source, position).unwrap() {
        println!("Found: {}", symbol.name);
    }
}

Running Examples

cargo run --example basic

Running Tests

cargo test -p nocturne