Skip to main content

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] [List Home]
Re: [m2t-dev] [MTL] Standard library issues

About the strtok operation: on second thoughts I think you are right.
This is probably a better description:

The strtok() function returns the next token from the string self,
where tokens are strings separated by characters from the string
delimiters. The function should be passed 0 as the value of flagto get
the first token, and 1  to get the subsequent tokens. The function
returns null when there are no more tokens.

2008/8/13 Laurent Goubet <laurent.goubet@xxxxxxx>
>
> Hi Arjan,
>
> 1) Yup, I think I'll then keep the specification's "substitute" accepting a String, and create a "replace" accepting a regex. Another problem on those is that the specification defines "substitute" to replace "the occurence of the substring". I think we should also add a "substituteAll" if there is more than one occurence of the substring in the target String.
>
> 2) & 3) Yes, toUpper() and toLower() are both mentionned in the OCL specification on String.
>
> 4) Hum, your explanation doesn't match with the spec as far as we understand it. Specification tells the second parameter of strtok is a flag which will take either 0 (first invocation) or 1 (subsequent invocations). If the explanation you gave here is the expected behavior of the strtok operation, I think the spec should be clarified on it.
>
> Regards,
>
> Laurent Goubet
> Obeo
>
> Arjan Kok a écrit :
>>
>> Hi Laurent,
>>
>> ad 1). Good idea. Perhaps you can make 2 functions, one that accepts a string,and one that accepts a regular expression. In that way, you only extend the M2T spec.
>> ad 2&3). Ok, are you sure they are mentioned in the OCL spec as standard lib functions? Then we probably overlooked them in the OCL spec.
>> ad 4). strtok is based on the old-style C strtok function. The flag parameter indicates the sequence number of the token.You could use it for example in an iteration.
>> For example "a$b$c$d".strtok("$",0) returns a, but "a$b$c$d".strtok("$",3) returns d
>>
>> Regards, Arjan.
>>
>>
>> 2008/8/5 Laurent Goubet <laurent.goubet@xxxxxxx <mailto:laurent.goubet@xxxxxxx>>
>>
>>    ah, forgot one of the String ones :p.
>>
>>    4) strtok( String s1, Integer flag ) : String
>>    Breaks the string self into a sequence of tokens each of which is
>>    delimited by any character in string s1. The parameter flag should
>>    be 0 when strtok is called for the first time, 1 subsequently.
>>
>>    We fail to understand the meaning of the second parameter of this
>>    method. What did you intend the flag to be used for in the
>>    implementation? It seems pointless and troublesome to force the
>>    user to pass 0 or 1 explicitely to this method when he wants to
>>    make use of it.
>>
>>    Laurent Goubet
>>    Obeo
>>
>>    Laurent Goubet a écrit :
>>
>>        Hi Arjan,
>>
>>        I was looking at the specifications as to how the OCL standard
>>        library has been extended for the needs of MTL and stumbled
>>        upon a set of issues on which I would need your input. As I
>>        only began the implementation, I'll only list the issues I
>>        have with the "String" operations :
>>
>>        1) substitute( String r, String t ) : String
>>        Substitutes substring r in self by substring t and returns the
>>        resulting string. If there is no occurrence of the substring,
>>        it returns the original string.
>>
>>        I think it would be nice to tweak the specification so that
>>        the first parameter would be a regular expresion instead of a
>>        plain String. I'd love to be able to use an equivalent of the
>>        Java's "replaceAll" method for MTL Strings.
>>
>>        2) toUpper() : String
>>        Creates a copy of self with all characters converted to
>>        uppercase and returns it.
>>
>>        This has been listed as a method that should be added to
>>        "extend the OCL standard library", but this method is
>>        *already* specified in the OCL specifications for the
>>        aforementioned library and should be removed from the MTL
>>        specification.
>>
>>        3)toLower() : String
>>        Creates a copy of self with all characters converted to
>>        lowercase and returns it.
>>
>>        As above, this is already present in the OCL standard library
>>        and should probably be removed from the MTL specification.
>>
>>        I will list more of these issues here as I encounter them
>>        while implementing the specification.
>>
>>        Regards
>>
>>        Laurent Goubet
>>        Obeo
>>        _______________________________________________
>>        m2t-dev mailing list
>>        m2t-dev@xxxxxxxxxxx <mailto:m2t-dev@xxxxxxxxxxx>
>>        https://dev.eclipse.org/mailman/listinfo/m2t-dev
>>
>>
>>
>>    _______________________________________________
>>    m2t-dev mailing list
>>    m2t-dev@xxxxxxxxxxx <mailto:m2t-dev@xxxxxxxxxxx>
>>    https://dev.eclipse.org/mailman/listinfo/m2t-dev
>>
>>
>
>
> _______________________________________________
> m2t-dev mailing list
> m2t-dev@xxxxxxxxxxx
> https://dev.eclipse.org/mailman/listinfo/m2t-dev
>


Back to the top