Пример #1
0
 public static string getCallString(CallData data, bool includeComment)
 {
     #if FULL_VERSION
     string lineNo = string.Empty;// string.Format("/* {0} */", data.GetLine());
     string line = string.Empty;
     if (data.IsHighOrder) {
         line = getCallString(data.Call, includeComment);
     } else if (data.HaveId()) {
         line = quoteString(data.GetId(), data.GetIdType());
     }
     if (data.HaveParam()) {
         int paramClass = (data.GetParamClass() & (int)CallData.ParamClassEnum.PARAM_CLASS_UNMASK);
         if ((int)CallData.ParamClassEnum.PARAM_CLASS_OPERATOR == paramClass) {
             switch (data.GetParamNum()) {
                 case 1:
                     return string.Format("{0} {1}", line, data.GetParam(0).ToScriptString(includeComment));
                 case 2:
                     return string.Format("{0} {1} {2}", data.GetParam(0).ToScriptString(includeComment), line, data.GetParam(1).ToScriptString(includeComment));
                 default:
                     return line;
             }
         } else {
             string lbracket = string.Empty;
             string rbracket = string.Empty;
             switch (paramClass) {
                 case (int)CallData.ParamClassEnum.PARAM_CLASS_PARENTHESIS:
                     lbracket = "(";
                     rbracket = ")";
                     break;
                 case (int)CallData.ParamClassEnum.PARAM_CLASS_BRACKET:
                     lbracket = "[";
                     rbracket = "]";
                     break;
                 case (int)CallData.ParamClassEnum.PARAM_CLASS_PERIOD:
                     lbracket = ".";
                     rbracket = string.Empty;
                     break;
                 case (int)CallData.ParamClassEnum.PARAM_CLASS_PERIOD_PARENTHESIS:
                     lbracket = ".(";
                     rbracket = ")";
                     break;
                 case (int)CallData.ParamClassEnum.PARAM_CLASS_PERIOD_BRACKET:
                     lbracket = ".[";
                     rbracket = "]";
                     break;
                 case (int)CallData.ParamClassEnum.PARAM_CLASS_PERIOD_BRACE:
                     lbracket = ".{";
                     rbracket = "}";
                     break;
             }
             StringBuilder stream = new StringBuilder();
             stream.Append(lbracket);
             int ct = data.GetParamNum();
             for (int i = 0; i < ct; ++i) {
                 if (i > 0)
                     stream.Append(",");
                 ISyntaxComponent param = data.GetParam(i);
                 if ((int)CallData.ParamClassEnum.PARAM_CLASS_PERIOD == paramClass)
                     stream.Append(unquoteString(param.ToScriptString(includeComment)));
                 else
                     stream.Append(param.ToScriptString(includeComment));
             }
             stream.Append(rbracket);
             return string.Format("{0}{1}{2}", lineNo, line, stream.ToString());
         }
     } else {
         return string.Format("{0}{1}", lineNo, line);
     }
     #else
       return string.Empty;
     #endif
 }