COMPILER Micro CHARACTERS char = ANY. idChar = "a..z" + "A..Z" + "_". digit = "1234567890". TOKENS charLit = "'" char "'". numberLit = digit { digit }. ident = idChar { idChar | digit }. ifKW = "if". elseKW = "else". endKW = "end". callKW = "call". functionKW= "function". plus = "+". minus = "-". eql = "=". neq = "#". lss = "<". gtr = ">". comma = ",". methPar = "<-". COMMENTS FROM "{" TO "}" NESTED PRODUCTIONS Micro = { Function } . Function = "function" ident ident [ "<-" FormPar { "," FormPar } ] Block "end" . FormPar = ident ident . Block = { Statement } . Statement = ( ident ( ident | "=" Expr | "<-" ( charLit | numberLit ) ) | "if" Cond Block [ "else" Block ] "end" | Call ) . Expr = Term { ("+" | "-") Term } . Term = ( charLit | numberLit | ident | Call ) . Cond = Expr ( "<" | "=" | "#" | ">" ) Expr . Call = "call" ident [ "<-" Expr { "," Expr } "end" ] . END Micro.