Set of allowed chars

In the following section we use the terms lower- and uppercase strings definied as followed:

Lowercase String: starts with a lowercase char and after that you can use every letter, number and the char '_'. Regular Expression: [a-z][a-zA-Z0-9_]*

Uppercase String: same as lowercase, except for an uppercase char at the beginning. Regular Expression: [A-Z][a-zA-Z0-9_]*

Template

Every Template definition starts with a Template string. The Template name has to be an uppercase string.

Examples

Valid Program:

Template Location
    type = ""
    name = ""
End

Invalid Program:

Template Location!!
    type = ""
    name = ""
End

Template Location2
    type = ""
    name = ""
End

Instance

Every Instance definition of a Template type starts with an uppercase string to indicate from which Template we want to create an Instance. The name of the Instance have to be written as lowercase string.

Examples

Valid Program:

Location pickupItem
    name = "s1_pickup"
    type = "SmallLoadCarrier"
End

Invalid Program:

Location PickupItem
    name = "s1_pickup"
    type = "SmallLoadCarrier"
End

Location pickup-item
    name = "s1_pickup"
    type = "SmallLoadCarrier"
End

Member Variables

The type has to be Lowercase string. The values can either be a Lowercase or an uppercase string or a sequence of numbers and the chars '*' and '/'. They are always surrounded by " ".

Regex for value: '"' [a-zA-Z0-9_]+ '"' | '"' ['*'' ''/'0-9]+ '"' | '""'

Examples

Valid Program:

Location pickupItem
    name = "s1_pickup"
    type = "SmallLoadCarrier"
End

Invalid Program:

Location pickupItem
    name = s1_pickup
    type = "SmallLoad Carrier"
End

Location pickupItem2
    name = "s1_pickup**"
    type = "SmallLoadCarrier"
End

TransportOrderStep

A TransportOrderStep contains the statements Location and optionally Triggered By, Finished By or Parameters. The Instance names should match the corresponding Instance so they are Lowercase strings too.

With the OnDone Keyword you define a follow up Task so the task name should match the corresponding Task which is an Lowercase string. TriggeredBy, FinishedBy use expressions. To learn more about valid expressions goto this section

Parameters:

Examples

Valid Program:

TransportOrderStep t1
    Location testitest
    TriggeredBy mitarbeiterButtonDasErFertigIst
    FinishedBy abc == (bce < 5)
    OnDone task
End

Invalid Program:

TransportOrderStep t1
    MyLocation testitest
    TriggeredBy mitarbeiterButtonDasErFertigIst
    FinishedBy abc == (bce < 5)
    OnDone task
End

TransportOrderStep t2
    Location Location1
    TriggeredBy mitarbeiterButtonDasErFertigIst
    FinishedBy abc == (bce < 5)
    OnDone test
End

Task

Transport, From and To are fixed Keywords. The names of the locations (From and To) need to be the same as the corresponding locations so they are Uppercase strings. There are the same optional statements as in TransportOrderStep (TriggeredBy, ...)

Examples

Valid Program:

Task transport_Task
    Transport 
    From        t1
    To          warehouse
    TriggeredBy palette_1Full == TRUE
End

Invalid Program:

Task transport_Task
    Transport 
    TriggeredBy palette_1Full == TRUE
    From        t1
    To          warehouse
End

Task transport_Task2
    Transport 
    To          warehouse
    From        t1  
End

Task transport_Task3
    Transport 
    From        t1
    To          warehouse
End

Conditional Expressions

An expression can be definied in multiple ways:

  • As an single attribute
  • As a set of nested expressions (have to be surrounded by a left and right parenthesis)
  • As a comparison of two expressions with a binary operation
  • As a single expression with an unary operation
  • As a condition statement (e.g True, False, but also integers and floats)

Regex:

  • Attribute: [a-z][a-zA-Z0-9_]+
  • Binary Operation: ['<''>''<=''>=''and''or''==''=']
  • Unary Operation: !
  • Condition Statements: ['True''False''TRUE''FALSE''[0-9]+''[0-9]+( '.' [0-9]+)']

Examples

Now, we present you some valid examples how to utilize the expressions:

Task transport_Task
    TriggeredBy palette_3Full == True or 42.42 <= 42.31
    FinishedBy  palette_2Full == FALSE and 40 > 30
End

Indentations

If you are in a block (Template, Instance, Task or TransportOrderStep) you need to add an Indentation after each newline of a statement. An Indentation can be a tabulator or 3 space characters. It is also not allowed to add an Indentation before a blockstart it must be the first word after a newline.

Regex: (' ' | '\t')

Examples

Valid Program:

Location pickupItem
    name = "s1_pickup"
    type = "SmallLoadCarrier"
End

Invalid Program:

Location pickupItem
                    name = "s1_pickup"
        type = "SmallLoadCarrier"
End

    Location pickupItem2
    name = "s1_pickup"
    type = "SmallLoadCarrier"
End