Scrum
SCRUM is designed for being a language which is understandable for business as well as for developers and losely inspired by the Scrum (software development) framework (hence the name of course).
The language was created and designed by MityJohn.
Hello World
A glance of the scrum programming language using the 'Hello World' example:
USER STORY "HelloWorld" #REVIEW Our first Scrum Program SAY "Hello world!" END OF STORY
Syntax
File formatting
Scrum programs are UTF-8 files with the .scrum file extension.
Programming Structure
SCRUM code is a structure based upon EPIC's containing multiple USER STORIES or for simple coding purposes on single/multiple USER STORIES. An EPIC can be interpreted as a single class, whereas User stories can be seen as single functions. These User Stories are individual blocks of code logic which can be executed individually. Multiple stories within an epic will fulfil a bigger goal all together.
EPICS and USER STORIES have a name, defined between quotes (without spaces). These epics can be called afterwards (without the spaces).
EPIC "nameOfTheEpic" USER STORY "nameOfTheUS" ... code logic ... END OF USER STORY END OF EPIC
All code blocks (e.g. EPIC, USER STORY but also IF or ITERATIONS) are always closed by an END STATEMENT (combinining the initial parent). So for an "EPIC" block, this will be closed by "END OF EPIC".
Initialising a new EPIC and calling an EPICs User Story:
SampleStoriesEpic IS NEW nameOfTheEpic SampleStoriesEpic::nameOfTheUS USING []
Operators & Variables declaration
All operators are written uppercase for easy readability (as user stories are written in a comprehensive way, we must make a distinction).
Plain types
Assigning a variable: variable name IS expression !- helloWorldText IS "Hello World!" firstNumber IS 1 -!
Array
BACKLOG = { , , ... } example_backlog = { 1, 2, "three"} empty_backlog = {}
Operators
Operator | Value | Precedence | Example |
---|---|---|---|
Assignment | ```IS``` | 1 | ```a = 5``` |
Append value to array | ```ADDING``` | 1 | ```array ADDING "value"``` |
Logical OR | ```OR``` | 2 | ```true OR false``` |
Logical AND | ```AND``` | 3 | ```true AND true``` |
Left side | ```(``` | 4 | |
Right side | ```)``` | 4 | |
Equals | ```=``` | 5 | ```a = 5``` |
Not Equals | ```!=``` | 5 | ```a != 5``` |
Greater Than Or Equals | ```>=``` | 5 | ```a >= 5``` |
Greater Than | ```>``` | 5 | ```a > 5``` |
Less Than Or Equals | ```<=``` | 5 | ```a <= 5``` |
Less Than | ```<``` | 5 | ```a < 5``` |
Addition | ```+``` | 6 | ```a + 5``` |
Subtraction | ```-``` | 6 | ```a - 5``` |
Multiplication | ```*``` | 7 | ```a * 5``` |
Division | ```/``` | 7 | ```a / 5``` |
Floor Division | ```//``` | 7 | ```a // 5``` |
Modulo | ```%``` | 7 | ```a % 5``` |
NOT | ```!``` | 8 | ```!false``` |
EPIC Instance | ```NEW``` | 8 | ```a IS NEW epicName [ 5 ]``` |
EPIC Property | ```::``` | 8 | ```epicName :: storyName``` |