# PL/XML Syntax Programs that do not respect this syntax may (and probably will) still work, but with no guarantee. ## McKeeman Form ``` plxml program program "" functions main functions "" tag '"' characters '"' characters '' character characters character '0020' . '10FFFF' - '"' - '0027' - '<' - '>' - '&' '&' escapes ';' ws "" '0020' ws '000A' ws '000D' ws '0009' ws escapes "quot" "apos" "lt" "gt" "amp" main ws "
" instructions "
" ws functions "" function functions function ws "" arguments body "" ws arguments ws "" arguments "" ws _arguments "" argument _arguments argument ws "" ws body ws "" instructions "" ws instructions ws "" ws instruction instructions instruction ws _instruction ws _instruction value assign integer real string array add subtract multiply divide and or not equal greater lower call return if for each while handle value "" assign "" instruction "" integer "" "" instruction "" real "" "" instruction "" string "" "" instruction "" array "" instructions "" "" add "" instructions "" subtract "" instruction instructions "" multiply "" instructions "" divide "" instruction instructions "" and "" instruction instructions "" or "" instruction instructions "" not "" instruction "" equal "" instruction instruction "" greater "" instruction instruction "" lower "" instruction instruction "" call "" call_arguments "" "" instruction call_arguments ws "" call_arguments ws "" instructions "" ws return "" instruction "" if "" instruction then "" "" instruction then else "" then ws "" instructions "" ws else ws "" instructions "" ws each "" instruction do "" while "" instruction do "" for "" ws from to step do "" from ws "" instruction "" ws to ws "" instruction "" ws step ws "" instruction "" ws do ws "" instructions "" ws handle ws "" try catch "" ws try ws "" instructions "" ws catch ws "" instructions "" ws ```