module languages/ebnf/syntax/EBNF %% Simple Extended Backus-Naur Form (EBNF) notation for describing %% context-free grammar. This notation is very close to the notation %% as used in W3C standards imports basic/Identifiers basic/Strings exports context-free start-symbols Grammar sorts Grammar Rule Expression HexChar CharRange CharClass lexical syntax "#x" [0-9A-Fa-f]+ -> HexChar HexChar "-" HexChar -> CharRange HexChar -> CharRange "[" CharRange* "]" -> CharClass %% Character class "[" "^" CharRange* "]" -> CharClass %% Negated character class context-free syntax Rule* -> Grammar %% Complete grammar IdCon "::=" Expression -> Rule %% Grammar rule IdCon -> Expression %% Non-terminal String -> Expression %% Literal "(" Expression ")" -> Expression {bracket} %% Grouping Expression "?" -> Expression %% Optional Expression "*" -> Expression %% Zero or more repetitions Expression "+" -> Expression %% One or more repetitions Expression "|" Expression -> Expression {left} %% Alternative operator Expression Expression -> Expression {left} %% Sequential composition context-free priorities Expression Expression -> Expression {left} > Expression "|" Expression -> Expression {left}