Lexical overview ================ +-------------------------+---------+--------------------------------------------------------------------------------------------------------------------------------------------------------+ | small-letter | → | ‘a’ \| ‘b’ \| ... \| ‘z’ | +-------------------------+---------+--------------------------------------------------------------------------------------------------------------------------------------------------------+ | cap-letter | → | ‘A’ \| ‘B’ \| ... \| ‘Z’ | +-------------------------+---------+--------------------------------------------------------------------------------------------------------------------------------------------------------+ | letter | → | small-letter \| cap-letter | +-------------------------+---------+--------------------------------------------------------------------------------------------------------------------------------------------------------+ | identifier | → | (small-letter \| ‘_’) {letter \| digit \| ‘_’} | +-------------------------+---------+--------------------------------------------------------------------------------------------------------------------------------------------------------+ | small-keyword | → | identifier ‘:’ | +-------------------------+---------+--------------------------------------------------------------------------------------------------------------------------------------------------------+ | cap-keyword | → | cap-letter {letter \| digit \| ‘_’} ‘:’ | +-------------------------+---------+--------------------------------------------------------------------------------------------------------------------------------------------------------+ | argument-name | → | ‘:’ identifier | +-------------------------+---------+--------------------------------------------------------------------------------------------------------------------------------------------------------+ | op-char | → | ‘!’ \| ‘@’ \| ‘\#’ \| ‘$’ \| ‘%’ \| ‘^’ \| ‘&’ \| ‘*’ \| ‘-’ \| ‘+’ \| ‘=’ \| ‘~’ \| ‘/’ \| ‘?’ \| ‘<’ \| ‘>’ \| ‘,’ \| ‘;’ \| ‘\|’ \| ‘‘’ \| ‘\\’ | +-------------------------+---------+--------------------------------------------------------------------------------------------------------------------------------------------------------+ | operator | → | op-char {op-char} | +-------------------------+---------+--------------------------------------------------------------------------------------------------------------------------------------------------------+ | number | → | [ ‘-’ ] (integer \| real) | +-------------------------+---------+--------------------------------------------------------------------------------------------------------------------------------------------------------+ | integer | → | [base] general-digit {general-digit} | +-------------------------+---------+--------------------------------------------------------------------------------------------------------------------------------------------------------+ | real | → | fixed-point \| float | +-------------------------+---------+--------------------------------------------------------------------------------------------------------------------------------------------------------+ | fixed-point | → | decimal ‘.’ decimal | +-------------------------+---------+--------------------------------------------------------------------------------------------------------------------------------------------------------+ | float | → | decimal [ ‘.’ decimal ] (‘e’ \| ‘E’) [ ‘+’ \| ‘-’ ] decimal | +-------------------------+---------+--------------------------------------------------------------------------------------------------------------------------------------------------------+ | general-digit | → | digit \| letter | +-------------------------+---------+--------------------------------------------------------------------------------------------------------------------------------------------------------+ | decimal | → | digit {digit} | +-------------------------+---------+--------------------------------------------------------------------------------------------------------------------------------------------------------+ | base | → | decimal (‘r’ \| ‘R’) | +-------------------------+---------+--------------------------------------------------------------------------------------------------------------------------------------------------------+ | string | → | ‘’’ { normal-char \| escape-char } ‘’’ | +-------------------------+---------+--------------------------------------------------------------------------------------------------------------------------------------------------------+ | normal-char | → | any character except ‘\\’ and ‘’’ | +-------------------------+---------+--------------------------------------------------------------------------------------------------------------------------------------------------------+ | escape-char | → | ‘\\t’ \| ‘\\b’ \| ‘\\n’ \| ‘\\f’ \| ‘\\r’ \| ‘\\v’ \| ‘\\a’ \| ‘\\0’ \| ‘\\\\’ \| ‘\\’’ \| ‘\\"’ \| ‘\\?’ \| numeric-escape | +-------------------------+---------+--------------------------------------------------------------------------------------------------------------------------------------------------------+ | numeric-escape | → | ‘\\x’ general-digit general-digit \| ( ‘\\d’ \| ‘\\o’ ) digit digit digit | +-------------------------+---------+--------------------------------------------------------------------------------------------------------------------------------------------------------+ | comment | → | ‘"’ { comment-char } ‘"’ | +-------------------------+---------+--------------------------------------------------------------------------------------------------------------------------------------------------------+ | comment-char | → | any character but ‘"’ | +-------------------------+---------+--------------------------------------------------------------------------------------------------------------------------------------------------------+