emmylua_parser/syntax/
mod.rsmod tree;
mod node;
mod traits;
mod comment_trait;
use rowan::Language;
use crate::kind::{LuaKind, LuaSyntaxKind, LuaTokenKind};
pub use tree::{LuaSyntaxTree, LuaTreeBuilder};
pub use node::*;
pub use traits::*;
pub use comment_trait::*;
#[derive(Debug, Clone, Copy, PartialEq, Eq, PartialOrd, Ord, Hash)]
pub struct LuaLanguage;
impl Language for LuaLanguage {
type Kind = LuaKind;
fn kind_from_raw(raw: rowan::SyntaxKind) -> Self::Kind {
LuaKind::from_raw(raw.0)
}
fn kind_to_raw(kind: Self::Kind) -> rowan::SyntaxKind {
rowan::SyntaxKind(kind.get_raw())
}
}
pub type LuaSyntaxNode = rowan::SyntaxNode<LuaLanguage>;
pub type LuaSyntaxToken = rowan::SyntaxToken<LuaLanguage>;
pub type LuaSyntaxElement = rowan::NodeOrToken<LuaSyntaxNode, LuaSyntaxToken>;
pub type LuaSyntaxElementChildren = rowan::SyntaxElementChildren<LuaLanguage>;
pub type LuaSyntaxNodeChildren = rowan::SyntaxNodeChildren<LuaLanguage>;
pub type LuaSyntaxNodePtr = rowan::ast::SyntaxNodePtr<LuaLanguage>;
impl From<LuaSyntaxKind> for rowan::SyntaxKind {
fn from(kind: LuaSyntaxKind) -> Self {
let lua_kind = LuaKind::from(kind);
rowan::SyntaxKind(lua_kind.get_raw())
}
}
impl From<rowan::SyntaxKind> for LuaSyntaxKind {
fn from(kind: rowan::SyntaxKind) -> Self {
LuaKind::from_raw(kind.0).into()
}
}
impl From<LuaTokenKind> for rowan::SyntaxKind {
fn from(kind: LuaTokenKind) -> Self {
let lua_kind = LuaKind::from(kind);
rowan::SyntaxKind(lua_kind.get_raw())
}
}
impl From<rowan::SyntaxKind> for LuaTokenKind {
fn from(kind: rowan::SyntaxKind) -> Self {
LuaKind::from_raw(kind.0).into()
}
}