Skip to main content

Compiler

Struct Compiler 

Source
pub struct Compiler { /* private fields */ }
Available on crate feature std only.
Expand description

An external compiler that translates natural-language text into a SPARQL query.

Input bytes are copied to stdin, relying on the pattern’s default input-file operand of -. The external program produces one UTF-8 SPARQL query for an adapter, without Markdown fences or explanatory prose outside the query. Dataset and vocabulary assumptions, and compatibility with the intended adapter’s supported query forms, belong to that program.

This wrapper captures the generated query without parsing or executing it. Use QueryOutput::Captured to retrieve it for an Adapter. Input is consumed from its current position and is not rewound on subsequent executions. Buffering, output routing, cancellation, and current stream-I/O limitations follow crate::programs.

§Example

Compile a request, then pass the captured query to a dataset adapter:

use asimov_runner::{
    Adapter, AdapterOptions, Compiler, CompilerOptions, GraphOutput,
    QueryInput, QueryOutput, StreamExt, TextInput,
};
use std::io::Cursor;

let mut compiler = Compiler::new(
    "asimov-example-compiler",
    TextInput::AsyncRead(Box::new(Cursor::new(b"Describe the known cities.".to_vec()))),
    QueryOutput::Captured,
    CompilerOptions::default(),
);
let query = compiler.execute().await?;

let mut adapter = Adapter::new(
    "asimov-example-adapter",
    QueryInput::AsyncRead(Box::new(query)),
    GraphOutput::Captured,
    AdapterOptions::default(),
);
let mut graph = adapter.execute().await?;
while let Some(batch) = graph.next().await {
    for bytes in batch?.lines() {
        // Process this JSONL graph line.
    }
}

Implementations§

Source§

impl Compiler

Source

pub fn new( program: impl AsRef<OsStr>, input: TextInput, output: QueryOutput, options: CompilerOptions, ) -> Self

Configures a compiler without starting it.

Forwards options.other as individual arguments in order. The pattern defines no standard model or format flags, so none are generated. input and output select stdin and stdout handling; stderr is captured for failure diagnostics.

To select a named input file, supply its path through options.other after any extension options and use TextInput::Ignored. No standard output-file operand is defined. This constructor does not validate operands, extension support, or the input’s encoding.

Source

pub async fn execute(&mut self) -> CompilerResult

Sends the remaining text input to a new child and returns captured query bytes.

§Errors

Returns an ExecutorError if spawning, copying input, or waiting fails, or if the compiler exits unsuccessfully. Query syntax and UTF-8 validity are the external program’s responsibility and are not checked here.

Trait Implementations§

Source§

impl Compiler<Cursor<Vec<u8>>> for Compiler

Source§

impl Debug for Compiler

Source§

fn fmt(&self, __derive_more_f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
Source§

impl Execute<Cursor<Vec<u8>>> for Compiler

Source§

type Error = ExecutorError

The implementation-specific error returned directly by execution. Read more
Source§

fn execute<'life0, 'async_trait>( &'life0 mut self, ) -> Pin<Box<dyn Future<Output = CompilerResult> + Send + 'async_trait>>
where Self: 'async_trait, 'life0: 'async_trait,

Executes the operation using its current input and configuration. Read more

Auto Trait Implementations§

Blanket Implementations§

Source§

impl<T> Any for T
where T: 'static + ?Sized,

Source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
Source§

impl<T> Borrow<T> for T
where T: ?Sized,

Source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
Source§

impl<T> BorrowMut<T> for T
where T: ?Sized,

Source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

Source§

impl<T> Instrument for T

Source§

fn instrument(self, span: Span) -> Instrumented<Self>

Instruments this type with the provided Span, returning an Instrumented wrapper. Read more
Source§

fn in_current_span(self) -> Instrumented<Self>

Instruments this type with the current Span, returning an Instrumented wrapper. Read more
Source§

impl<T, U> Into<U> for T
where U: From<T>,

Source§

fn into(self) -> U

Calls U::from(self).

That is, this conversion is whatever the implementation of From<T> for U chooses to do.

Source§

impl<T, U> TryFrom<U> for T
where U: Into<T>,

Source§

type Error = !

The type returned in the event of a conversion error.
Source§

fn try_from(value: U) -> Result<T, !>

Performs the conversion.
Source§

impl<T, U> TryInto<U> for T
where U: TryFrom<T>,

Source§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
Source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.
Source§

impl<T> WithSubscriber for T

Source§

fn with_subscriber<S>(self, subscriber: S) -> WithDispatch<Self>
where S: Into<Dispatch>,

Attaches the provided Subscriber to this type, returning a WithDispatch wrapper. Read more
Source§

fn with_current_subscriber(self) -> WithDispatch<Self>

Attaches the current default Subscriber to this type, returning a WithDispatch wrapper. Read more