Grammar syntax

You can write the grammar for the language you want to recognize by writing Terminals, Non-terminals, and Regexes.
Here is an example grammar that uses all of them:

Terminals are written by being surrounded by apostrophes, a regex token is defined by using a % sign before the name of the token, all the rest are non-terminals. This grammar is able to recognize the expression (as an example):
foo(bar+baz)

Episilon

You can write the epsilon symbol by writing a rule with only the empty string as it's body S -> ''

Steps

With the app you can both look at the language's properties (like the FIRST, FOLLOW, automaton table etc...) and you can also parse a string to see if it is recognized by the grammar, this will produce a parse tree that you can visualize.

Once you compile the language or parse a string, the individual steps needed to complete the operation will be shown below the editor and you can click on them to see the details.

Try it