;+
; NAME:
;	PARSE_OP_TOKEN
;
;
; PURPOSE:
;	Convert an operator toke string from PARSE_OP into idl code.
;
;
; CATEGORY:
;	OPS
;
;
; CALLING SEQUENCE:
;	code=parse_op_token(token, index)
;
;
; INPUTS:
;	token	string	The token (a whitespace separated list of op
;			and args)
;	index	int	The token index number.
;
;
; OUTPUTS:
;	code	string	The IDL call generated.
;
;
; MODIFICATION HISTORY:
;	Original: 30/10/03; SJT
;-

function parse_op_token, token, index, get_level = get_level

stoken = strtok(token, /extract)

op = stoken[0]
stoken = stoken[1:*]

keys = where(stregex(stoken, '[/=]', /bool), nkey, comp = args, $
             ncomp = nargs)

if nargs eq 0 then begin
    smei_msg, /alert, "No arguments given"
    return, ''
endif

rv = string(index, op, format = $
            '("token",I0," = make_smei_opf(''",a,"'', ")')

for j = 0, nargs-1 do begin
    if strpos(stoken[args[j]], '#') eq 0 then $
      s =  strmid(stoken[args[j]], 1, strlen(stoken[args[j]])) $
    else s = "'"+stoken[args[j]]+"'"
    rv = rv+s
    if j lt nargs-1 or nkey ne 0 then rv = rv+", " $
    else if keyword_set(get_level) then $
      rv = rv+', get_level='+string(get_level)+')'$
    else rv = rv+")"
endfor

for j = 0, nkey-1 do begin
    rv = rv+stoken[keys[j]]
    if j lt nkey-1 then rv = rv+", " $
    else if keyword_set(get_level) then $
      rv = rv+', get_level='+string(get_level)+')'$
    else rv = rv+")"
endfor

return, rv

end
