step_io/parser/mod.rs
1//! [`parse_bytes`] — STEP source to the raw, untyped entity graph.
2//!
3//! This is the syntax layer: it knows Part 21, not the schemas. [`tokenize`]
4//! turns the text into tokens; [`parse`] and [`parse_bytes`] assemble them
5//! into a [`Graph`], which holds each entity as a [`RawEntity`] (keyword
6//! plus attributes). The source AP, identified from the `FILE_SCHEMA`
7//! header, rides along as a [`SchemaId`]. [`read`](crate::read) drives this
8//! as its first step; everything here stays public for tools that want the
9//! raw Part 21 file without the schema layer — statistics, linting,
10//! anonymization, and the like.
11
12pub mod entity;
13pub mod lexer;
14pub mod p21;
15pub mod schema;
16
17pub use entity::{Attribute, Error, Graph, ParseWarning, RawEntity, RawEntityPart};
18pub use lexer::{LexError, LexErrorKind, Lexer, Span, Token, TokenKind, tokenize};
19pub use p21::{Parser, parse, parse_bytes};
20pub use schema::{ApFamily, NonEmptyStringList, SchemaId, Stage};