Skip to main content

sysml_v2_parser/ast/
root.rs

1use super::common::{Identification, Import};
2use super::package::{LibraryPackage, Package, PackageBody};
3use crate::ast::core::Node;
4
5/// KerML top-level element: package, namespace, import, or library package (BNF RootNamespace = PackageBodyElement*).
6#[derive(Debug, Clone, PartialEq, Eq)]
7pub enum RootElement {
8    Package(Node<Package>),
9    LibraryPackage(Node<LibraryPackage>),
10    Namespace(Node<NamespaceDecl>),
11    Import(Node<Import>),
12}
13
14/// KerML NamespaceDeclaration: `namespace` Identification NamespaceBody (same body structure as Package).
15#[derive(Debug, Clone, PartialEq, Eq)]
16pub struct NamespaceDecl {
17    pub identification: Identification,
18    pub body: PackageBody,
19}
20
21/// Root of a SysML/KerML document: a sequence of top-level package or namespace elements.
22#[derive(Debug, Clone, PartialEq, Eq)]
23pub struct RootNamespace {
24    pub elements: Vec<Node<RootElement>>,
25}