/itexToMML

To download this project, use:
bzr branch http://golem.ph.utexas.edu/~distler/code/itexToMML/
65 by Jacques Distler
itex2MML 1.4.11
1
/*             itex2MML 1.4.11
2
 *   itex2MML.l last modified 9/3/2013
1 by Jacques Distler
Initial commit.
3
 */
4
5
%{
6
%}
7
%option noyywrap
61 by Jacques Distler
itex2MML 1.4.7: \mathraisebox{voffset}[height][depth]{content}
8
%x MATH ATTRIBUTELIST BBOLD FRAKTUR CALLIGRAPHIC ROMAN PLAINTEXT INT1 INT2 INT3 MATHENV SVGENV SVGEND OPTARG ARRAYOPTIONS COLOPTS TEXTOPTARG TEXTOPTARG1 RAISEBOX1 RAISEBOX2
1 by Jacques Distler
Initial commit.
9
%{
10
#include <string.h>
11
12
#define YYSTYPE char *
13
14
#include "y.tab.h"
15
#include "itex2MML.h"
16
17
#define YY_NEVER_INTERACTIVE 1
18
#define YY_INPUT(buffer,result,max_size) result = s_itex2MML_read (buffer, max_size)
19
20
static int s_itex2MML_read (char * buffer, int max_size);
21
22
#define yylval itex2MML_yylval
58 by Jacques Distler
Nested Extensible Arrows
23
#define itex2MML_optarg_depth 100
1 by Jacques Distler
Initial commit.
24
25
extern char * yylval;
26
27
int itex2MML_lineno = 1;
58 by Jacques Distler
Nested Extensible Arrows
28
int itex2MML_inoptarg[itex2MML_optarg_depth];
29
int itex2MML_optarg_ind = 0;
59 by Jacques Distler
itex2MML 1.4.5: Array Environment
30
int itex2MML_env_start = 0;
1 by Jacques Distler
Initial commit.
31
32
int itex2MML_rowposn = 0;
33
int itex2MML_displaymode = 0;
58 by Jacques Distler
Nested Extensible Arrows
34
1 by Jacques Distler
Initial commit.
35
%} 
36
%%
37
%{ if (itex2MML_rowposn==1) itex2MML_rowposn=0;
38
   if (itex2MML_rowposn==2) itex2MML_rowposn=1;
39
%}
40
58 by Jacques Distler
Nested Extensible Arrows
41
<INITIAL>"$"{1,2}   BEGIN(MATH); itex2MML_inoptarg[0] = 0; itex2MML_rowposn=2; if (yyleng==2) { itex2MML_displaymode=1; return STARTDMATH;}; itex2MML_displaymode=0; return STARTMATH;
42
<INITIAL>"\\[" BEGIN(MATH); itex2MML_inoptarg[0] = 0; itex2MML_rowposn=2; itex2MML_displaymode=1; return STARTDMATH;
1 by Jacques Distler
Initial commit.
43
<INITIAL>EOF    return 0;
44
<INITIAL>"\n" {itex2MML_lineno++; yylval=itex2MML_copy_string(yytext); return CHAR;}
45
<INITIAL>.     {yylval=itex2MML_copy_string(yytext); return CHAR;}
46
47
48
<MATH>{
49
50
51
52
"$"{1,2} |
53
"\\]"           {BEGIN(INITIAL); return ENDMATH;}
54
18 by Jacques Distler
Minor Tweaks
55
1 by Jacques Distler
Initial commit.
56
"^"            return SUP;
57
"_"            return SUB; 
58
"{"[\t\r\n ]*"}"   return EMPTYMROW;
59 by Jacques Distler
itex2MML 1.4.5: Array Environment
59
"{"            {itex2MML_rowposn = 2; if(itex2MML_inoptarg[itex2MML_optarg_ind] != 0) itex2MML_inoptarg[itex2MML_optarg_ind]++; return MROWOPEN;}
60
"}"            {if(itex2MML_inoptarg[itex2MML_optarg_ind] != 0) itex2MML_inoptarg[itex2MML_optarg_ind]--; return MROWCLOSE;}
1 by Jacques Distler
Initial commit.
61
62
"\\left"       itex2MML_rowposn=2; return LEFT;
63
"\\right"      return RIGHT;
64
65
"\\big"   |
66
"\\bigr"  {return BIG;}
67
"\\Big"   |
68
"\\Bigr"  {return BBIG;}
69
"\\bigg"  |
70
"\\biggr" {return BIGG;}
71
"\\Bigg"  |
72
"\\Biggr" {return BBIGG;}
73
74
"\\bigl"  {return BIGL;}
75
"\\Bigl"  {return BBIGL;}
76
"\\biggl" {return BIGGL;}
77
"\\Biggl" {return BBIGGL;}
78
37 by Jacques Distler
itex2MML 1.3.13
79
"\\mathrlap"  {return RLAP;}
80
"\\mathllap"  {return LLAP;}
81
"\\mathclap"  {return CLAP;}
82
"\\rlap" |
1 by Jacques Distler
Initial commit.
83
"\\llap" |
84
"\\ulap" |
85
"\\dlap"               {/* Ignore */ ;}
86
87
88
"&amp;" |
89
"&"         {itex2MML_rowposn=2; return COLSEP;}
90
91
"\\&"           {yylval=itex2MML_copy_string("&amp;"); return MI;}
92
93
"\\$"           {yylval=itex2MML_copy_string("$"); return MI;}
94
"\\%"           {yylval=itex2MML_copy_string("%"); return MI;}
95
96
"\\\\"          itex2MML_rowposn=2; return ROWSEP;
97
98
[a-zA-Z]+       {yylval=itex2MML_copy_string(yytext); return MI;}
99
60 by Jacques Distler
itex2MML 1.4.6
100
[0-9]{1,3}(,[0-9]{3,3})*(\.[0-9]+)? |
101
[0-9]*[\.][0-9]+                   |
102
[0-9]+           {yylval=itex2MML_copy_string(yytext); return MN;}
1 by Jacques Distler
Initial commit.
103
"\\infty"   |
104
"\\infinity"     {yylval=itex2MML_copy_string("&infin;"); return MN;}
105
106
"("   |
107
"["             {yylval=itex2MML_copy_string(yytext); return LEFTDELIM;}
108
54 by Jacques Distler
itex2MML 1.4.0: Extensible Arrows
109
")"   {yylval=itex2MML_copy_string(yytext); return RIGHTDELIM;}
58 by Jacques Distler
Nested Extensible Arrows
110
"]"   {if(itex2MML_inoptarg[itex2MML_optarg_ind]==1 && itex2MML_optarg_ind > 0) {itex2MML_inoptarg[itex2MML_optarg_ind]=0; itex2MML_optarg_ind--; return OPTARGCLOSE;} else {yylval=itex2MML_copy_string(yytext); return RIGHTDELIM;}}
1 by Jacques Distler
Initial commit.
111
112
"\\lbrace" |
113
"\\{"           {yylval=itex2MML_copy_string("{"); return LEFTDELIM;}
114
"\\rbrace" |
115
"\\}"           {yylval=itex2MML_copy_string("}"); return RIGHTDELIM;}
116
117
"\\vert" |
118
"|"             {yylval=itex2MML_copy_string("&VerticalBar;"); return OTHERDELIM;}
119
"\\Vert" |
120
"\\|"           {yylval=itex2MML_copy_string("&DoubleVerticalBar;"); return OTHERDELIM;}
121
122
"\\setminus"   {yylval=itex2MML_copy_string("&setminus;"); return MO;}
123
"\\backslash"   {yylval=itex2MML_copy_string("&bsol;"); return MO;}
124
"\\smallsetminus"   {yylval=itex2MML_copy_string("&#xFE68;"); return MOF;}
125
52 by Jacques Distler
itex2MML 1.3.26
126
"\\sslash" {yylval=itex2MML_copy_string("&parsl;"); return MO;}
30 by Jacques Distler
Version 1.3.6: \sslash
127
1 by Jacques Distler
Initial commit.
128
"\\lfloor" |
129
"\\lceil"  |
65 by Jacques Distler
itex2MML 1.4.11
130
"\\lmoustache" |
1 by Jacques Distler
Initial commit.
131
"\\lang"   |
132
"\\langle"      {yylval=itex2MML_copy2(yytext, ";"); if (yylval != itex2MML_empty_string) yylval[0]='&'; return LEFTDELIM;}
65 by Jacques Distler
itex2MML 1.4.11
133
"\\llangle"     {yylval=itex2MML_copy_string("&Lang;"); return LEFTDELIM;}
1 by Jacques Distler
Initial commit.
134
135
"\\rfloor" |
136
"\\rceil"  |
65 by Jacques Distler
itex2MML 1.4.11
137
"\\rmoustache" |
1 by Jacques Distler
Initial commit.
138
"\\rang"   |
139
"\\rangle"      {yylval=itex2MML_copy2(yytext, ";"); if (yylval != itex2MML_empty_string) yylval[0]='&'; return RIGHTDELIM;}
65 by Jacques Distler
itex2MML 1.4.11
140
"\\rrangle"     {yylval=itex2MML_copy_string("&Rang;"); return RIGHTDELIM;}
1 by Jacques Distler
Initial commit.
141
142
"/"             {yylval=itex2MML_copy_string(yytext); return OTHERDELIM;}
143
144
"\\uparrow"   |
145
"\\downarrow" |
146
"\\updownarrow" {yylval=itex2MML_copy2(yytext, ";"); if (yylval != itex2MML_empty_string) yylval[0]='&'; return OTHERDELIM;}
147
148
"."             {yylval=itex2MML_copy_string(yytext); return PERIODDELIM;}
149
150
"-"    {if (itex2MML_rowposn==1) return UNARYMINUS; else {yylval=itex2MML_copy_string("&minus;"); return MO;}}
151
152
"+"    {if (itex2MML_rowposn==1) return UNARYPLUS; else {yylval=itex2MML_copy_string("+"); return MO;}}
153
17 by Jacques Distler
itex2MML 1.2.3
154
"\\#" {yylval=itex2MML_copy_string("#"); return MOL;}
155
1 by Jacques Distler
Initial commit.
156
","   |
157
":"   |
158
"!"   |
159
"="   |
160
"~"   |
161
";"   |
162
"?"   |
163
"#"   |
164
"`"   |
165
"*"        {yylval=itex2MML_copy_string(yytext); return MOL;}
166
18 by Jacques Distler
Minor Tweaks
167
"\\prime"  {yylval=itex2MML_copy_string("&prime;"); return MOLL;}
12 by Jacques Distler
Fixed TeX primes.
168
"'"        {yylval=itex2MML_copy_string("&prime;"); return MOL;}
169
"''"     {yylval=itex2MML_copy_string("&Prime;"); return MOL;}
170
"'''"  {yylval=itex2MML_copy_string("&#8244;"); return MOL;}
15 by Jacques Distler
Quadruple Prime
171
"''''"  {yylval=itex2MML_copy_string("&#8279;"); return MOL;}
12 by Jacques Distler
Fixed TeX primes.
172
1 by Jacques Distler
Initial commit.
173
"\\alpha"   |
174
"\\beta" |
175
"\\gamma" |
176
"\\delta" |
177
"\\zeta" |
178
"\\eta"  |
179
"\\theta" |
180
"\\iota"  |
181
"\\kappa" |
182
"\\lambda" |
183
"\\mu"     |
184
"\\nu"    |
185
"\\xi"   |
186
"\\pi"     |
187
"\\rho"   |
188
"\\sigma"  |
189
"\\tau"   |
190
"\\upsilon" |
191
"\\chi"  |
192
"\\psi"  |
193
"\\omega" |
194
"\\backepsilon"   |
195
"\\varkappa" |
196
"\\varpi" |
197
"\\varrho" |
198
"\\varsigma" |
199
"\\vartheta"      {yylval=itex2MML_copy2(yytext, ";"); if (yylval != itex2MML_empty_string) yylval[0]='&'; return MI;}
200
41 by Jacques Distler
itex2MML 1.3.17
201
"\\varepsilon" {yylval=itex2MML_copy_string("&#x03B5;"); return MI;}
1 by Jacques Distler
Initial commit.
202
"\\phi"  {yylval=itex2MML_copy_string("&#x03D5;"); return MI;}
203
"\\varphi"  {yylval=itex2MML_copy_string("&#x03C6;"); return MI;}
204
205
"\\arccos"  |
206
"\\arcsin"  |
207
"\\arctan"  |
208
"\\arg"     |
209
"\\cos"     |
210
"\\cosh"    |
211
"\\cot"     |
212
"\\coth"    |
213
"\\csc"     |
214
"\\deg"     |
215
"\\dim"     |
216
"\\exp"     |
217
"\\hom"     |
218
"\\ker"     |
219
"\\lg"      |
220
"\\ln"      |
221
"\\log"     |
222
"\\sec"     |
223
"\\sin"     |
224
"\\sinh"    |
225
"\\tan"     |
226
"\\tanh"    {yylval=itex2MML_copy_string(yytext+1); return MI;}
227
228
"\\det"     |
229
"\\gcd"     |
230
"\\inf"     |
231
"\\lim"     |
232
"\\liminf"  |
233
"\\limsup"  |
234
"\\max"     |
235
"\\min"     |
236
"\\Pr"      |
237
"\\sup"    {yylval=itex2MML_copy_string(yytext+1); return MIB;}
238
239
"\\omicron"  {yylval=itex2MML_copy_string("&oscr;"); return MI;}
240
241
"\\epsilon"  {yylval=itex2MML_copy_string("&epsi;"); return MI;}
242
243
"\\cdot"   {yylval=itex2MML_copy_string("&sdot;"); return MO;}
244
245
"\\Alpha"   |
246
"\\Beta" |
247
"\\Delta"  |
248
"\\Gamma"  |
249
"\\digamma"  |
250
"\\Lambda" |
251
"\\Pi"     |
252
"\\Phi"    |
253
"\\Psi"    |
254
"\\Sigma"  |
255
"\\Theta"  |
256
"\\Xi"     |
257
"\\Zeta" |
258
"\\Eta"  |
259
"\\Iota"  |
260
"\\Kappa" |
261
"\\Mu"     |
262
"\\Nu"    |
263
"\\Rho"   |
264
"\\Tau"  | 
265
"\\mho"  | 
266
"\\Omega"     {yylval=itex2MML_copy2(yytext, ";"); if (yylval != itex2MML_empty_string) yylval[0]='&'; return MI;}
267
268
"\\Upsilon" |
269
"\\Upsi" {yylval=itex2MML_copy_string("&Upsi;"); return MI;}
270
271
"\\iff" |
272
"\\Longleftrightarrow"  {yylval=itex2MML_copy_string("&iff;"); return MOL;}
273
274
"\\Leftrightarrow"  {yylval=itex2MML_copy_string("&Leftrightarrow;"); return MOL;}
275
276
"\\impliedby" |
277
"\\Leftarrow"   {yylval=itex2MML_copy_string("&Leftarrow;"); return MOL;}
278
279
"\\implies" |
280
"\\Rightarrow"   {yylval=itex2MML_copy_string("&Rightarrow;"); return MOL;}
281
282
"\\hookleftarrow" {yylval=itex2MML_copy_string("&hookleftarrow;"); return MOL;}
283
284
"\\embedsin" |
285
"\\hookrightarrow"  {yylval=itex2MML_copy_string("&hookrightarrow;"); return MOL;}
286
287
"\\longleftarrow"   {yylval=itex2MML_copy_string("&longleftarrow;"); return MOL;}
288
289
"\\longrightarrow"  {yylval=itex2MML_copy_string("&longrightarrow;"); return MOL;}
290
291
"\\leftarrow"   {yylval=itex2MML_copy_string("&leftarrow;"); return MOL;}
292
293
"\\to"    |
294
"\\rightarrow"  {yylval=itex2MML_copy_string("&rightarrow;"); return MOL;}
295
296
"\\leftrightarrow"  {yylval=itex2MML_copy_string("&leftrightarrow;"); return MOL;}
297
298
"\\mapsto"  |
299
"\\map"       {yylval=itex2MML_copy_string("&map;"); return MOL;}
300
301
"\\nearrow" |
302
"\\nearr"    {yylval=itex2MML_copy_string("&nearr;"); return MOL;}
303
304
"\\nwarrow" |
305
"\\nwarr"     {yylval=itex2MML_copy_string("&nwarr;"); return MOL;}
306
307
"\\searrow" |
308
"\\searr"     {yylval=itex2MML_copy_string("&searr;"); return MOL;}
309
310
"\\swarrow" |
311
"\\swarr"     {yylval=itex2MML_copy_string("&swarr;"); return MOL;}
312
313
"\\neArrow" |
314
"\\neArr"    {yylval=itex2MML_copy_string("&neArr;"); return MOL;}
315
316
"\\nwArrow" |
317
"\\nwArr"     {yylval=itex2MML_copy_string("&nwArr;"); return MOL;}
318
319
"\\seArrow" |
320
"\\seArr"     {yylval=itex2MML_copy_string("&seArr;"); return MOL;}
321
322
"\\swArrow" |
323
"\\swArr"     {yylval=itex2MML_copy_string("&swArr;"); return MOL;}
324
325
"\\darr"     {yylval=itex2MML_copy_string("&darr;"); return MOL;}
326
327
"\\Downarrow" {yylval=itex2MML_copy_string("&dArr;"); return MOL;}
328
329
"\\uparr"    {yylval=itex2MML_copy_string("&uarr;"); return MOL;}
330
331
"\\Uparrow" {yylval=itex2MML_copy_string("&uArr;"); return MOL;}
332
333
"\\downuparrow" |
334
"\\duparr" |
335
"\\updarr"  {yylval=itex2MML_copy_string("&updownarrow;"); return MOL;}
336
337
"\\Updownarrow"  {yylval=itex2MML_copy_string("&Updownarrow;"); return MOL;}
338
14 by Jacques Distler
itex2MML 1.2
339
"\\leftsquigarrow"       {yylval=itex2MML_copy_string("&#x21DC;"); return MOL;}
13 by Jacques Distler
itex2MML 1.2
340
"\\rightsquigarrow"      {yylval=itex2MML_copy_string("&zigrarr;"); return MOL;}
341
"\\dashleftarrow"        {yylval=itex2MML_copy_string("&#x290E;"); return MOL;}
342
"\\dashrightarrow"       {yylval=itex2MML_copy_string("&#x290F;"); return MOL;}
343
"\\curvearrowbotright"   {yylval=itex2MML_copy_string("&#x293B;"); return MOL;}
344
"\\righttoleftarrow"     {yylval=itex2MML_copy_string("&#x27F2;"); return MOL;}
345
"\\lefttorightarrow"     {yylval=itex2MML_copy_string("&#x27F3;"); return MOL;}
35 by Jacques Distler
itex2MML 1.3.11: A Quiverful of Arrows
346
"\\leftrightsquigarrow" |
347
"\\upuparrows"          |
348
"\\rightleftarrows"     |
349
"\\rightrightarrows"    |
350
"\\curvearrowleft"      |
351
"\\curvearrowright"     |
352
"\\downdownarrows"      |
353
"\\leftarrowtail"       |
354
"\\rightarrowtail"      |
355
"\\leftleftarrows"      |
356
"\\leftrightarrows"     |
357
"\\Lleftarrow"          |
358
"\\Rrightarrow"         |
359
"\\looparrowleft"       |
360
"\\looparrowright"      |
361
"\\Lsh"                 |
362
"\\Rsh"                 |
363
"\\circlearrowleft"     |
364
"\\circlearrowright"    |
365
"\\twoheadleftarrow"    |
366
"\\twoheadrightarrow"   |
367
"\\nLeftarrow"          |
368
"\\nleftarrow"          |
369
"\\nLeftrightarrow"     |
370
"\\nleftrightarrow"     |
371
"\\nRightarrow"         |
372
"\\nrightarrow"         |
65 by Jacques Distler
itex2MML 1.4.11
373
"\\rightharpoonup"      |
374
"\\rightharpoondown"    |
375
"\\leftharpoonup"       |
376
"\\leftharpoondown"     |
35 by Jacques Distler
itex2MML 1.3.11: A Quiverful of Arrows
377
"\\downharpoonleft"     |
378
"\\downharpoonright"    |
379
"\\leftrightharpoons"   |
380
"\\rightleftharpoons"   |
381
"\\upharpoonleft"       |
382
"\\upharpoonright"   {yylval=itex2MML_copy2(yytext, ";"); if (yylval != itex2MML_empty_string) yylval[0]='&'; return MOL;}
383
54 by Jacques Distler
itex2MML 1.4.0: Extensible Arrows
384
"\\xrightarrow"        |
385
"\\xleftarrow"         |
386
"\\xleftrightarrow"    |
387
"\\xLeftarrow"         |
388
"\\xRightarrow"        |
389
"\\xLeftrightarrow"    |
390
"\\xleftrightharpoons" |
391
"\\xrightleftharpoons" |
392
"\\xhookleftarrow"     |
393
"\\xhookrightarrow"    |
55 by Jacques Distler
itex2MML 1.4.1: Memory issue
394
"\\xmapsto" {BEGIN(OPTARG); char * s1 = itex2MML_copy_string(yytext+2); yylval = itex2MML_copy3("&", s1, ";"); itex2MML_free_string(s1); return XARROW;}
13 by Jacques Distler
itex2MML 1.2
395
1 by Jacques Distler
Initial commit.
396
"\\dots" |
53 by Jacques Distler
itex2MML 1.3.27: Fixed \dots
397
"\\ldots"  {yylval=itex2MML_copy_string("&hellip;"); return MI;}
398
"\\cdots"   {yylval=itex2MML_copy_string("&ctdot;"); return MI;}
399
"\\ddots"   {yylval=itex2MML_copy_string("&dtdot;"); return MI;}
400
"\\udots"   {yylval=itex2MML_copy_string("&utdot;"); return MI;}
401
"\\vdots"   {yylval=itex2MML_copy_string("&vellip;"); return MI;}
37 by Jacques Distler
itex2MML 1.3.13
402
"\\colon"   {yylval=itex2MML_copy_string("&colon;"); return MOR;}
1 by Jacques Distler
Initial commit.
403
404
"\\cup"  |
405
"\&union;" |
406
"\\union"          {yylval=itex2MML_copy_string("&cup;"); return MOL;}
407
408
"\\bigcup" |
409
"\\Union"  |
410
"\&Union;"      {yylval=itex2MML_copy_string("&Union;"); return MOB;}
411
412
"\\cap"  |
413
"\\intersection"          {yylval=itex2MML_copy_string("&cap;"); return MOL;}
414
415
"\\bigcap" |
416
"\\Intersection"       {yylval=itex2MML_copy_string("&Intersection;"); return MOB;}
417
418
"\\in"           {yylval=itex2MML_copy_string("&Element;"); return MOL;}
419
36 by Jacques Distler
itex2MML 1.3.12: \coloneqq and its cousins
420
 /* For some reason, Firefox does not put in the right spacing around some of these operators
421
  * unless we ask for it, explicitly.
422
  */
423
"\\coloneqq"     {yylval=itex2MML_copy_string("&colone;"); return MOL;}
424
"\\Coloneqq"     {yylval=itex2MML_copy_string("&Colone;"); return MOS;}
425
"\\coloneq"      {yylval=itex2MML_copy_string("&#x2236;&#x2212;"); return MOS;}
426
"\\Coloneq"      {yylval=itex2MML_copy_string("&#x2237;&#x2212;"); return MOS;}
427
"\\eqqcolon"     {yylval=itex2MML_copy_string("&ecolon;"); return MOS;}
428
"\\Eqqcolon"     {yylval=itex2MML_copy_string("&#x003d;&#x2237;"); return MOS;}
429
"\\eqcolon"      {yylval=itex2MML_copy_string("&#x2239;"); return MOS;}
430
"\\Eqcolon"      {yylval=itex2MML_copy_string("&#x2212;&#x2237;"); return MOS;}
431
"\\colonapprox"  {yylval=itex2MML_copy_string("&#x2236;&#x2248;"); return MOS;}
432
"\\Colonapprox"  {yylval=itex2MML_copy_string("&#x2237;&#x2248;"); return MOS;}
433
"\\colonsim"     {yylval=itex2MML_copy_string("&#x2236;&#x223C;"); return MOS;}
434
"\\Colonsim"     {yylval=itex2MML_copy_string("&#x2237;&#x223C;"); return MOS;}
435
"\\dblcolon"     {yylval=itex2MML_copy_string("&Colon;"); return MOL;}
436
46 by Jacques Distler
itex2MML 1.3.22: New License
437
"\\ast"  |
438
"\\Cap"  |
439
"\\Cup"  |
440
"\\circledast"  |
441
"\\circledcirc" |
442
"\\curlyvee"    |
443
"\\curlywedge"  |
444
"\\divideontimes" |
445
"\\dotplus" |
446
"\\leftthreetimes" |
447
"\\rightthreetimes" |
448
"\\veebar" |
1 by Jacques Distler
Initial commit.
449
"\\gt"   |
450
"\\lt"   |
451
"\\approxeq"   |
452
"\\backsim"   |
453
"\\backsimeq"   |
46 by Jacques Distler
itex2MML 1.3.22: New License
454
"\\barwedge"    |
455
"\\doublebarwedge" |
1 by Jacques Distler
Initial commit.
456
"\\subset"  |
457
"\\subseteq" |
458
"\\subseteqq" |
459
"\\subsetneq" |
460
"\\subsetneqq" |
461
"\\varsubsetneq" |
462
"\\varsubsetneqq" |
463
"\\prec"     |
464
"\\parallel"  |
465
"\\nparallel" |
466
"\\shortparallel" |
467
"\\nshortparallel" |
468
"\\perp"  |
469
"\\eqslantgtr" |
470
"\\eqslantless" |
471
"\\gg" |
472
"\\ggg" |
473
"\\geq" |
474
"\\geqq" |
475
"\\geqslant" |
476
"\\gneq" |
477
"\\gneqq" |
478
"\\gnapprox" |
479
"\\gnsim" |
480
"\\gtrapprox" |
481
"\\ge"  |
482
"\\le"  |
483
"\\leq" |
484
"\\leqq" |
485
"\\leqslant" |
486
"\\lessapprox" |
487
"\\lessdot" |
488
"\\lesseqgtr" |
489
"\\lesseqqgtr" |
490
"\\lessgtr" |
491
"\\lneq" |
492
"\\lneqq" |
493
"\\lnsim" |
494
"\\lvertneqq" |
495
"\\gtrsim" |
496
"\\gtrdot" |
497
"\\gtreqless" |
498
"\\gtreqqless" |
499
"\\gtrless" |
500
"\\gvertneqq" |
501
"\\lesssim" |
502
"\\lnapprox" |
503
"\\nsubset" |
504
"\\nsubseteq" |
505
"\\nsubseteqq" |
506
"\\notin" |
507
"\\ni" |
508
"\\notni" |
509
"\\nmid" |
510
"\\nshortmid" |
511
"\\preceq" |
512
"\\npreceq" |
513
"\\ll" |
514
"\\ngeq" |
515
"\\ngeqq" |
516
"\\ngeqslant" |
517
"\\nleq" |
518
"\\nleqq" |
519
"\\nleqslant" |
520
"\\nless" |
521
"\\supset" |
522
"\\supseteq" |
523
"\\supseteqq" |
524
"\\supsetneq" |
525
"\\supsetneqq" |
526
"\\varsupsetneq" |
527
"\\varsupsetneqq" |
528
"\\approx" |
529
"\\asymp" |
530
"\\bowtie" |
531
"\\dashv" |
532
"\\Vdash" |
533
"\\vDash" |
534
"\\VDash" |
535
"\\vdash" |
536
"\\Vvdash" |
537
"\\models" |
538
"\\sim" |
539
"\\simeq" |
540
"\\nsim" |
541
"\\smile" |
542
"\\triangle" |
543
"\\triangledown" |
544
"\\triangleleft" |
545
"\\cong" |
546
"\\succ" |
547
"\\nsucc" |
548
"\\ngtr" |
549
"\\nsupset" |
550
"\\nsupseteq" |
551
"\\propto" |
552
"\\equiv" |
24 by Jacques Distler
Another Symbol: \nequiv
553
"\\nequiv" |
1 by Jacques Distler
Initial commit.
554
"\\frown" |
555
"\\triangleright" |
556
"\\ncong" |
557
"\\succeq" |
558
"\\succapprox" |
559
"\\succnapprox" |
560
"\\succcurlyeq" |
561
"\\succsim" |
562
"\\succnsim" |
563
"\\nsucceq" |
564
"\\nvDash" |
565
"\\nvdash" |
566
"\\nVDash" |
567
"\\amalg" |
568
"\\pm" |
569
"\\mp" |
570
"\\bigcirc" |
571
"\\wr" |
572
"\\odot" |
573
"\\uplus" |
574
"\\clubsuit" |
575
"\\spadesuit" |
576
"\\Diamond" |
577
"\\diamond" |
578
"\\sqcup" |
579
"\\sqcap" |
580
"\\sqsubset" |
581
"\\sqsubseteq" |
582
"\\sqsupset" |
583
"\\sqsupseteq" |
584
"\\Subset" |
585
"\\Supset" |
586
"\\ltimes" |
587
"\\div" |
588
"\\rtimes" |
589
"\\bot" |
590
"\\therefore" |
591
"\\thickapprox" |
592
"\\thicksim" |
593
"\\varpropto" |
594
"\\varnothing" |
595
"\\flat" |
596
"\\vee" |
597
"\\because" |
598
"\\between" |
599
"\\Bumpeq" |
600
"\\bumpeq" |
601
"\\circeq" |
602
"\\curlyeqprec" |
603
"\\curlyeqsucc" |
604
"\\doteq" |
605
"\\doteqdot" |
606
"\\eqcirc" |
607
"\\fallingdotseq" |
608
"\\multimap" |
609
"\\pitchfork" |
610
"\\precapprox" |
611
"\\precnapprox" |
612
"\\preccurlyeq" |
613
"\\precsim" |
614
"\\precnsim" |
615
"\\risingdotseq" |
616
"\\sharp" |
617
"\\bullet" |
618
"\\nexists" |
619
"\\dagger" |
620
"\\ddagger" |
621
"\\not" |
622
"\\top" |
623
"\\natural" |
624
"\\angle" |
625
"\\measuredangle" |
626
"\\backprime" |
627
"\\bigstar" |
628
"\\blacklozenge" |
629
"\\lozenge" |
630
"\\blacksquare" |
631
"\\blacktriangle" |
46 by Jacques Distler
itex2MML 1.3.22: New License
632
"\\blacktriangleleft" |
633
"\\blacktriangleright" |
1 by Jacques Distler
Initial commit.
634
"\\blacktriangledown" |
46 by Jacques Distler
itex2MML 1.3.22: New License
635
"\\ntriangleleft" |
636
"\\ntriangleright" |
637
"\\ntrianglelefteq" |
638
"\\ntrianglerighteq" |
639
"\\trianglelefteq" |
640
"\\trianglerighteq" |
641
"\\triangleq" |
642
"\\vartriangleleft" |
643
"\\vartriangleright" |
1 by Jacques Distler
Initial commit.
644
"\\forall" |
645
"\\bigtriangleup" |
646
"\\bigtriangledown" |
647
"\\nprec"  {yylval=itex2MML_copy2(yytext, ";"); if (yylval != itex2MML_empty_string) yylval[0]='&'; return MOL;}
648
649
"\\aleph" |
650
"\\beth" |
651
"\\eth" |
652
"\\ell" |
653
"\\hbar" |
654
"\\Im" |
655
"\\imath" |
656
"\\jmath" |
657
"\\wp" |
658
"\\Re" {yylval=itex2MML_copy2(yytext, ";"); if (yylval != itex2MML_empty_string) yylval[0]='&'; return MI;}
659
29 by Jacques Distler
itex2MML 1.3.5
660
"\\Perp" |
661
"\\Vbar" {yylval=itex2MML_copy_string("&Vbar;"); return MOL;}
46 by Jacques Distler
itex2MML 1.3.22: New License
662
"\\boxdot" {yylval=itex2MML_copy_string("&sdotb;"); return MOL;}
1 by Jacques Distler
Initial commit.
663
"\\Box" |
664
"\\square" {yylval=itex2MML_copy_string("&square;"); return MOL;}
665
"\\emptyset" |
666
"\\empty" {yylval=itex2MML_copy_string("&emptyv;"); return MI;}
667
"\\exists" {yylval=itex2MML_copy_string("&Exists;"); return MOL;}
668
"\\circ" {yylval=itex2MML_copy_string("&SmallCircle;"); return MOL;}
669
"\\rhd" {yylval=itex2MML_copy_string("&RightTriangle;"); return MOL;}
670
"\\lhd" {yylval=itex2MML_copy_string("&LeftTriangle;"); return MOL;}
671
"\\lll" {yylval=itex2MML_copy_string("&Ll;"); return MOL;}
672
"\\unrhd" {yylval=itex2MML_copy_string("&RightTriangleEqual;"); return MOL;}
673
"\\unlhd" {yylval=itex2MML_copy_string("&LeftTriangleEqual;"); return MOL;}
674
"\\Del" |
675
"\\nabla" {yylval=itex2MML_copy_string("&Del;"); return MOL;}
676
"\\sphericalangle" {yylval=itex2MML_copy_string("&angsph;"); return MOL;}
677
678
"\\heartsuit" {yylval=itex2MML_copy_string("&#x2661;"); return MOL;}
679
"\\diamondsuit" {yylval=itex2MML_copy_string("&#x2662;"); return MOL;}
680
681
"\\partial" {yylval=itex2MML_copy_string("&PartialD;"); return MOL;}
682
683
"\\qed" {yylval=itex2MML_copy_string("&squf;"); return MO;}
684
685
"\\mod" {yylval=itex2MML_copy_string("mod"); return MOS;}
686
"\\pmod" {return PMOD;}
687
688
"\\bottom" {yylval=itex2MML_copy_string("&perp;"); return MOL;}
689
690
"\\neg" {yylval=itex2MML_copy_string("&not;"); return MOL;}
691
692
"\\neq" |
693
"\\ne"   {yylval=itex2MML_copy_string("&ne;"); return MOL;}
694
695
"\\shortmid" |
696
"\\mid"  {yylval=itex2MML_copy_string("&VerticalBar;"); return MOS;}
697
698
"\\int"    |
699
"\\integral"     {yylval=itex2MML_copy_string("&Integral;"); return MOL;}
700
701
"\\iint"   |
702
"\\doubleintegral" {yylval=itex2MML_copy_string("&Int;"); return MOL;}
703
704
"\\iiint"   |
705
"\\tripleintegral" {yylval=itex2MML_copy_string("&tint;"); return MOL;}
706
707
"\\iiiint"   |
708
"\\quadrupleintegral" {yylval=itex2MML_copy_string("&qint;"); return MOL;}
709
710
"\\oint"    |
711
"\\conint"  |
712
"\\contourintegral"   {yylval=itex2MML_copy_string("&conint;"); return MOL;}
713
714
"\\times"   {yylval=itex2MML_copy_string("&times;"); return MOL;}
715
"\\star"   {yylval=itex2MML_copy_string("&sstarf;"); return MOL;}
716
"\\circleddash" |
717
"\\odash"   {yylval=itex2MML_copy_string("&odash;"); return MOL;}
718
46 by Jacques Distler
itex2MML 1.3.22: New License
719
"\\intercal"   {yylval=itex2MML_copy_string("&intcal;"); return MOL;}
720
"\\smallfrown"   {yylval=itex2MML_copy_string("&sfrown;"); return MOL;}
721
"\\smallsmile"   {yylval=itex2MML_copy_string("&ssmile;"); return MOL;}
722
1 by Jacques Distler
Initial commit.
723
"\\boxminus" |
724
"\\minusb"   {yylval=itex2MML_copy_string("&boxminus;"); return MOL;}
725
"\\boxplus" |
726
"\\plusb"   {yylval=itex2MML_copy_string("&boxplus;"); return MOL;}
727
"\\boxtimes" |
728
"\\timesb"   {yylval=itex2MML_copy_string("&boxtimes;"); return MOL;}
729
730
"\\sum"          {yylval=itex2MML_copy_string("&Sum;"); return MOB;}
731
732
"\\prod" |
733
"\\product"      {yylval=itex2MML_copy_string("&prod;"); return MOB;}
734
735
"\\coprod"  |
736
"\\coproduct"    {yylval=itex2MML_copy_string("&coprod;"); return MOB;}
737
738
"\\otimes"       {yylval=itex2MML_copy_string("&otimes;"); return MOL;}
739
"\\Otimes"       {yylval=itex2MML_copy_string("&Otimes;"); return MOL;}
740
"\\bigotimes"     {yylval=itex2MML_copy_string("&bigotimes;"); return MOL;}
741
46 by Jacques Distler
itex2MML 1.3.22: New License
742
"\\ominus"       {yylval=itex2MML_copy_string("&ominus;"); return MOL;}
743
"\\oslash"       {yylval=itex2MML_copy_string("&osol;"); return MOL;}
1 by Jacques Distler
Initial commit.
744
745
"\\oplus"       {yylval=itex2MML_copy_string("&oplus;"); return MOL;}
746
"\\Oplus"   |
747
"\\bigoplus"    {yylval=itex2MML_copy_string("&bigoplus;"); return MOB;}
748
749
"\\bigodot"    {yylval=itex2MML_copy_string("&bigodot;"); return MOB;}
750
"\\bigsqcup"    {yylval=itex2MML_copy_string("&bigsqcup;"); return MOB;}
64 by Jacques Distler
itex2MML 1.4.10
751
"\\bigsqcap"    {yylval=itex2MML_copy_string("&#x2A05;"); return MOB;}
752
"\\biginterleave" {yylval=itex2MML_copy_string("&#x2AFC;"); return MOB;}
20 by Jacques Distler
Typo Corrected (from Jason Blevins)
753
"\\biguplus"    {yylval=itex2MML_copy_string("&biguplus;"); return MOB;}
1 by Jacques Distler
Initial commit.
754
755
"\\wedge"       {yylval=itex2MML_copy_string("&wedge;"); return MOL;}
756
"\\Wedge"  |
757
"\\bigwedge"       {yylval=itex2MML_copy_string("&xwedge;"); return MOB;}
758
759
"\\Vee"  |
760
"\\bigvee"       {yylval=itex2MML_copy_string("&bigvee;"); return MOB;}
761
31 by Jacques Distler
itex2MML 1.3.7
762
"\\invamp"  |
763
"\\parr"       {yylval=itex2MML_copy_string("&#8523;"); return MOL;}
764
1 by Jacques Distler
Initial commit.
765
"\\frac"         {return FRAC;}
766
"\\tfrac"         {return TFRAC;}
767
768
"\\binom"        {return BINOM;}
59 by Jacques Distler
itex2MML 1.4.5: Array Environment
769
"\\tbinom"        {return TBINOM;}
1 by Jacques Distler
Initial commit.
770
771
"\\tensor"       {return TENSOR;}
772
773
"\\multiscripts" {return MULTI;}
774
775
"\\overbrace"     {return OVERBRACE;}
776
777
"\\underbrace"   {return UNDERBRACE;}
778
34 by Jacques Distler
itex2MML 1.3.10
779
"\\underline"   {return UNDERLINE;}
780
1 by Jacques Distler
Initial commit.
781
"\\bar"          {return BAR;}
782
"\\overline" |
783
"\\closure" |
784
"\\widebar"      {return WIDEBAR;}
785
786
"\\vec"       {return VEC;} 
787
"\\widevec"   {return WIDEVEC;}
788
789
"\\dot"       {return DOT;}
790
"\\ddot"      {return DDOT;}
38 by Jacques Distler
itex2MML 1.3.14: \dddot{} and \ddddot{}
791
"\\dddot"      {return DDDOT;}
792
"\\ddddot"      {return DDDDOT;}
1 by Jacques Distler
Initial commit.
793
794
"\\tilde"       {return TILDE;} 
795
"\\widetilde"   {return WIDETILDE;}
796
797
798
"\\check"       {return CHECK;} 
799
"\\widecheck"   {return WIDECHECK;}
800
801
802
"\\hat"       {return HAT;} 
803
"\\widehat"   {return WIDEHAT;}
804
805
"\\underset"     {return UNDER;}
806
807
"\\stackrel" |
808
"\\overset"      {return OVER;}
809
810
"\\over"         {return TEXOVER;}
21 by Jacques Distler
\binom
811
"\\atop"         {return TEXATOP;}
1 by Jacques Distler
Initial commit.
812
813
"\\underoverset"  {return UNDEROVER;}
814
59 by Jacques Distler
itex2MML 1.4.5: Array Environment
815
"\\sqrt"         {BEGIN(OPTARG); return SQRT;}
1 by Jacques Distler
Initial commit.
816
817
"\\root"         {return ROOT;}
818
819
"\\space"        {BEGIN(INT1); return SPACE;}
820
821
"\\text"          {BEGIN(PLAINTEXT); return TEXTBOX;}
822
823
"\\statusline"    {BEGIN(PLAINTEXT); return STATLINE;}
40 by Jacques Distler
itex2MML 1.3.16: \tooltip{}{}
824
"\\tooltip"       {BEGIN(PLAINTEXT); return TOOLTIP;}
1 by Jacques Distler
Initial commit.
825
826
"\\toggle"        {return TOGGLE;}
827
61 by Jacques Distler
itex2MML 1.4.7: \mathraisebox{voffset}[height][depth]{content}
828
"\\mathraisebox"  {BEGIN(RAISEBOX1); return RAISEBOX;}
829
1 by Jacques Distler
Initial commit.
830
"\\fghilight" |
831
"\\fghighlight"   {BEGIN(ATTRIBUTELIST); return FGHIGHLIGHT;}
832
833
"\\bghilight" |
834
"\\bghighlight"   {BEGIN(ATTRIBUTELIST); return BGHIGHLIGHT;}
835
836
"\\color"        {BEGIN(ATTRIBUTELIST); return COLOR;}
837
"\\bgcolor"        {BEGIN(ATTRIBUTELIST); return BGCOLOR;}
838
62 by Jacques Distler
Fix bug in \displaystyle | \textstyle
839
"\\displaystyle"  {itex2MML_displaymode=1; itex2MML_rowposn=2; return DISPLAY;}
1 by Jacques Distler
Initial commit.
840
62 by Jacques Distler
Fix bug in \displaystyle | \textstyle
841
"\\textstyle"     {itex2MML_displaymode=0; itex2MML_rowposn=2; return TEXTSTY;}
1 by Jacques Distler
Initial commit.
842
843
"\\textsize"     {return TEXTSIZE;}
844
845
"\\scriptsize"     {return SCSIZE;}
846
847
"\\scriptscriptsize"     {return SCSCSIZE;}
848
849
"\\mathit"       {return ITALICS;}
850
10 by Jacques Distler
Add \boldsymbol, for Tony Pantev.
851
"\\boldsymbol" |
1 by Jacques Distler
Initial commit.
852
"\\mathbf"       {return BOLD;}
853
854
"\\mathrm"       {BEGIN(ROMAN); return RM;}
855
856
"\\mathbb"       {BEGIN(BBOLD); return BB;}
857
858
"\\mathfrak" |
859
"\\mathfr"       {BEGIN(FRAKTUR); return FRAK;}
860
16 by Jacques Distler
Slashed letters
861
"\\slash"       {return SLASHED;}
862
50 by Jacques Distler
itex2MML 1.3.25
863
"\\boxed"       {return BOXED;}
864
1 by Jacques Distler
Initial commit.
865
"\\mathcal"       {BEGIN(CALLIGRAPHIC); return CAL;}
866
59 by Jacques Distler
itex2MML 1.4.5: Array Environment
867
"\\begin"        {itex2MML_env_start = 1; BEGIN(MATHENV); return BEGINENV;}
1 by Jacques Distler
Initial commit.
868
"\\end"        {BEGIN(MATHENV); return ENDENV;}
869
870
"\\substack"     {return SUBSTACK;}
871
872
"\\array"        {return ARRAY;}
873
874
"\\arrayopts"    {return ARRAYOPTS;}
875
876
"\\colalign"     {BEGIN(ATTRIBUTELIST); return COLALIGN;}
877
878
"\\collayout"   {BEGIN(ATTRIBUTELIST); return COLLAYOUT;}
879
880
"\\rowalign"     {BEGIN(ATTRIBUTELIST); return ROWALIGN;}
881
882
"\\align"     {BEGIN(ATTRIBUTELIST); return ALIGN;}
883
884
"\\equalrows"     {BEGIN(ATTRIBUTELIST); return EQROWS;}
885
886
"\\equalcols"     {BEGIN(ATTRIBUTELIST); return EQCOLS;}
887
888
"\\rowlines"     {BEGIN(ATTRIBUTELIST); return ROWLINES;}
889
890
"\\collines"     {BEGIN(ATTRIBUTELIST); return COLLINES;}
891
892
"\\frame"     {BEGIN(ATTRIBUTELIST); return FRAME;}
893
894
"\\padding"     {BEGIN(ATTRIBUTELIST); return PADDING;}
895
896
"\\rowopts"    {return ROWOPTS;}
897
898
"\\cellopts"   {return CELLOPTS;} 
899
900
"\\rowspan"     {BEGIN(ATTRIBUTELIST); return ROWSPAN;}
901
902
"\\colspan"     {BEGIN(ATTRIBUTELIST); return COLSPAN;}
903
904
905
"\\," |
906
"\\thinspace"   {return THINSPACE;}
907
908
"\\:" |
909
"\\medspace"    {return MEDSPACE;}
910
911
"\\;" |
912
"\\thickspace"  {return THICKSPACE;}
913
914
"\\quad"        {return QUAD;}
915
"\\qquad"       {return QQUAD;}
916
917
"\\!" |
918
"\\negspace"    {return NEGSPACE;}
919
920
"\\phantom"     {return PHANTOM;}
921
922
"\\href"        {BEGIN(PLAINTEXT); return HREF;}
923
39 by Jacques Distler
itex2MML 1.3.15: \mathrel and its cousins
924
"\\operatorname"  {BEGIN(PLAINTEXT); return OPERATORNAME;}
925
"\\mathop"        {BEGIN(PLAINTEXT); return MATHOP;}
926
"\\mathbin"       {BEGIN(PLAINTEXT); return MATHBIN;}
927
"\\mathrel"       {BEGIN(PLAINTEXT); return MATHREL;}
60 by Jacques Distler
itex2MML 1.4.6
928
"\\itexnum"       {BEGIN(PLAINTEXT); return ITEXNUM;}
1 by Jacques Distler
Initial commit.
929
22 by Jacques Distler
SVG Environment
930
"\\includegraphics"(\[[^\]]*\])?\{[^}]*\}	;
931
1 by Jacques Distler
Initial commit.
932
"\\"[a-zA-Z]+    {yylval=itex2MML_copy_string(yytext+1); return MOP;}
933
934
"\&"[a-zA-Z_][a-zA-Z0-9_]*";" |
935
"\&#"[0-9]+";" |
936
"\&#x"[a-fA-F0-9]+";"  {yylval=itex2MML_copy_string(yytext); return MI;}
937
938
"\n"             itex2MML_lineno++;
40 by Jacques Distler
itex2MML 1.3.16: \tooltip{}{}
939
[\r\t ]+           ;
1 by Jacques Distler
Initial commit.
940
941
942
.              {return UNKNOWNCHAR;}
943
}
944
945
<ATTRIBUTELIST>"{"[ \t\n\r #a-zA-Z0-9.\-]*"}"  {BEGIN(MATH); yylval=itex2MML_copy_string(yytext); if (yylval != itex2MML_empty_string) { yylval[0]='"'; yylval[yyleng-1]='"'; } return ATTRLIST;}
946
54 by Jacques Distler
itex2MML 1.4.0: Extensible Arrows
947
<OPTARG>{
58 by Jacques Distler
Nested Extensible Arrows
948
"[" {if(itex2MML_optarg_ind < itex2MML_optarg_depth - 1 && itex2MML_inoptarg[itex2MML_optarg_ind] !=1 ){itex2MML_optarg_ind++; itex2MML_inoptarg[itex2MML_optarg_ind]=1;}; BEGIN(MATH); return OPTARGOPEN;}
63 by Jacques Distler
itex2MML 1.4.9: improved optarg parsing
949
[\n\r\t ]+    ;
54 by Jacques Distler
itex2MML 1.4.0: Extensible Arrows
950
.   {BEGIN(MATH); unput(yytext[0]);}
951
}
952
61 by Jacques Distler
itex2MML 1.4.7: \mathraisebox{voffset}[height][depth]{content}
953
<RAISEBOX1>{
954
\{[\n\r\t ]*- {BEGIN(RAISEBOX2); return NEG;}
955
\{[\n\r\t ]* {BEGIN(RAISEBOX2);}
956
}
957
958
<RAISEBOX2>{
959
[^\}]*?\}  {yylval=itex2MML_copy_string(yytext); if ((yyleng > 1) && (yylval != itex2MML_empty_string)) yylval[yyleng-1]='\0'; BEGIN(TEXTOPTARG1); return TEXTSTRING;}
960
}
961
962
963
<TEXTOPTARG1>{
964
\[[^\]]*?\] {yylval=itex2MML_copy_string(yytext+1); if ((yyleng > 1) && (yylval != itex2MML_empty_string)) yylval[yyleng-2]='\0'; BEGIN(TEXTOPTARG); return TEXTSTRING;}
965
. {BEGIN(MATH); unput(yytext[0]);}
966
}
967
968
<TEXTOPTARG>{
969
\[[^\]]*?\] {yylval=itex2MML_copy_string(yytext+1); if ((yyleng > 1) && (yylval != itex2MML_empty_string)) yylval[yyleng-2]='\0'; BEGIN(MATH); return TEXTSTRING;}
970
. {BEGIN(MATH); unput(yytext[0]);}
971
}
972
1 by Jacques Distler
Initial commit.
973
<MATHENV>{
59 by Jacques Distler
itex2MML 1.4.5: Array Environment
974
"\{matrix\}" {itex2MML_env_start = 0; BEGIN(MATH); return MATRIX;}
975
"\{pmatrix\}" {itex2MML_env_start = 0; BEGIN(MATH); return PMATRIX;}
976
"\{bmatrix\}" {itex2MML_env_start = 0; BEGIN(MATH); return BMATRIX;}
977
"\{Bmatrix\}" {itex2MML_env_start = 0; BEGIN(MATH); return BBMATRIX;}
978
"\{vmatrix\}" {itex2MML_env_start = 0; BEGIN(MATH); return VMATRIX;}
979
"\{Vmatrix\}" {itex2MML_env_start = 0; BEGIN(MATH); return VVMATRIX;}
980
"\{smallmatrix\}" {itex2MML_env_start = 0; BEGIN(MATH); return SMALLMATRIX;}
981
"\{cases\}" {itex2MML_env_start = 0; BEGIN(MATH); return CASES;}
982
"\{aligned\}" {itex2MML_env_start = 0; BEGIN(MATH); return ALIGNED;}
983
"\{gathered\}" {itex2MML_env_start = 0; BEGIN(MATH); return GATHERED;}
984
"\{split\}" {itex2MML_env_start = 0; BEGIN(MATH); return ALIGNED;}
985
"\{array\}" {if (itex2MML_env_start == 1) BEGIN(ARRAYOPTIONS); else BEGIN(MATH); return ARRAY;}
986
"\{svg\}" {itex2MML_env_start = 0; BEGIN(SVGENV); return SVG;}
987
}
988
989
<ARRAYOPTIONS>{
990
"[t]" {yylval=itex2MML_copy_string("axis 1"); return ARRAYALIGN;}
991
"[c]" {yylval=itex2MML_copy_string("center"); return ARRAYALIGN;}
992
"[b]" {yylval=itex2MML_copy_string("axis -1"); return ARRAYALIGN;}
993
"\{"  {BEGIN(COLOPTS); return ST;}
994
[\t\n\r ]+       ;
995
}
996
997
<COLOPTS>{
998
"\}"  {itex2MML_env_start = 0; BEGIN(MATH); return END;}
999
"c"   {yylval=itex2MML_copy_string("center"); return COLUMNALIGN;}
1000
"l"   {yylval=itex2MML_copy_string("left"); return COLUMNALIGN;}
1001
"r"   {yylval=itex2MML_copy_string("right"); return COLUMNALIGN;}
1002
[\t\n\r ]+       ;
22 by Jacques Distler
SVG Environment
1003
}
1004
1005
<SVGENV>{
48 by Jacques Distler
Fix svg Environment
1006
"\\end\{svg" {yylval=itex2MML_copy_string(yytext); yylval[yyleng-8]=0; BEGIN(SVGEND); return XMLSTRING;}
1007
(.|\n) {yymore();}
1008
}
1009
1010
<SVGEND>{
1011
"\}" {BEGIN(MATH); return ENDSVG;}
1 by Jacques Distler
Initial commit.
1012
}
1013
1014
<ROMAN>{
1015
"\{"  {return ST;}
1016
"\}"  {BEGIN(MATH); return END;}
1017
[a-zA-Z]   {yylval=itex2MML_copy_string(yytext); return RMCHAR;}
1018
[\t\n\r ]+       ;
1019
.           {return yytext[0];}
1020
}
1021
1022
<BBOLD>{
1023
"\{"  {return ST;}
1024
"\}"  {BEGIN(MATH); return END;}
1025
[a-z] {yylval=itex2MML_copy_string(yytext); return BBLOWERCHAR;}
1026
[A-Z]   {yylval=itex2MML_copy_string(yytext); return BBUPPERCHAR;}
32 by Jacques Distler
itex2MML 1.38: Support for Blackboard Bold Digits
1027
[0-9]   {yylval=itex2MML_copy_string(yytext); return BBDIGIT;}
1 by Jacques Distler
Initial commit.
1028
[\t\n\r ]+       ;
1029
.           {return yytext[0];}
1030
}
1031
1032
<CALLIGRAPHIC>{
1033
"\{"  {return ST;}
1034
"\}"  {BEGIN(MATH); return END;}
1035
[a-zA-Z]   {yylval=itex2MML_copy_string(yytext); return CALCHAR;}
1036
[\t\n\r ]+       ;
1037
.           {return yytext[0];}
1038
}
1039
1040
<FRAKTUR>{
1041
"\{"  {return ST;}
1042
"\}"  {BEGIN(MATH); return END;}
1043
[a-zA-Z]   {yylval=itex2MML_copy_string(yytext); return FRAKCHAR;}
1044
[\t\n\r ]+       ;
1045
.           {return yytext[0];}
1046
}
1047
1048
<PLAINTEXT>{
39 by Jacques Distler
itex2MML 1.3.15: \mathrel and its cousins
1049
\{[^\}]*?\}  {yylval=itex2MML_copy_string(yytext+1); if ((yyleng > 1) && (yylval != itex2MML_empty_string)) yylval[yyleng-2]='\0'; BEGIN(MATH); return TEXTSTRING;}
1 by Jacques Distler
Initial commit.
1050
}
1051
1052
<INT1>{ 
1053
"\{"      {return ST;}
1054
"\}"      {BEGIN(INT2); return END;}
1055
[0-9]+    {yylval=itex2MML_copy_string_extra(yytext, 1); if (yyleng && (yylval != itex2MML_empty_string)) { yylval[yyleng]=yylval[yyleng-1]; yylval[yyleng-1]='.'; yylval[yyleng+1]='\0'; } return INTONE;}
1056
[\t\n\r ]+   ;
1057
.         {return yytext[0];}
1058
}
1059
1060
<INT2>{
1061
"\{"      {return ST;}
1062
"\}"      {BEGIN(INT3); return END;}
1063
[0-9]+    {yylval=itex2MML_copy_string_extra(yytext, 1); if (yyleng && (yylval != itex2MML_empty_string)) { yylval[yyleng]=yylval[yyleng-1]; yylval[yyleng-1]='.'; yylval[yyleng+1]='\0'; } return INTTWO;}
1064
[\t\n\r ]+   ;
1065
.         {return yytext[0];}
1066
}
1067
1068
<INT3>{
1069
"\{"      {return ST;}
1070
"\}"      {BEGIN(MATH); return END;}
1071
[0-9]+    {yylval=itex2MML_copy_string_extra(yytext, 1); if (yyleng && (yylval != itex2MML_empty_string)) { yylval[yyleng]=yylval[yyleng-1]; yylval[yyleng-1]='.'; yylval[yyleng+1]='\0'; } return INTTHREE;}
1072
[\t\n\r ]+   ;
1073
.         {return yytext[0];}
1074
}
1075
1076
1077
1078
%%
1079
1080
void itex2MML_restart ()
1081
{
1082
	BEGIN(INITIAL);
1083
}
1084
1085
static const char *  s_itex2MML_buffer = 0;
1086
static unsigned long s_itex2MML_length = 0;
1087
1088
void itex2MML_setup (const char * buffer, unsigned long length)
1089
{
1090
	yy_flush_buffer( YY_CURRENT_BUFFER );
1091
1092
	s_itex2MML_buffer = buffer;
1093
	s_itex2MML_length = length;
1094
}
1095
1096
static int s_itex2MML_read (char * buffer, int max_size)
1097
{
1098
	int result = 0;
1099
1100
	if (max_size < s_itex2MML_length)
1101
	{
1102
		result = max_size;
1103
1104
		memcpy (buffer, s_itex2MML_buffer, max_size);
1105
1106
		s_itex2MML_buffer += max_size;
1107
		s_itex2MML_length -= max_size;
1108
	}
1109
	else
1110
	{
1111
		result = s_itex2MML_length;
1112
1113
		memcpy (buffer, s_itex2MML_buffer, s_itex2MML_length);
1114
1115
		s_itex2MML_buffer = 0;
1116
		s_itex2MML_length = 0;
1117
	}
1118
	return result;
1119
}