On this page ...

Freon Terminology

A - C

PhraseDescription
Abstract conceptA concept that cannot be instantiated directly; other concepts inherit from it.
Abstract Syntax Tree (AST)The internal tree structure of a model, where each node represents an instance of a language concept. It is the core model manipulated directly by users of the Freon editor instead of plain text.
ActionCertain behavior of the editor, for instance, the reaction to a key stroke.
Alternative namespaceA statement in the scoper definition that removes the names from the parent namespace, and replaces them by names of another namespace.
Alternative NodesDeclared nodes from namespaces that have an alternative relationship with the current namespace, defined in the alternatives block.
alternatives (keyword)Defines replacement or non-hierarchical visibility relationships between namespaces.
Anytype RuleA general validation rule that applies to all concepts.
ASTSee Abstract Syntax Tree (AST).
.ast fileFile containing the definition of the metamodel of the language. The extension must be ‘.ast’.
AST.change()A helper method from @freon4dsl/core to ensure all model mutations are MobX-reactive.
AST-Based InterpretationEvaluation performed directly on the AST, without parsing or lexing steps, thanks to Freon’s projectional editor.
Balancing expressionsAutomatic restructuring of binary expression trees in Freon so that operator precedence is reflected correctly after editing.
Binary expressionA subtype of Expression that defines an expression with a left and right operand, combined using an operator such as +, *, AND, or >.
Boolean typeA primitive type with two values: true or false.
BoxA TypeScript class that represents a rectangle on the editor screen.
Box APIKey editor box methods such as findParam(), setFocus(), and refreshComponent(). Used by external components and custom projections for runtime interaction with the editor.
Box ProviderA generated class that produces boxes for specific AST concepts in the Freon editor.
Box RoleAn identifier assigned to a box that links it to specific editor behaviors or actions. Box roles connect visual elements in a projection to the logic that handles user interactions.
Box Tree / box modelThe hierarchy of boxes used by the Freon editor to represent layout and structure of a model on screen.
Caret PositionThe current insertion point in the editor, managed by the FreCaret interface.
ConceptThe primary building block of a Freon metamodel, similar to a class in UML.
Concrete Syntax Tree (CST)A tree representing how a model appears visually; in Freon, this corresponds to the Box Model.
conformsto (keyword)A predefined function in the typer, that defines that a certain type conforms to another type. The function can also be used in the validator.
Container Descriptor (piContainer)Metadata linking an element to its parent container in the AST hierarchy.
CSTSee Concrete Syntax Tree (CST).
Custom ActionA user-defined editor action created with FreCustomAction.create().
Custom Box DefinitionsUser-defined layouts or components replacing generated box structures.
Custom Message RuleDefinition of user-defined error messages and severity levels (message, severity) used during validation.
Custom ProjectionA user-defined method that returns a box for a given concept, registered in nodeTypeToBoxMethod.
Custom ScoperA user-defined replacement for, or augmentation to, the generated scoper, currently applied globally rather than per concept.
Custom TyperA user-defined replacement for, or augmentation to, the generated typer, applied per concept.
Customization LevelThe layer where handwritten TypeScript code extends or replaces generated behavior in Freon.

D - E

PhraseDescription
Declared NodesAll named nodes (with a name: identifier property) within a namespace’s AST subtree, including nodes that define other namespaces, but excluding the declared nodes from those namespaces.
Default Validation RulesAutomatically enforced checks such as required properties, valid references, and non-empty lists.
Document Object Model (DOM)The browser’s structure of HTML elements; Freon’s rendered boxes eventually map to DOM nodes.
Domain-Specific Language (DSL)A programming or modeling language tailored to a specific problem domain, providing constructs and abstractions closely aligned with domain concepts rather than general-purpose computation. In Freon, DSLs are designed, edited, and executed using generated tools that combine structural definitions (metamodels), projections, and validation rules.
Domain-Specific Runtime ClassA subclass of RtObject that models domain-specific runtime behavior.
DSLSee Domain-Specific Language
.edit fileFile containing the definition of the editors, or projection sets of the language. The extension must be ‘.edit’.
EditorA loosely used term to refer to the runtime tool in the browser, or to a certain projection set.
Editor definition (.edit)A file describing how concepts and their properties are projected in the Freon editor, thus defining a projection set.
Editor FrameworkThe set of Freon subsystems that manage projections, actions, caret movement, and rendering.
Embedding FreonIntegrating the Freon editor into a custom web application, typically using Svelte components.
EnumerationSee limited concept.
equalsto (keyword)A predefined function in the typer, that defines that a certain type is considered to be equal to another type. The function can also be used in the validator.
Error SeverityClassification of validation messages (e.g., error, warning, hint, info).
EvaluationThe process of computing the value associated with an AST node during interpretation.
Evaluation FunctionA generated or user-defined method that determines the meaning or output of a specific AST node.
Evaluation OverrideThe act of redefining a generated evaluation function to perform actual interpretation logic.
Expression (or Expression Concept)A subtype of Concept that defines a construct that produces a value.
External ComponentA Svelte or Svelte-wrapped component embedded inside a Freon projection.

