// Initial Definitions
identifier := \w+
command := comment
command := assignment
command := loop
command := show
command := selection
command := command command
program := command
// Requirement 1a
boolean := true
boolean := false
boolean := not boolean
boolean := expression and expression
boolean := expression or expression
boolean := expression is_greater_than expression
boolean := expression is_less_than expression
boolean := expression equals expression
// Requirement 1b
number := [0-9]+(.[0-9]+)?
expression := number
expression := identifier
expression := expression plus expression
expression := expression minus expression
expression := expression times expression
expression := expression divided-by expression
// Requirement 1c
word := identifier
word := identifier word
string := < word >
// Requirement 2
assignment := identifier stores expression
assignment := identifier stores string
assignment := identifier stores ternary
// Requirement 3a
ternary := expression if boolean otherwise expression
// Requirement 3b
if_statement := if boolean command move-on
if_statement := if boolean command otherwise command move-on
// Requirement 4a
loop_for := for identifier from expression to expression by expression command repeat
// Requirement 4b
loop_while := while boolean command repeat
// Requirement 4c
loop_for := for identifier from expression to expression command repeat
// Requirement 5
print := show string
print := show number
print := show identifier
// Other Features: Comments
comment := fyi string \n