================== Top-level fields ================== host = String; port = Int & > 443 default 8080; --- (source_file (field_definition path: (field_path (identifier)) value: (identifier)) (field_definition path: (field_path (identifier)) value: (default_expression base: (binary_expression left: (identifier) right: (comparison_constraint value: (integer))) fallback: (literal (integer))))) ================== Import and function ================== let schema = import "./schema.dcdl"; mk = (cfg: schema.Service) => cfg; in mk({ name = "api"; }) --- (source_file (let_expression (field_definition path: (field_path (identifier)) value: (import_expression specifier: (string))) (field_definition path: (field_path (identifier)) value: (function_expression (parameter name: (identifier) constraint: (path_expression object: (identifier) field: (identifier))) body: (identifier))) body: (call_expression function: (identifier) (object (field_definition path: (field_path (identifier)) value: (literal (string))))))) ================== Match and patch ================== base // { summary = match env { "prod": "production"; _: "other"; }; } --- (source_file (binary_expression left: (identifier) right: (object (field_definition path: (field_path (identifier)) value: (match_expression scrutinee: (identifier) (match_arm pattern: (literal (string)) body: (literal (string))) (match_arm body: (literal (string))))))))