'Convert a string representation of a feature structure (as
displayed by repr) into a ``FeatStruct``.  This process
imposes the following restrictions on the string
representation:
- Feature names cannot contain any of the following:
whitespace, parentheses, quote marks, equals signs,
dashes, commas, and square brackets.  Feature names may
not begin with plus signs or minus signs.
- Only the following basic feature value are supported:
strings, integers, variables, None, and unquoted
alphanumeric strings.
- For reentrant values, the first mention must specify
a reentrance identifier and a value; and any subsequent
mentions must use arrows (``\'->\'``) to reference the
reentrance identifier.'

def fromstring(self, s, fstruct=None):

    s = s.strip()
    (value, position) = self.read_partial(s, 0, {}, fstruct)
    if (position != len(s)):
        self._error(s, u'end    of    string', position)
    return value
