Beispiel #1
0
        public string getReadableString()
        {
            //return "phrase{}";


            StringBuilder str = new StringBuilder();

            str.Append(phraseClass.getReadableString());
            str.Append(": ");
            for (int i = 0; i < pattern.Length; i++)
            {
                str.Append(pattern[i].getReadableString());
                if (argNames != null && argNames[i] != null)
                {
                    str.Append("[");
                    str.Append(argNames[i].getReadableString());
                    str.Append("]");
                }
                str.Append(" ");
            }
            if (pattern.Length > 0)
            {
                str.Append(" ");
            }

//			if (pattern.Length > 0)
//				str.Remove(str.Length - 1, 1);

            str.Append("-> ");
            str.Append(getValueDescriptionString());

            return(str.ToString());
        }
Beispiel #2
0
        //	Read a text expression and reduce it to a string
        //	textStart = opening "", textEnd = object after closing ""
        public string parseTextExpressionIntoString(PNode textStart, PNode textEnd)
        {
            StringBuilder str = new StringBuilder();

            int prevObjSpaceRequest = 0;
            int thisObjSpaceRequest = 0;

            for (PNode node = textStart.next;
                 node != null && node.next != textEnd;
                 node = node.next)
            {
                ProseObject obj = node.value;

                //	WARNING:  MUST COME FIRST BECAUSE IT MAY CHANGE THE VALUE OF node
                //	Left square bracket opens an inline prose expression that must be evaluated
                if (obj == LeftSquareBracket)
                {
                    bool didReduce;
                    node = reduceParentheticalExpression(node, out didReduce, LeftSquareBracket, RightSquareBracket);
                    obj  = node.value;
                }

                //	String literals substitute their contents directly
                if (obj is StringLiteralObject)
                {
                    str.Append(((StringLiteralObject)obj).literal);
                    thisObjSpaceRequest = -1;
                }
                else
                {
                    if (prevObjSpaceRequest != -1)
                    {
                        str.Append(" ");
                    }

                    str.Append(obj.getReadableString());
                    thisObjSpaceRequest = 1;
                }

//				if (prevObjSpaceRequest != -1 && thisObjSpaceRequest != -1)
//					str.Append(" ");

                //	Update
                prevObjSpaceRequest = thisObjSpaceRequest;
            }

            if (str[str.Length - 1] == ' ')
            {
                str.Remove(str.Length - 1, 1);
            }

            return(str.ToString());
        }
Beispiel #3
0
        public string getValueDescriptionString()
        {
            //	If the value hasn't been determined, look up a static description instead.
            if (value == null)
            {
                return(getStaticValueDescriptionString());
            }

            StringBuilder str = new StringBuilder();

            for (int i = 0; i < value.Length; i++)
            {
                if (value[i] is ArgRefObject)
                {
                    int         argIdx  = ((ArgRefObject)value[i]).reffedArgIndex;
                    ProseObject argName = argNames[argIdx];
                    if (argName != null)
                    {
                        str.Append(argName.getReadableString());
                    }
                    else
                    {
                        str.Append(pattern[argIdx].getReadableString());
                    }
                }
                else
                {
                    str.Append(value[i].getReadableString());
                }

                str.Append(" ");
            }

            if (value.Length > 0)
            {
                str.Remove(str.Length - 1, 1);
            }

            return(str.ToString());
        }
Beispiel #4
0
        public string getReadableString()
        {
            StringBuilder s = new StringBuilder(40);

            for (int i = 0; i < patternElements.Count; i++)
            {
                s.Append(patternElements[i].getReadableString());
                ProseObject eltName = elementNames[i];
                if (eltName != null)
                {
                    s.Append("[");
                    s.Append(eltName.getReadableString());
                    s.Append("]");
                }
                s.Append(" ");
            }
            //	Throw out the extra space at the end
            if (patternElements.Count > 0)
            {
                s.Remove(s.Length - 1, 1);
            }

            return(s.ToString());
        }
Beispiel #5
0
 public string getReadableString()
 {
     return("LoadAndBindAssembly{\"" + dllName + "\" <- " + rawWord.getReadableString() + "}");
 }