Skip to main content

Crate polydat_grammar

Crate polydat_grammar 

Source
Expand description

The Polydat language without its runtime.

This crate holds what a reader of Polydat source needs and nothing a runner needs: the lexer and parser (lexer, parser), the AST (ast) and its pretty-printer (pprint), the free-name collector (refs), pragmas, the diagnostic types (error), the tile template parsers (tile, tile_structural), the comprehension sub-language with its algebra (comprehension), and the port type vocabulary (PortType). polydat depends on this crate, compiles what it parses, and re-exports every module here at the path it always had, so polydat::dsl::ast and polydat::ast::PortType are these.

What a type means to a compiled buffer, what a comprehension evaluates to, and what a tile renders are all the runtime’s: they live in polydat, as trait implementations and functions over the types defined here.

Modules§

ast
Abstract syntax tree for the Polydat DSL.
comprehension
The comprehension sub-language: its text form (parse), the flat form that text parses to (ast_legacy), the canonical algebra (ast) with its sources, strategies, cardinalities, and metadata, and the spec forms that convert between them (spec). Evaluation is the runtime’s.
error
Structured error types for the Polydat DSL with rich source context.
lexer
Lexer for the Polydat DSL.
parser
Recursive descent parser for the Polydat DSL.
pprint
AST → .polydat source pretty-printer.
pragmas
Module-level pragmas for Polydat source.
refs
Grammar-based free-name extraction for Polydat expression text.
tile
The tile template grammar (SRD 114 §2.2): holes, projections, branches, and the doubled-open escape, parsed over configurable delimiters and sigil. The textual front end for Polytile; the structural front end (§3) lowers to the same pieces.
tile_structural
The structural front end and the host boundary of Polytile (SRD 114 §3, §5.6).
viz
DAG visualization for Polydat Kernels.

Enums§

PortType
Compile-time type tag for a port on a Polydat node.