I was reading through this Java doc about regular expression and got totally confused by the format and symbol the author uses across that page including pipe (|) and :==. At the beginning, I thought it was just a format thing that people use all the characters to help make things look more organized.
However, after posting a question on Stackoverflow, I realized that is something totally professional called “BNF” or Backus Naur Form.
This form was named after John Backus and Peter Naur from IBM around 1960s.
In a nutshell, it looks like the recursion in math or cs. Here are two examples:
word :== letter | word + letter phrase :== word | phrase + '' + word
I won’t even show off my understand here but please take five minutes watching this youtube video and that dude did a much better job explaining this in an easy way.
The first symbol of an alternative may be the class being defined. As explained by Naur; The meaning of which is to specify a sequence beginning with a previous alternative.