F - H

PhraseDescription
FragmentA part of a projection definition.
FreActionDefines an executable editor operation such as inserting, deleting, or modifying nodes.
FreBehaviorEncapsulates user interaction logic that links triggers to editor actions.
FreCaretInterface representing the caret’s current position, movement, and focus behavior.
FreComponentPropsThe properties passed to an external component, containing editor and box references.
FreCustomActionUser-defined action class used to add or override default editor behavior.
FreEditorThe main runtime editor interface controlling projections, boxes, and user interactions.
FreEnvironmentCentral registry providing access to language definitions, scopers, typers, and validators.
FreError InterfaceInterface defining issues or diagnostics produced during validation or typing.
FreExpression InterfaceBase interface for all expression elements in the Freon model.
FreNamedNode InterfaceInterface that extends FreNode with a name property used in references and scoping.
FreNode InterfaceThe base interface for all Freon model elements, providing identity and structural information.
FreNodeReferenceA Freon class that represents name-based references, ensuring models remain trees instead of graphs.
FreonThe Freon framework for building DSL editors for the web. The name ‘Freon’ comes from the Frisian word for ‘friend’.
freon allCommand that generates all dependent components in the correct order, ensuring compilable and consistent output.
freon ast-itCommand that generates code for all concepts, units etc. from .lang definition files.
freon clean-itCommand that removes all generated TypeScript code for your language.
freon diagram-itCommand that generates UML diagrams from .ast definition files.
freon edit-itCommand that generates projection code from .edit definition files.
Freon EditorThe projectional graphical editor generated from a Freon DSL specification.
Freon interpreter frameworkA Freon runtime framework that allows execution or simulation of DSL models.
freon interpret-itCommand that generates interpreter code for your language.
Freon Language WorkbenchThe Freon platform for defining, generating, and executing web-based DSL editors.
freon parse-itCommand that generates parser code from .edit definition files.
freon scope-itCommand that generates scoping code from .scope definition files.
freon type-itCommand that generates typing code from .type definition files.
freon validate-itCommand that generates validation code from .valid definition files.
FrePostActionAction executed after a primary action, often for cleanup or UI refresh.
FreProjection InterfaceInterface defining how a language concept is visually projected in the editor.
FreProjectionHandlerA Freon runtime class that manages projection rendering and links between AST nodes and visual boxes.
FreReaderComponent that parses models from text or serialized data into AST structures.
FreReader InterfaceInterface defining how models are parsed from text input into Freon’s AST representation.
FreScoperComponent responsible for resolving references and managing name visibility in the model.
FreScoper InterfaceInterface defining the logic for resolving references and visible names within a Freon model.
FreStdlibComponent that holds the standard library of predefined elements and limited concepts available in a language.
FreStdlib InterfaceInterface defining all predefined instances and limited concepts for a given language in Freon.
Fre-toolsThe modular components generated by Freon, such as the editor, scoper, typer, validator, parser, and standard library.
FreTriggerTypeEnumeration defining input types (e.g., key, mouse) that can trigger editor actions.
FreTriggerUseEnumeration describing how triggers are applied (e.g., pressed, released, repeated).
FreType InterfaceInterface implemented by all type concepts in Freon.
FreTyperComponent for inferring and checking the types of model elements.
FreTyper InterfaceInterface defining the logic for type inference, type equality, and conformance checks.
FreTyperPartA modular part of the typer that implements type inference for a subset of concepts.
FreUndoManagerComponent that handles undo and redo operations for model edits.
FreValidatorComponent for validating models to ensure semantic correctness.
FreValidator InterfaceInterface defining how models are validated to ensure semantic correctness.
FreWriterComponent that serializes models back to text or persistent form.
FreWriter InterfaceInterface defining how models are serialized or exported from Freon to text or files.
Global sectionThe .edit file section listing available external components in a language, and settings to be applied globally in the editor.
GradeScoreA concept representing a grading rule composed of a grade and an expression.
hasType RuleIdentifies which AST concepts or interfaces have an associated type.

