Cada regra de controle é uma série de declarações da forma:
RULE ID_da_regra IF condição_1 AND condição_2 OR condição_3 AND condição_4 etc. THEN ação_1 AND ação_2 etc. ELSE ação_3 AND ação_4 etc. PRIORITY valor
Onde palavras-chave são mostradas em negrito e ID_da_regra é um rótulo de ID atribuído à regra, condição_n é uma cláusula de condição, ação_n é uma cláusula de ação e value é um valor de prioridade (por exemplo, um número de 1 a 5).
Cada cláusula de regra deve começar com uma das palavras-chave em negrito mostradas acima e apenas uma cláusula por linha é permitida.
Somente as partes RULE, IF e THEN de uma regra são necessárias; as partes ELSE e PRIORITY são opcionais.
Linhas em branco entre cláusulas são permitidas e qualquer texto à direita de um ponto e vírgula é considerado um comentário.
Ao misturar cláusulas AND e OR, o operador OR tem precedência maior que AND, ou seja,
IF A OR B AND C
é equivalente a:
IF (A OR B) AND C
Se a interpretação devesse ser:
IF A OR (B AND C)
Então isso pode ser expresso usando duas regras como em:
RULE A1 IF A THEN... RULE A2 IF B AND C THEN...
O valor PRIORITY é usado para determinar qual regra se aplica quando duas ou mais regras exigem que ações conflitantes sejam executadas em um link. Uma regra conflitante com um valor de prioridade mais alto tem precedência sobre outra com um valor mais baixo (por exemplo, PRIORIDADE 5 supera PRIORIDADE 1). Uma regra sem um valor de prioridade sempre tem uma prioridade mais baixa do que uma com um valor. Para duas regras com o mesmo valor de prioridade, a regra que aparece primeiro recebe a prioridade mais alta.
Algumas observações quanto ao editor de cláusulas do SOLIDOS:
RULE R01 IF NODE SU1 DEPTH > NODE KRO3001 DEPTH
Veja também: Regras Controles do SWMM