EXPRESS Language for VS Code
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,
RULE bodies, QUERY expressions, REPEAT loop indices, and ALIAS statements
- 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
QUERY and USEDIN aggregates
- 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.