tokenString method

String tokenString(
  1. ClipParam param,
  2. int code,
  3. dynamic token
)

Implementation

String tokenString( ClipParam param, int code, dynamic token ){
	String string = "";
	ParamString real = ParamString();
	ParamString imag = ParamString();
	String tmp = "";
	int cur;

	switch( code ){
	case ClipGlobal.codeTop:
		string = "(";
		break;
	case ClipGlobal.codeEnd:
		string = ")";
		break;
	case ClipGlobal.codeArrayTop:
		string = "{";
		break;
	case ClipGlobal.codeArrayEnd:
		string = "}";
		break;
	case ClipGlobal.codeParamAns:
		string = "&";
		break;
	case ClipGlobal.codeParamArray:
		string = "[]";
		break;
	case ClipGlobal.codeVariable:
		if( param.variable().label().label(token) != null ){
			string = param.variable().label().label(token)!;
		} else if( token == 0 ){
			string = "@";
		} else {
			string = "@${String.fromCharCode( token )}";
		}
		break;
	case ClipGlobal.codeArray:
		if( param.array().label().label(token) != null ){
			string = param.array().label().label(token)!;
		} else {
			string = "@@${String.fromCharCode( token )}";
		}
		break;
	case ClipGlobal.codeAutoVar:
	case ClipGlobal.codeAutoArray:
	case ClipGlobal.codeGlobalVar:
	case ClipGlobal.codeGlobalArray:
	case ClipGlobal.codeLabel:
		string = token;
		break;
	case ClipGlobal.codeOperator:
		string = _tokenOp[token];
		break;
	case ClipGlobal.codeSe:
		string = "\$";
		if( token == ClipGlobal.seNull ){
			break;
		} else if( token - 1 < _tokenSe.length ){
			string += _tokenSe[token - 1];
			break;
		}
		token -= ClipGlobal.seFunc;
		// そのまま下に流す
		continue caseClipGlobalCodeFunction;
	caseClipGlobalCodeFunction:
	case ClipGlobal.codeFunction:
		string += _tokenFunc[token];
		break;
	case ClipGlobal.codeStatement:
		string = _tokenStat[token];
		break;
	case ClipGlobal.codeExtFunc:
		string = "!$token";
		break;
	case ClipGlobal.codeCommand:
		string = ":";
		if( token != ClipGlobal.commandNull ){
			string += _tokenCommand[token - 1];
		}
		break;
	case ClipGlobal.codeConstant:
		valueToString( param, token, real, imag );
		tmp = real.str() + imag.str();
		cur = 0;
		do {
			switch( ClipMath.charAt( tmp, cur ) ){
			case '-':
			case '+':
				string += '\\';
				break;
			}
			string += ClipMath.charAt( tmp, cur );
			cur++;
		} while( cur < tmp.length );
		break;
	case ClipGlobal.codeString:
		cur = 0;
		do {
			if( token.charAt( cur ) == ']' ){
				tmp += '\\';
			}
			tmp += token.charAt( cur );
			cur++;
		} while( cur < token.length );
		string = "[\"$tmp]";
		break;
	default:
		string = "";
		break;
	}
	if( ClipMath.charAt( string, 0 ) == '\$' ){
		return string.toUpperCase();
	}
	return string;
}