PHP Classes

File: howto_grammar.txt

Recommend this page to a friend!
  Classes of Richard Keizer   Pragmatic BNF-a-like parser   howto_grammar.txt   Download  
File: howto_grammar.txt
Role: Documentation
Content type: text/plain
Description: grammar basics explained
Class: Pragmatic BNF-a-like parser
Parse language source with a BNF grammar syntax
Author: By
Last change:
Date: 11 years ago
Size: 1,378 bytes


Class file image Download
How to write a grammar: following the rules of writing grammar is very easy… writing good grammar is terribly difficult these are the rules of writing a grammar: * a grammar describes 1 or more rules. * a rule is defined as: symbol ::= expression * symbol 'root' *must* be defined, this is the starting point. * each expression is defined as 1 or more symbols and/or terminal nodes * a terminal node is contained within single quotes ('') and may not contain spaces * a terminal node is expressed by a regular expression (regex) * equal symbols on the left-hand-side (LHS) of a rule are interpreted as boolean OR example 1: animal ::= 'horse' animal ::= 'dog' animal ::= 'cow' is read as: animal = 'horse' OR 'dog' OR 'cow' example 2: (recursion) animals ::= animal animals animals ::= animal is read as: animals = any endless combination of animals OR a single animal note that the first rule's expression is 'animal animals', if we were writing 'animals animal' we would go endlessly recursive because the expression is evaluated left-to-right (and since animals equals animals we would have a problem) example 3: (regex) digit ::= '[0-9]' is read as any character '0'..'9' number ::= '[0-9]+' is read as one or more characters '0'..'9' this makes it easy to stuff like: variable ::= '[a-zA-Z][a-zA-Z0-9]*' (a variable starting with a alphanumeric)