Skip to content

Lezer grammar definition for the DMN 1.3 FEEL language

License

Notifications You must be signed in to change notification settings

nikku/lezer-feel

Repository files navigation

lezer-feel

CI

This is a DMN FEEL grammar for the Lezer parser system.

Usage

Parse FEEL to a Tree:

import {
  parser
} from 'lezer-feel';

// parse <Expression>
parser.parse('foo > 1');

Choose Dialect

Use Expression or UnaryTests as a top node depending on which FEEL dialect you intend to parse:

import {
  parser
} from 'lezer-feel';

const unaryParser = parser.configure({
  top: 'UnaryTests'
})

// parse <UnaryTests>
unaryParser.parse('> 100');

Provide Context

Override the default context tracker to enable context sensitive parsing based on inputs:

import {
  parser,
  trackVariables
} from 'lezer-feel';

const contextTracker = trackVariables({
  'if foo then bar': 1
});

const contextualParser = parser.configure({
  contextTracker
});

// recognizes <if foo then bar> as a <VariableName>
contextualParser.parse('if foo then bar');

Development

# build and test
npm run all

# test
npm test

# test (debug)
LOG=fparse:dbg,fparse,context,parse npm test

Prefix individual tests with a * to test them in focus mode:

# *ArithmeticExpression (error)

...

Related

  • feelin - Interpreter for the FEEL language
  • feel-playground - A visual playground to learn the FEEL language

License

The code is licensed under an MIT license.