Skip to content

Parser Internals

How HoloScript parses .holo, .hs, and .hsplus files into AST.

Five-Parser Architecture

HoloScript uses five specialized parsers for its three file formats plus two specialized modes:

text
Source File

    ├── .holo ──→ CompositionParser ──→ HoloComposition AST
    │             (platform-independent scene graph)

    ├── .hs ────→ HoloScriptParser ──→ HoloScript AST
    │             (templates, agents, streams)

    ├── .hsplus ─→ HoloScriptPlusParser ──→ HoloScript+ AST
    │             (modules, types, trait annotations)

    ├── .hs 2D ──→ HoloScript2DParser ──→ 2D-specific AST
    │             (2D canvas, sprites, tilemaps)

    └── persist ─→ HoloScriptPersistenceParser ──→ Persistence AST
                  (serialization/deserialization)

Parser Class Reference

ParserFileInputOutput
HoloScriptParsersrc/HoloScriptParser.ts:87.hs sourceHoloScriptAST — templates, agents, logic
CompositionParsersrc/composition/CompositionParser.ts:128.holo sourcePlatform-independent HoloComposition
HoloScriptPlusParsersrc/HoloScriptPlusParser.ts:220.hsplus sourceExtended AST with modules, types, trait blocks
HoloScript2DParsersrc/HoloScript2DParser.ts:18.hs 2D mode2D-specific AST
HoloScriptPersistenceParsersrc/HoloScriptPersistenceParser.ts:18Serialized statePersistence AST

AST Types

Defined in src/io/HoloScriptIO.ts:

TypeLinePurpose
HoloScriptAST:73Core structure representing parsed HoloScript
HoloScriptASTLogic:91Logic blocks within the AST (event handlers, state)

Key Methods

MethodLocationWhat It Does
CompositionParser.parse():128Parse .holo source string into HoloComposition
CompositionParser.processHoloComposition():155Process .holo format specifically
HoloScriptPlusParser.parse():230Parse .hsplus with trait annotations
HoloScriptPlusParser.parseCompositionBlock():1043Parse composition blocks within .hsplus
HoloScriptParser.parseComposition():546Parse composition structures in .hs

Pipeline: Parse → Compile → Run

text
Source (.holo/.hs/.hsplus)


Parser.parse(source) ──→ AST


Compiler.compile(ast) ──→ Platform Code


SceneRunner.run(ast) ──→ Live Scene
  • IncrementalParser (src/IncrementalParser.ts) — Incremental re-parsing for editor integration
  • HoloScriptCodeParser (src/HoloScriptCodeParser.ts) — Code-level parser for codebase intelligence
  • HoloScriptSpreadValidator (src/HoloScriptSpreadValidator.ts) — Spread operator validation

Released under the MIT License.