Module

Railroad diagramfuncidentifier(identifier,identifier)BlockExpr

func

Railroad diagramfuncnotidentPart

identifier

Railroad diagramnotifelsefuncletandoridentStartidentPart

BlockExpr

Railroad diagram{letidentifier=Expr;Expr;Expr}

identPart

Railroad diagramidentStartdigit

if

Railroad diagramifnotidentPart

else

Railroad diagramelsenotidentPart

let

Railroad diagramletnotidentPart

and

Railroad diagramandnotidentPart

or

Railroad diagramornotidentPart

identStart

Railroad diagramletter_

Expr

Railroad diagramidentifier:=ExprPrimaryExpr+-*/==!=<=<>=>andorPrimaryExpr

PrimaryExpr

Railroad diagram(Expr)digitidentifier(Expr,Expr)identifierIfExpr

IfExpr

Railroad diagramifExprBlockExprelseBlockExprIfExpr