# REBEL

Jump to navigation
Jump to search

*This article is not detailed enough and needs to be expanded. Please help us by adding some more information.*

**REBEL** stands for Regular Expression Based Esoteric Language. REBEL is a declarative programming language that works by iteratively replacing substrings.

A program in REBEL consists of an initial state and a list of regular expression substitutions, separated by slash characters:

*initial state*`/`

*RE*`/`

*RHS*`/`

*RE*`/`

*RHS*`/`

...

where *RE* is a regular expression and *RHS* is the right hand side that is substituted if that *RE* matches.
Special constructs `$<`

and `$>`

in the *RHS* allow for input and output respectively.

The program execution is deterministic: at each step the first possible substitution is performed on the string, until no substitution is possible.

## Computational class

The trivial possibility of translation from any deterministic Thue program into REBEL gives a proof that REBEL is Turing-complete.