I - N

PhraseDescription
if(MetaType) (function)Limits a scope expression to nodes of a specific metatype (concept or model unit); skips others.
Imported NodesDeclared nodes of other namespaces included via an imports block; private properties are excluded.
imports (keyword)Adds declared nodes from other namespaces to the current namespace’s visible nodes; can be marked recursive.
Inference RuleDefines how to determine the type of a term, e.g. infertype self.declaredType.
initialize()Function used in external components to set up and synchronize data before rendering.
InterpreterA component that traverses and evaluates the AST to compute values to be associated with certain nodes.
Interpreter ContextA runtime data structure that stores variable bindings, constants, and references during evaluation, allowing nested evaluations to access local and parent scopes.
Interpreter FrameworkFreon’s subsystem that enables the evaluation of DSL models directly from their Abstract Syntax Tree (AST).
isNamespace (keyword)Declares which concepts, model units, or interfaces identify namespaces within the language.
istype (keyword)Declares which AST concepts are recognized as types.
isunique (keyword) / is-unique ruleBuilt-in validation rule ensuring that all elements in a list are unique, effectively treating the list as a strict set. Used in .valid files to enforce uniqueness constraints within Freon models.
Language engineerThe person using Freon to create a DSL and the tools to use the DSL.
Language EnvironmentRuntime environment containing the generated Fre-tools for a specific language.
Limited ConceptA structural element in the language, that can only have a limited number of predefined instances. A more extensive version of an enumeration.
LionWebAn open initiative for web-based interoperability of modeling tools using a standard JSON interchange format.
LionWeb repositoryA server implementation that stores models using the LionWeb protocol; it can be connected to Freon for model persistence.
M0 LevelThe runtime level, representing values or results from executing or interpreting M1 models.
M1 LevelThe model level, containing user-created instances of language concepts edited in the Freon editor.
M2 LevelThe language definition level, describing available concepts in .ast files.
Meta LevelsThe conceptual separation of model definition (M2), model instance (M1), and runtime execution (M0).
MetamodelThe structure that defines the syntax and semantics of a DSL in Freon.
MobX ReactivityThe reactive data layer used in Freon to track model state and automatically update the UI.
ModelAn instance of the language metamodel, like an object is an instance of a class. The model is what the user is interested in.
Model UnitA modular part of a model that can be edited or stored separately, enabling large-scale DSL models.
Name ResolutionProcess of linking references in the model to their declared elements.
Name-based referenceA Freon reference mechanism that identifies model elements by name rather than by internal ID.
Named EditorA projection set.
Named ElementsModel elements with unique names that can be referenced by other parts of the model.
Named property projectionA single projection in a (named) projection set.
NamespaceA subtree of the AST where a certain set of nodes is visible, identified by an instance of a concept, model unit, or interface.
Namespace additionA rule allowing one namespace to import names from another (e.g., from a related page).
Namespace Graph / TreeThe overall structure formed by all namespaces; forms a tree when hierarchical, or a directed graph when imports or alternatives exist.
notempty (keyword) / not-empty ruleBuilt-in validation rule ensuring that lists are not empty. Used in .valid files to enforce that a property contains at least one element within a Freon model.

O - R

PhraseDescription
Object Constraint Language (OCL)A formal language co-created by Jos Warmer for expressing constraints on UML models.
Operator PriorityThe precedence rules defining how binary expressions are grouped during editing and interpretation.
owner() (function)Returns the owning namespace of the current property or node, used for navigating upward through the AST.
Parameter LookupThe process by which the interpreter retrieves a parameter’s current value from the active context.
Parent NodesVisible nodes inherited from the parent namespace, contributing to hierarchical or lexical scoping.
Pareto principleThe principle that roughly 80% of the effects come from 20% of the causes; used in Freon to explain how the framework focuses on simplifying the majority of language-engineering tasks.
Parsing (Reader)The operation of reading a textual or serialized representation into a Freon model.
Partial InterpretationOccurs when evaluation cannot be completed because required context or values are missing.
Precedence of projectionsIn a set of projections for the same concept, the priority of one projection over the other.
private (keyword)Marks properties in .ast files that should not be imported into other namespaces.
Private PropertiesProperties in .ast files marked with the private keyword; visible only within their own namespace, not when imported elsewhere.
ProjectionThe visual representation of the model’s AST displayed and manipulated in the Freon editor.
Projection PriorityThe Freon mechanism that determines whether a projection comes from a custom, definition-based, or default source.
Projection setA named set of projection definitions, one per structural element in the language.
Projectional EditingAn editing paradigm where users work directly on the model structure (AST) instead of plain text.
Projectional EditorAn editor that directly manipulates the AST, ensuring models are always syntactically valid.
Public propertyA property that is not declared private with regard to namespace imports.
ReferenceA property linking one concept to another (similar to associations in UML).
Reference shortcutA shortcut allowing automatic creation of reference nodes without double selection.
RenderComponentFreon’s internal renderer that displays a childBox inside an external component.
RtArrayRepresents arrays of runtime objects.
RtBooleanRepresents boolean values.
RtErrorRepresents runtime errors encountered during interpretation.
RtNumberRepresents numeric values at runtime.
RtStringRepresents string values.
Runtime Object (RtObject)The base class for all runtime results produced by interpretation, ensuring a clear separation between model and runtime layers.
Runtime Object LibraryA collection of classes used for representing evaluated runtime values.

