1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
// SPDX-License-Identifier: MIT OR Apache-2.0
//! # Varpulis Core
//!
//! Foundational types and AST definitions for the VPL language.
//!
//! This crate provides the core data structures used throughout the Varpulis
//! streaming analytics engine, including:
//!
//! - **AST (Abstract Syntax Tree)**: Complete representation of VPL programs
//! - **Type System**: Type definitions for the language
//! - **Values**: Runtime value representation
//! - **Source Spans**: Location tracking for error reporting
//!
//! ## Features
//!
//! - Zero-copy parsing support via spans
//! - Serialization support via `serde`
//! - Comprehensive AST for all VPL constructs
//!
//! ## Modules
//!
//! - [`ast`]: Program structure, statements, expressions, and SASE patterns
//! - [`types`]: Type system definitions (`Int`, `Float`, `String`, etc.)
//! - [`value`]: Runtime values with type coercion and operations
//! - [`span`]: Source location tracking for diagnostics
//!
//! ## Quick Start
//!
//! ```rust,ignore
//! use varpulis_core::{Program, Stmt, Value};
//!
//! // Values are the runtime representation
//! let int_val = Value::Int(42);
//! let float_val = Value::Float(3.14);
//! let str_val = Value::Str("hello".into());
//!
//! // Check value types
//! assert!(int_val.is_int());
//! assert!(float_val.is_float());
//! ```
//!
//! ## AST Structure
//!
//! A VPL program consists of statements:
//!
//! - `StreamDecl`: Stream definitions with operations
//! - `EventDecl`: Event type definitions
//! - `PatternDecl`: SASE+ pattern definitions
//! - `FnDecl`: User-defined functions
//! - `Config`: Configuration blocks
//!
//! ## See Also
//!
//! - [`varpulis_parser`](../varpulis_parser): Parsing VPL source code
//! - [`varpulis_runtime`](../varpulis_runtime): Executing VPL programs
pub use *;
pub use ;
pub use Span;
pub use *;
pub use Value;