1234567891011121314151617181920212223242526272829303132333435363738394041typearray_index=|Indexofint|Wildcard|Last|LastOffsetofinttyperange={start_idx:array_index;end_idx:array_index;}typepath_leg=|Memberofstring|ArrayAccessofarray_index|ArrayRangeofrange|MemberWildcard|DoubleWildcardtypet={scope:string;legs:path_leglist;}moduleSyntax=structletroot={scope="$";legs=[]}let(/)pathleg={pathwithlegs=path.legs@[leg]}let(//)pathlegs={pathwithlegs=path.legs@legs}let(~.)name=Membernameletidxn=ArrayAccess(Indexn)(* idx 0 *)letany=ArrayAccessWildcard(* any *)letlast=ArrayAccessLast(* last *)letwildcard=MemberWildcard(* wildcard *)letrangestartend_=ArrayRange{start_idx=Indexstart;end_idx=Indexend_}end