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.

About

Lezer grammar definition for the DMN 1.3 FEEL language

Topics

Resources

License

Security policy

Stars

Watchers

Forks

Sponsor this project

 

Contributors 5