doc-src/Ref/defining.tex
changeset 14955 08ee855c1d94
parent 14948 aa6d54648b32
child 14960 89cce4e95a22
equal deleted inserted replaced
14954:f1789e22ceec 14955:08ee855c1d94
   229 \rmindex{numerals}, \rmindex{strings}.  They are denoted by \ndxbold{id},
   229 \rmindex{numerals}, \rmindex{strings}.  They are denoted by \ndxbold{id},
   230 \ndxbold{var}, \ndxbold{tid}, \ndxbold{tvar}, \ndxbold{num}, \ndxbold{xnum},
   230 \ndxbold{var}, \ndxbold{tid}, \ndxbold{tvar}, \ndxbold{num}, \ndxbold{xnum},
   231 \ndxbold{xstr}, respectively.  Typical examples are {\tt x}, {\tt ?x7}, {\tt
   231 \ndxbold{xstr}, respectively.  Typical examples are {\tt x}, {\tt ?x7}, {\tt
   232   'a}, {\tt ?'a3}, {\tt \#42}, {\tt ''foo bar''}.  Here is the precise syntax:
   232   'a}, {\tt ?'a3}, {\tt \#42}, {\tt ''foo bar''}.  Here is the precise syntax:
   233 \begin{eqnarray*}
   233 \begin{eqnarray*}
   234 id        & =   & letter~quasiletter^* \\
   234 id        & =   & letter\,quasiletter^* \\
   235 longid    & =   & id\mbox{\tt .}id~\dots~id \\
   235 longid    & =   & id (\mbox{\tt .}id)^+ \\
   236 var       & =   & \mbox{\tt ?}id ~~|~~ \mbox{\tt ?}id\mbox{\tt .}nat \\
   236 var       & =   & \mbox{\tt ?}id ~~|~~ \mbox{\tt ?}id\mbox{\tt .}nat \\
   237 tid       & =   & \mbox{\tt '}id \\
   237 tid       & =   & \mbox{\tt '}id \\
   238 tvar      & =   & \mbox{\tt ?}tid ~~|~~
   238 tvar      & =   & \mbox{\tt ?}tid ~~|~~
   239                   \mbox{\tt ?}tid\mbox{\tt .}nat \\
   239                   \mbox{\tt ?}tid\mbox{\tt .}nat \\
   240 num       & =   & nat ~~|~~ \mbox{\tt-}nat \\
   240 num       & =   & nat ~~|~~ \mbox{\tt-}nat \\
   241 xnum      & =   & \mbox{\tt \#}nat ~~|~~ \mbox{\tt \#-}nat \\
   241 xnum      & =   & \mbox{\tt \#}nat ~~|~~ \mbox{\tt \#-}nat \\
   242 xstr      & =   & \mbox{\tt ''\rm text\tt ''} \\[1ex]
   242 xstr      & =   & \mbox{\tt ''~\dots~\tt ''} \\[1ex]
   243 letter & = & latin ~|~ symletter \\
   243 letter & = & latin ~|~ \verb,\<,latin\verb,>, ~|~ \verb,\<,latin\,latin\verb,>, ~|~ greek \\
       
   244 quasiletter & = & letter ~|~ digit ~|~ \verb,_, ~|~ \verb,', ~|~ \verb,\<^isub>, ~|~ \verb,\<^isup>, \\
   244 latin & = & \verb,a, ~|~ \dots ~|~ \verb,z, ~|~ \verb,A, ~|~ \dots ~|~ \verb,Z, \\
   245 latin & = & \verb,a, ~|~ \dots ~|~ \verb,z, ~|~ \verb,A, ~|~ \dots ~|~ \verb,Z, \\
   245 digit & = & \verb,0, ~|~ \dots ~|~ \verb,9, \\
   246 digit & = & \verb,0, ~|~ \dots ~|~ \verb,9, \\
   246 nat & = & digit^+ \\
   247 nat & = & digit^+ \\
   247 quasiletter & = & letter ~|~ digit ~|~ \verb,_, ~|~ \verb,', ~|~ \verb,\<^isub>, ~|~ \verb,\<^isup>, \\
   248 greek & = & \verb,\<alpha>, ~|~ \verb,\<beta>, ~|~ \verb,\<gamma>, ~|~ \verb,\<delta>, ~| \\
   248 symletter & = & \verb,\<, (latin ~|~ latin~latin ~|~ greek) \verb,>, \\
   249       &   & \verb,\<epsilon>, ~|~ \verb,\<zeta>, ~|~ \verb,\<eta>, ~|~ \verb,\<theta>, ~| \\
   249 greek & = & \verb,alpha, ~|~ \verb,beta, ~|~ \verb,gamma, ~|~ \verb,delta, ~|~ \verb,epsilon, ~|~ \verb,zeta, ~|~ \verb,eta, ~| \\
   250       &   & \verb,\<iota>, ~|~ \verb,\<kappa>, ~|~ \verb,\<mu>, ~|~ \verb,\<nu>, ~| \\
   250         &   & \verb,theta, ~|~ \verb,iota, ~|~ \verb,kappa, ~|~ \verb,mu, ~|~ \verb,nu, ~|~ \verb,xi, ~|~ \verb,pi, ~|~ \verb,rho, ~| \\
   251       &   & \verb,\<xi>, ~|~ \verb,\<pi>, ~|~ \verb,\<rho>, ~|~ \verb,\<sigma>, ~| \\
   251         &   & \verb,sigma, ~|~ \verb,tau, ~|~ \verb,upsilon, ~|~ \verb,phi, ~|~ \verb,psi, ~|~ \verb,omega, ~|~ \verb,Gamma, ~| \\
   252       &   & \verb,\<tau>, ~|~ \verb,\<upsilon>, ~|~ \verb,\<phi>, ~|~ \verb,\<psi>, ~| \\
   252         &   & \verb,Delta, ~|~ \verb,Theta, ~|~ \verb,Lambda, ~|~ \verb,Xi, ~|~ \verb,Pi, ~|~ \verb,Sigma, ~|~ \verb,Upsilon, ~| \\
   253       &   & \verb,\<omega>, ~|~ \verb,\<Gamma>, ~|~ \verb,\<Delta>, ~|~ \verb,\<Theta>, ~| \\
   253         &   & \verb,Phi, ~|~ \verb,Psi, ~|~ \verb,Omega,
   254       &   & \verb,\<Lambda>, ~|~ \verb,\<Xi>, ~|~ \verb,\<Pi>, ~|~ \verb,\<Sigma>, ~| \\
       
   255       &   & \verb,\<Upsilon>, ~|~ \verb,\<Phi>, ~|~ \verb,\<Psi>, ~|~ \verb,\<Omega>, \\
   254 \end{eqnarray*}
   256 \end{eqnarray*}
   255 The lexer repeatedly takes the longest prefix of the input string that
   257 The lexer repeatedly takes the longest prefix of the input string that
   256 forms a valid token.  A maximal prefix that is both a delimiter and a
   258 forms a valid token.  A maximal prefix that is both a delimiter and a
   257 name is treated as a delimiter.  Spaces, tabs, newlines and formfeeds
   259 name is treated as a delimiter.  Spaces, tabs, newlines and formfeeds
   258 are separators; they never occur within tokens, except those of class
   260 are separators; they never occur within tokens, except those of class