Scrum

From Esolang
Jump to navigation Jump to search

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

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```

References

Scrum Home Page

Github Repository