FEEL language constructs: the complete grammar
FEEL is a complete expression language, not just a function library: it has conditionals, iteration, quantifiers, list filters, ranges and inline function definitions. These are the constructs of the grammar itself, each with engine-verified examples you can open in the evaluator. Every result below was computed by a real FEEL engine at build time; try any expression in the free online FEEL evaluator.
| Construct | Syntax |
|---|---|
| if … then … else | if condition then expression else expression |
| for … in … return | for name in list return expression |
| some … satisfies | some name in list satisfies condition |
| every … satisfies | every name in list satisfies condition |
| list filter […] | list[condition] · list[index] |
| list projection (path on a list) | listOfContexts.entryName |
| path access (.) | context.entryName |
| context literal {…} | { name: expression, name: expression } |
| range / interval | [a..b] · (a..b) · [a..b) |
| in | value in list · value in range · value in (test, test) |
| unary tests (decision table cells) | < 10 · [1..10] · 1, 2, 3 · not(1, 2) |
| between … and | value between low and high |
| instance of | value instance of type |
| function definition | function(param, param) expression |
| arithmetic operators | + - * / ** |
| comparison and boolean operators | = != < <= > >= · and or |
| temporal literals @"…" | @"2026-07-01" · @"P3D" · @"10:30:00" |
| null and error propagation | null |
Looking for a built-in instead? See the complete FEEL function reference, the examples cheat sheet, or the FEEL vs B-FEEL comparison.