doc syntax
This commit is contained in:
170
doc/syntax.md
Normal file
170
doc/syntax.md
Normal file
@@ -0,0 +1,170 @@
|
||||
# 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
|
||||
"<program=" tag ">" functions main functions "</program>"
|
||||
|
||||
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 "<main>" instructions "</main>" ws
|
||||
|
||||
functions
|
||||
""
|
||||
function functions
|
||||
|
||||
function
|
||||
ws "<function name=" tag ">" ws "<arguments>" arguments "</arguments>" ws "<body>" instructions "</body>" ws "</function>" ws
|
||||
|
||||
arguments
|
||||
""
|
||||
argument arguments
|
||||
|
||||
argument
|
||||
ws "<argument name=" tag "/>" ws
|
||||
|
||||
instructions
|
||||
ws "" ws
|
||||
instruction instructions
|
||||
|
||||
instruction
|
||||
ws _instruction ws
|
||||
|
||||
_instruction
|
||||
value
|
||||
assign
|
||||
integer
|
||||
float
|
||||
string
|
||||
array
|
||||
add
|
||||
subtract
|
||||
multiply
|
||||
divide
|
||||
and
|
||||
or
|
||||
not
|
||||
equal
|
||||
greater
|
||||
lower
|
||||
call
|
||||
return
|
||||
if
|
||||
for
|
||||
each
|
||||
while
|
||||
|
||||
value
|
||||
"<value variable=" tag "/>"
|
||||
|
||||
assign
|
||||
"<assign variable=" tag ">" instruction "</assign>"
|
||||
|
||||
integer
|
||||
"<integer value=" tag "/>"
|
||||
"<integer>" instruction "</integer>"
|
||||
|
||||
float
|
||||
"<float value=" tag "/>"
|
||||
"<float>" instruction "</float>"
|
||||
|
||||
string
|
||||
"<string value=" tag "/>"
|
||||
"<string>" instruction "</string>"
|
||||
|
||||
array
|
||||
"<array>" instructions "</array>"
|
||||
|
||||
add
|
||||
"<add>" instructions "</add>"
|
||||
|
||||
subtract
|
||||
"<subtract>" instructions "</subtract>"
|
||||
|
||||
multiply
|
||||
"<multiply>" instructions "</multiply>"
|
||||
|
||||
divide
|
||||
"<divide>" instructions "</divide>"
|
||||
|
||||
and
|
||||
"<and>" instructions "</and>"
|
||||
|
||||
or
|
||||
"<or>" instructions "</or>"
|
||||
|
||||
not
|
||||
"<not>" instruction "</not>"
|
||||
|
||||
equal
|
||||
"<equal>" instruction instruction "</equal>"
|
||||
|
||||
greater
|
||||
"<greater>" instruction instruction "</greater>"
|
||||
|
||||
lower
|
||||
"<lower>" instruction instruction "</lower>"
|
||||
|
||||
call
|
||||
"<call function=" tag ">" ws "<arguments>" instructions "</arguments>" ws "</call>"
|
||||
"<call>" instruction "<arguments>" instructions "</arguments>" ws "</call>"
|
||||
|
||||
return
|
||||
"<return>" instruction "</return>"
|
||||
|
||||
if
|
||||
"<if>" ws instruction ws "<then>" instructions "</then>" ws "</if>"
|
||||
"<if>" ws instruction ws "<then>" instructions "</then>" ws "<else>" instructions "</else>" ws "</if>"
|
||||
|
||||
each
|
||||
"<each variable=" tag ">" instruction do "</each>"
|
||||
|
||||
while
|
||||
"<while>" instruction do "</while>"
|
||||
|
||||
for
|
||||
"<for variable=" tag ">" ws from to step do "</for>"
|
||||
|
||||
from
|
||||
ws "<from>" instruction "</from>" ws
|
||||
|
||||
to
|
||||
ws "<to>" instruction "</to>" ws
|
||||
|
||||
step
|
||||
ws "<step>" instruction "</step>" ws
|
||||
|
||||
do
|
||||
ws "<do>" instructions "</do>" ws
|
||||
```
|
||||
Reference in New Issue
Block a user