A Visual Studio Code extension that provides language support for EXPRESS (ISO 10303-11), the schema definition language used in STEP and building-information models such as IFC.
Open any .exp file to get syntax highlighting, semantic analysis, and IDE navigation powered by a Langium-based language server.
Features
Syntax highlighting
EXPRESS source is highlighted using a TextMate grammar. Keywords, literals, comments, and identifiers are distinguished in the editor. The extension recognizes both uppercase and lowercase keyword spellings common in EXPRESS schemas.
Editor integration
- Bracket matching for
(),[], and{} - Auto-closing pairs for brackets and string quotes
- Line and block comments (
//and/* */)
Language Server Protocol (LSP)
The extension launches a dedicated language server when you open an EXPRESS file. Standard LSP features are provided through Langium:
| Feature | Description |
|---|---|
| Diagnostics | Unresolved references and other link errors appear in the Problems panel |
| Go to definition | Jump from a reference to its declaration (entity, type, attribute, function, local variable, etc.) |
| Document symbols | Browse declarations in the current file |
| Completion | Context-aware suggestions while typing |
Semantic linking
Beyond basic name resolution, the language server understands EXPRESS-specific scoping and type structure:
- Declarations — entities, types, functions, constants, and enumeration items
- Attributes — direct attributes, inherited attributes, inverse relations, and redeclared supertype attributes
- Local scope — variables in algorithms,
RULEbodies,QUERYexpressions,REPEATloop indices, andALIASstatements - Expression context — attribute access on
SELF, subtype operands, function-call results, and indexed qualifiers (e.g.U[2].DirectionRatios) - DERIVE / WHERE rules — references inside constraint and derivation expressions, including nested
QUERYandUSEDINaggregates - Enumerations — enumeration literals, including case-insensitive matching where applicable
- Document-scoped lookup — entity and type resolution prefers symbols in the current schema document to avoid cross-file ambiguity in large workspaces
The implementation is validated against real-world schemas, including large IFC EXPRESS files.
Getting started
Install EXPRESS Language from the VS Code Extensions view, then open any file with the .exp extension.
Supported file types
| Extension | Language ID |
|---|---|
.exp |
express |
Requirements
- Visual Studio Code 1.67.0 or newer
Known limitations
- Performance — Very large schemas (tens of thousands of lines) may take noticeable time to analyze on each edit. Optimization is planned for future runtime improvements.
- Validation — Custom semantic validation rules are minimal today; most Problems panel feedback comes from unresolved references during linking.