Module

Railroad diagramfuncidentifier(identifier,identifier)BlockExpr

func

Railroad diagramfuncnotidentPart

identifier

Railroad diagramnotifelsefuncletandorwhileidentStartidentPart

BlockExpr

Railroad diagram{StatementExpr}

identPart

Railroad diagramidentStartdigit

if

Railroad diagramifnotidentPart

else

Railroad diagramelsenotidentPart

let

Railroad diagramletnotidentPart

and

Railroad diagramandnotidentPart

or

Railroad diagramornotidentPart

while

Railroad diagramwhilenotidentPart

identStart

Railroad diagramletter_

Statement

Railroad diagramletidentifier=Expr;whileExpr{Statement}Expr;

Expr

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

PrimaryExpr

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

IfExpr

Railroad diagramifExprBlockExprelseBlockExprIfExpr