# PLATYPUS Language Specification
## 2. Lexical Specification (INCOMPLETE)
## NOTE:
**This is incomplete, I am simply writing this down and will fix it as I read along the informal language specification provided to me
This does not follow standard BNF/EBNF syntax, I will rewrite it once I get all the definitions correct and complete.**
### 2.1 Input Elements and Tokens
``` bnf
::=
ASCII characters but not SEOF
::=
SEOF
::=
|
::=
| |
| | | |
```
### 2.2 White Space
``` bnf
::=
ASCII SP character (space)
| ASCII HT character (horizontal tab)
| ASCII VT character (vertical tab)
| ASCII FF character (form feed)
|
::=
CR | LF | CR LF
```
### 2.3 Comments
``` bnf
::=
!<
::=
|
::=
but not
```
### 2.4 Variable Identifiers
``` bnf
::=
|
::=
::=
ε |
::=
|
::=
[a-z] | [A-Z]
::=
|
::=
#
```
### 2.5 Keywords
``` bnf
::=
PLATYPUS | IF | THEN | ELSE | USING | REPEAT | INPUT | OUTPUT
```
### 2.6 Integer Literals
``` bnf
::=
|
::=
0 |
::=
ε |
::=
|
::=
0 |
::= one of
1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9
::=
0
::=
0 | 1 | 2 | 3 | 4 | 5 | 6 | 7
::=
|
```
### 2.7 Floating-point Literals
``` bnf
::=
.
```
### 2.8 String Literals
``` bnf
::=
ε |
::=
""
::=
ε |
::=
|
```
### 2.9 Separators
``` bnf
::=
( | ) | { | } | , | ; | " |.
```
### 2.10 Operators
``` bnf
::=
|
| |
|
::=
+ | - | * | /
::=
<<
::=
> | < | == | <>
::=
.AND. | .OR.
::=
=
```
## 3. The PLATYPUS Syntactic Specification
### 3.1 PLATYPUS Program
``` bnf
::=
PLATYPUS {} SEOF
::=
ε |
::=
|
```
### 3.2 Statements
``` bnf
::=
|
|
|
|