Skip to main content

oak_mojo/
lib.rs

1#![feature(new_range_api)]
2#![warn(missing_docs)]
3#![doc = include_str!("readme.md")]
4
5/// AST module.
6pub mod ast;
7/// Builder module.
8pub mod builder;
9/// Lexer module.
10pub mod lexer;
11/// Parser module.
12pub mod parser;
13
14pub use lexer::token_type::MojoTokenType as TokenType;
15pub use parser::element_type::MojoElementType as ElementType;
16
17use oak_core::Language;
18
19/// Mojo language definition.
20#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash, Default)]
21#[cfg_attr(feature = "serde", derive(serde::Serialize, serde::Deserialize))]
22pub struct MojoLanguage;
23
24impl Language for MojoLanguage {
25    const NAME: &'static str = "mojo";
26    type TokenType = lexer::token_type::MojoTokenType;
27    type ElementType = parser::element_type::MojoElementType;
28    type TypedRoot = Vec<ast::MojoStatement>;
29}