7.3.สรุปไวยากรณ์ (Grammar summary)

EBNF เพื่อให้ข้อมูล (informative). ช่องว่างระหว่างโทเคนใส่ได้อิสระ; กฎความหมายใน §7.4–§7.8 เป็นข้อบังคับ.

script      = [ item ] , { ( "|" | "||" ) , [ item ] } ;
item        = operand , [ ";" , operand ]                     (* 1.1.1 *)
            | pause | shift | reset | expr | "@none" | "@break" ;
operand     = gloss | group | spell | anchor | mirror | buoy | compound | viseme ;
gloss       = name , [ "(" , [ number ] , [ "," , label ] , ")" ] , [ "!" ] ;   (* "!" 1.1.1 *)
name        = word , [ "#" , word ] ;
group       = "[" , member , { "|" , member } , "]" ,
              [ "(" , [ number ] , [ "," , [ number ] , [ "," , label ] ] , ")" ] ;
member      = gloss | spell ;
run         = unit , { "|" , unit } ;
unit        = gloss | group ;
spell       = "$spell" , [ "(" , [ number ] , [ "," , [ number ] , [ "," , [ number ] ,
              [ "," , [ number ] , [ "," , label ] ] ] ] , ")" ] , "{" , run , "}" ;
num4        = [ number ] , [ "," , [ number ] , [ "," , [ number ] , [ "," , [ number ] ] ] ] ;
pause       = "$pause" , [ "(" , [ number ] , ")" ] ;
shift       = "$shift" , [ "(" , num4 , ")" ] ;
reset       = "$reset" ;
expr        = "@" , word , [ "(" , [ number ] , [ "," , [ number ] , [ "," , [ number ] ] ] , ")" ] ;
anchor      = "$anchor" , "(" , site , ")" , "{" , run , "}" ;                (* 1.1.1 *)
mirror      = "$mirror" , [ args ] , "{" , run , "}" ;                        (* 1.1.1 *)
buoy        = "$buoy" , [ args ] , "{" , run , "}" , "{" , run , "}" ;        (* 1.1.1 *)
compound    = "$compound" , [ args ] , "{" , cop , "}" , "{" , cop , "}" ;   (* 1.1.1 *)
cop         = operand , [ ";" , operand ] ;
viseme      = "$viseme" , "(" , text , [ "," , number ] , ")" ;               (* 1.1.1 *)
args        = "(" , [ number ] , [ "," , label ] , ")" ;
site        = "neck" | "forehead" | "mouth" | "navel" | "shoulder_l" | "shoulder_r" ;
usercall    = "%" , ident , "(" , { char - ( "(" | ")" ) } , ")" ;           (* 1.1.2, pre-pass *)
ident       = ( letter | "_" ) , { letter | digit | "_" } ;                   (* ASCII *)

usercall ไม่อยู่ในไวยากรณ์โทเคน: การเรียกถูกขยายเป็นข้อความก่อนแบ่งโทเคน (§7.8) หลังขยายแล้ว สคริปต์จึงไม่มีการเรียก % เหลืออยู่.