S - T

PhraseDescription
Scope provider (or scoper)A component that is able to determine for each term in the model which names of other elements of the model are visible.
ScoperThe Freon name for scope provider.
.scope fileFile containing the definition of the scope provider for the language. The extension must be ‘.scope’.
ScopingThe mechanism that determines which names or elements are visible in a certain context.
Scoping RulesDefinitions determining which names are visible and resolvable in a given context.
Scoping, Typing, and ValidationThe three main components of Freon’s semantic analysis framework.
self (keyword)Optional prefix for referencing direct properties within scoping expressions, similar to “this” in programming languages.
Severity LevelsPossible values for validation message severity: error, warning, hint, improvement, todo, and info.
Simple Value RuleRestricts a property to specific values or numeric ranges.
Singleton PatternEnsures only one instance of the standard library (stdlib) exists at runtime.
Stacked ArchitectureFreon’s three-level structure combining default, definition-based, and custom code layers.
Standard Library (Stdlib)Collection of built-in elements and reusable constructs defined for a language.
Svelte ComponentsUI building blocks written in Svelte; used to extend or replace parts of Freon’s editor interface.
SymbolThe concrete syntax to be used for the operator in a binary expression. For instance the ’+’ in ‘4+5’.
TermPart of a model that can be associated with a type (using a typer), or with a value (using an interpreter).
TriggerThe key stroke, or series of key strokes, that the user must enter to let the editor perform a certain function.
Triggers and Key BindingsUser input patterns (keyboard or mouse) that activate specific editor actions.
Type Check RuleVerifies that two elements have compatible or identical types (typecheck equalsType or typecheck conformsTo).
Type ComparisonType concept instances cannot be compared by identity; comparison must use equalsto or conformsto.
Type ConceptA specialized concept representing a type within a Freon language. It implements the FreType interface and is not part of the Abstract Syntax Tree (AST) itself but provides the type information associated with model elements or terms.
Type ConformanceRules defining whether one type can be used where another is expected.
Type EqualityRules defining when two types are considered identical within the type system.
Type InferenceProcess of determining the type of a model element based on context and rules.
Type provider (or typer)A component that determines, for each term in the model, which type to associate with that term.
type() (function)Returns the type of a node as determined by the typer; must appear at the end of an expression.
TyperThe Freon name for type provider.
.type fileFile containing the definition of the type provider for the language. The extension must be ‘.type’.
TypingDetermines which elements are valid in specific locations within a model or Abstract Syntax Tree (AST).

U - Z

PhraseDescription
Unparsing (Writer)The reverse process of serializing a model from AST to text.
UserThe person using Freon’s tools — e.g., the editor, scoper, or validator — to create models in a DSL.
.valid fileFile containing the definition of the validator for the language. The extension must be ‘.valid’.
Valid Identifier RuleChecks whether identifiers follow TypeScript’s identifier rules (validIdentifier).
ValidationDefines the rules that must hold in a language beyond syntax level, ensuring consistency and correctness of the model.
Validation RulesRules that check whether models obey the domain semantics of a language.
ValidatorA component that is able to determine for each term in the model whether the term is correct or erroneous.
Validator DefinitionA .valid file containing the validation rules applied to models built by the user.
Valid-identifier-ruleA built-in function in the validator definition that defines a check on whether a string is a valid identifier.
Visible NodesThe complete set of named nodes accessible in a namespace, constructed from declared, imported, alternative, and parent nodes.
Where-clauseA part of a typer definition that defines conditions for all properties of a concept. It is used in ‘equalsto’ and ‘conformsto’ definitions.
© 2018 - 2025 Freon contributors - Freon is open source under the MIT License.