header{ package feb_07; } //Analizador SINTCTICO class Anasint extends Parser; options { buildAST = true; } tokens { HIERARCHY="HIERARCHY"; ROOT="ROOT"; OFFSET="OFFSET"; CHANNELS="CHANNELS"; JOINT="JOINT"; END="END SITE"; MOTION="MOTION"; FRAMES="FRAMES"; TIME="FRAME TIME"; DATA="DATA"; JOINTS; } hierarchy : HIERARCHY^ root motion EOF! ; root : ROOT^ IDENT LLA! offset channels joints LLC! ; offset : OFFSET^ NUMERO NUMERO NUMERO ; channels : CHANNELS^ NUMERO (IDENT)* ; joints : ((JOINT IDENT LLA offset channels end)=>joint | nested_joint)+ {#joints=#(#[JOINTS,"JOINTS"],#joints);} ; joint : JOINT^ IDENT LLA! offset channels end LLC! ; nested_joint : JOINT^ IDENT LLA! offset channels joints LLC! ; end : END LLA! offset LLC! ; motion : MOTION frames time data ; frames : FRAMES DOSPTS! NUMERO ; time : TIME DOSPTS! NUMERO ; data : (NUMERO)+ ;