# PLATYPUS Language Specification ## 2. Lexical Specification (INCOMPLETE) ## NOTE: **This is incredibly incomplete and broken, I am simply writing this down and will fix it as I read along the informal language specification provided to me** ### 2.1 Input Elements and Tokens ``` -> ASCII characters but not SEOF -> SEOF -> | -> | | | | | | ``` ### 2.2 White Space ``` -> 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 ``` -> !< -> | -> but not ``` ### 2.4 Variable Identifiers ``` -> | -> -> | -> one of [a-z][A-Z] -> one of [a-z][A-Z][0-9] -> # ``` ### 2.5 Keywords ``` -> PLATYPUS | IF | THEN | ELSE | USING | REPEAT | INPUT | OUTPUT ``` ### 2.6 Integer Literals ``` -> | -> 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 ``` -> . ``` ### 2.8 String Literals ``` -> "" -> | ``` ### 2.9 Separators ``` -> ( | ) | { | } | , | ; | " |. ``` ### 2.10 Operators ``` -> | | | | -> + | - | * | / -> << -> > | < | == | <> -> .AND. | .OR. -> = ``` ## 3. The PLATYPUS Syntatic Specification ### 3.1 PLATYPUS Program ``` -> PLATYPUS {} SEOF -> | ``` ### 3.2 Statements ``` -> | | | | ``` ### 3.3 Assignment Statement ``` -> -> AVID = | SVID = ``` #### 3.2.2 Selection Statement (`if` statement) ``` -> IF () THEN ELSE {}; ``` #### 3.2.3 Iteration Statement (the loop statement) ``` -> USING ( , , ) REPEAT { }; ``` #### 3.2.4 Input Statement ``` -> INPUT (); -> | , ``` #### 3.2.5 Output Statement ``` -> OUTPUT( | ); ``` ### 3.3 Expressions #### 3.3.1 Arithmetic Expressions ``` -> | -> - | + -> + | - | -> * | / | -> | | | () ``` #### 3.3.2 String Expression ``` -> | << -> | ``` #### 3.3.3 Conditional Expression ``` // BNF from C specification // (translated to PLATYPUS because it does not implement all of C's grammar) // source: https://cs.wmich.edu/~gupta/teaching/cs4850/sumII06/The%20syntax%20of%20C%20in%20Backus-Naur%20form.htm -> -> | .OR. -> | .AND. // END BNF from C specification ``` #### 3.3.4 Relational Expression ``` -> | -> | | -> | ```