From: Pablo R. M. <rod...@gm...> - 2010-06-15 15:33:20
|
Thanks for your answer, Petra! It was pretty useful. Cheers, Pablo On Thu, Jun 10, 2010 at 6:46 AM, Petra Malik <Pet...@ec...>wrote: > Hi Pablo, > > You wrote: > > I am having troubles in determining, from the Z Standard, which names > > are valid (and which are not) for user-defined operators. In Page 28, > > the Z Standard assures "Each operator template creates additional > > keyword-like associations between WORDs and operator tokens.". However, > > not all WORD seems to be accepted. And I could not find more > > restrictions about this issue in the Z Standard. > > There are a few more restrictions on user-defined operators on page 35 > (8.3 User-defined operators). Also relevant to your question is page 25 > (7.2 Formal definition of context-free lexis) and page 26 (7.3 > Additional lexical restrictions, notes and examples) as well as page 84 > (Annex A; A.2 LaTeX mark-up). > > > the following are rejected: > > > \_ <1 \_: X \rel X > > "<1" is lexed as two tokens: the DECORWORD "<" followed by DECORWORD > "1". If you have a look at page 25, you'll find that "1" is an ALPHASTR > while "<" is a SYMBOLSTR and if you want to form a word out of those you > have to put WORDGLUE between the two like in "<_1". > > > > \_ <? \_: \nat \rel \nat \\ > > "<?" is actually a DECORWORD but since you are using LaTeX mark-up and > spaces are added around "<" (see page 84 of the Standard) it is lexed as > two words. To avoid having spaces added when translating from LaTeX to > Unicode add braces: "{<}?" > > > \function 40 \leftassoc (\_ ope \_) > > Here you need hard spaces: "\_~ope~\_" or even better use the \varg > latex command "\varg ope \varg" to avoid having the lexer merge the > underscore and "ope" to a word. (Note that "_" is defined as WORDGLUE > on page 21 and then used to glue words on page 25.) > > > I suppose that the name cannot start with a letter > > It can start with a letter as in the ope example above. > > > nor finish with a stroke (case in which it is > > a DECORDWORD instead of a WORD). > > And it can have decorations, too. > > > However, I understand that <1 and 1< are valid WORD's. > > But they are not; see example above. > > > Additionally, which situations, where an operator appear, needs to > > previously define the corresponding operator template paragraph and > > which not? The following two paragraphs are accepted without one of > > these paragraphs: > > > > \begin{gendef}[X] > > \_ <_1 \_: X \rel X > > \end{gendef} > > That's because in one of the toolkits there is an operator template for > "<" and the mapping to operator tokens is based on the WORD part (see > page 27). > > Hope this helps, > Petra > > > ------------------------------------------------------------------------------ > ThinkGeek and WIRED's GeekDad team up for the Ultimate > GeekDad Father's Day Giveaway. ONE MASSIVE PRIZE to the > lucky parental unit. See the prize list and enter to win: > http://p.sf.net/sfu/thinkgeek-promo > _______________________________________________ > CZT-Users mailing list > CZT...@li... > https://lists.sourceforge.net/lists/listinfo/czt-users > |