EBNF ==== anychar := wnl := { " " | "\t" | "\r\n" | "\n" } tokenString := "\"" { "a"-"z" | "A"-"Z" | "0"-"9" | "-" | "_" } "\"" string := "\"" { anychar|"\\\"" } "\"" stringList "[" wnl string wnl { "," wnl string wnl } "]" digit := "0"-"9" number := { digit } tapeID := tokenString defaultDesc := tokenString tapeDesc := "def" wnl tokenString ":=" stringlist wnl number ";" tapedef := "tape" wnl tapeID wnl [ "dictionary" wnl stringList wnl ] "{" wnl tapeDesc wnl { tapeDesc wnl } "}" wnl [ defaultDesc wnl ] ";" stateID := tokenString tapeCondition := "(" wnl tapeID "==" wnl string wnl ")" tapeModification := tapeID "(" wnl string wnl "," wnl [ ( "+"|"-" ) ] number wnl ")" transition := tapeCondition wnl { "&" wnl tapeCondition wnl } "--" wnl tapeModification wnl { "," wnl tapeModification wnl } "->" stateID wnl [ "(" wnl number wnl ")" wnl ] ";" statedef := "state" wnl stateID wnl [ "name" wnl string wnl ] ["startstate" wnl] ["endstate" wnl] "{" wnl { transition ";" wnl } "}" wnl [ "(" wnl number wnl "," wnl number wnl ")" ] ";" wnl