Die Lua-Syntax ist wie folgt definiert:
chunk -> { stat [ ; ] } block -> chunk stat -> varlist1 = explist1 | functioncall | do block end | while exp do block end | repeat block until exp | if exp then block { elseif exp then block } [ else block ] end | return [ explist1 ] | break | for Name = exp , exp [ , exp ] do block end | for Name { , Name } in explist1 do block end | function funcname funcbody | local function Name funcbody | local namelist [ init ] funcname -> Name { . Name } [ : Name ] varlist1 -> var { , var } var -> Name | prefixexp [ exp ] | prefixexp . Name namelist -> Name { , Name } init -> = explist1 explist1 -> { exp , } exp exp -> nil | false | true | Number | Literal | function | prefixexp | tableconstructor | exp binop exp | unop exp prefixexp -> var | functioncall | ( exp ) functioncall -> prefixexp args | prefixexp : Name args args -> ( [ explist1 ] ) | tableconstructor | Literal function -> function funcbody funcbody -> ( [ parlist1 ] ) block end parlist1 -> Name { , Name } [ , ... ] | ... tableconstructor -> { [ fieldlist ] } fieldlist -> field { fieldsep field } [ fieldsep ] field -> [ exp ] = exp | name = exp | exp fieldsep -> , | ; binop -> + | - | * | / | ^ | .. | < | <= | > | >= | == | ~= | and | or unop -> - | not
Ich habe versucht diese Syntax von Lua in Rail-Diagrammen zu gestalten. Das Ergebnis ist das hier bereitstehende PDF-Dokument.
Sollte mir ein Fehler unterlaufen sein bin ich fόr Korrekturen dankbar.
Etwas irritiert bin ich όber
fieldlist -> field { fieldsep field } [ fieldsep ]
Stimmt das optionale fieldsep am Ende?