torsdag 15 mars 2012

Sidan 73 i boken

Sidan 73 i boken Microsoft SQL Server 2008, sektionen Creating Tables innehåller en otäck BNF-grammatik. En grammatik i programspråkssammanhang är en fullständig beskrivning av alla de former som ett programspråkskommando kan anta. Sidan 73 anger hur ett CREATE TABLE-kommando kan se ut. Fyrkantparenteserna [ och ] innesluter någonting som man kan välja att ange noll eller en gång. I exemplet

XYZ [ FLERP ]

kan man ange FLERP noll eller en gång, alltså är XYZ och XYZ FLERP godtagbara varianter. Man kan ha [ ... ] inom [ ... ], i exemplet

XYZ [ FLERP [ UGH ] ]

vilket innebär att man kan välja UGH om man väljer FLERP, men endast om man väljer FLERP, så att XYZ, XYZ FLERP och XYZ FLERP UGH är godtagbara varianter.

Måsvingeparenteserna { och }, med strecket | betecknar valmöjligheter. Det illustreras bäst genom ett exempel:

{ APA | BANAN | CITRON }

Innebär att man måste ha med exakt en av APA, BANAN eller CITRON.

Något helt horribelt, men typiskt Microsoft, är att de skall hitta på sin alldeles egna notation. Det jag syftar på är [ ,...n ] som inte betyder att man har valet att lägga in exakt en ,...n. I stället är det så att en sträng term sepr...n ] är en lista av term:er separerade av sepr, så att till exempel

OK [ *...n ]

tillåter OK, OK * OK, OK * OK * OK, OK * OK * OK * OK, och så vidare. Specialfallet [ ...n ] betyder att det inte finns något sepr, så att

OK [ ...n ]

tillåter OK, OK OK, OK OK OK, OK OK OK OK, och så vidare.

Inga kommentarer: