turing-lib 2.0.3

Turing library for Rust
Documentation
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
WHITESPACE = _{ " " | "\t" | NEWLINE}
COMMENT = _{ "/"{2} ~ (LETTER | NUMBER | SPACE_SEPARATOR | PUNCTUATION | SYMBOL | " " | "\t" )+ ~ NEWLINE }

state = @{ASCII_ALPHA+ ~ ASCII_DIGIT*}
value = { "0" | "1" }
movement = { "R" | "L" | "H" | "N" | "D" | "I" }
description = @{ SOI ~ ("/" ~ COMMENT)? }

tape = { "{" ~ value* ~ "}" ~ ";" }
final_state = { "F" ~ "=" ~ "{" ~ state ~ ("," ~ state)* ~ "}" ~ ";" }
initial_state = { "I" ~ "=" ~ "{" ~ state ~ "}" ~ ";" }
function_name = @{ ASCII_ALPHA_LOWER ~ (ASCII_ALPHANUMERIC | "_")* }
composition = { "compose" ~ "=" ~ "{" ~ ((function_name ~ ",")*  ~ function_name) ~ "}" ~ ";"}
instruction = { "(" ~ state ~ "," ~ value ~ "," ~ value ~ "," ~ movement ~ "," ~ state ~ ")" ~ ";" }

instructions = { instruction+ }

file = { description ~ tape ~ initial_state ~ final_state ~ composition? ~ instruction+ ~ EOI }