mathematical 1.2.1 → 1.2.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -0,0 +1,1550 @@
1
+ %{
2
+ %}
3
+ %option noyywrap
4
+ %x MATH ATTRIBUTELIST BRACKETLIST PMBSTRING BBOLD FRAKTUR CALLIGRAPHIC SCRIPT ROMAN VERBTEXT PLAINTEXT PLAINTEXT_CURLY NUM INT1 INT2 INT3 MATHENV SVGENV SVGEND OPTARG ARRAYOPTIONS ENVOPTIONS ALIGNATOPTS COLOPTS ENCLOSEOPTS ENCLOSEATTRPARSE ENCLOSETEXTPARSE SPACEWIDTH SPACEHEIGHT SPACEDEPTH HSPACEARG TEXTOPTARG TEXTOPTARG1 RAISEBOX1 RAISEBOX2
5
+ %{
6
+ #include <string.h>
7
+
8
+ #define YYSTYPE char *
9
+
10
+ #include "y.tab.h"
11
+ #include "mtex2MML.h"
12
+ #include "parse_extras.h"
13
+ #include "string_extras.h"
14
+
15
+ #define YY_NEVER_INTERACTIVE 1
16
+ #define YY_INPUT(buffer,result,max_size) result = s_mtex2MML_read (buffer, max_size)
17
+
18
+ static int s_mtex2MML_read (char * buffer, int max_size);
19
+
20
+ #define yylval mtex2MML_yylval
21
+ #define mtex2MML_optarg_depth 100
22
+
23
+ extern char * yylval;
24
+
25
+ int mtex2MML_lineno = 1;
26
+ int mtex2MML_inoptarg[mtex2MML_optarg_depth];
27
+ int mtex2MML_optarg_ind = 0;
28
+ int mtex2MML_env_start = 0;
29
+ int mtex2MML_variant_start = 0;
30
+
31
+ #define YY_USER_ACTION mtex2MML_capture_eqn_src();
32
+ #define mtex2MML_eqn_bufsize 131072
33
+ char mtex2MML_eqn_src[mtex2MML_eqn_bufsize];
34
+ char * mtex2MML_eqn_end = mtex2MML_eqn_src;
35
+ char mtex2MML_verbdelim;
36
+ char * mtex2MML_str;
37
+
38
+ int mtex2MML_rowposn = 0;
39
+
40
+ // TODO: I'm not sure what the next option does. My addition
41
+ // of `display_style` is to fix issue776. Probably worth merging
42
+ // these in the future?
43
+ int mtex2MML_displaymode = 0;
44
+ int display_style = 0;
45
+
46
+ %}
47
+ %%
48
+ %{ if (mtex2MML_rowposn==1) mtex2MML_rowposn=0;
49
+ if (mtex2MML_rowposn==2) mtex2MML_rowposn=1;
50
+ %}
51
+
52
+ <INITIAL>"$"{1,2} BEGIN(MATH); mtex2MML_inoptarg[0] = 0; mtex2MML_rowposn=2; if (yyleng==2) { mtex2MML_displaymode=1; return STARTDMATH;}; mtex2MML_displaymode=0; return STARTMATH;
53
+ <INITIAL>"\\[" BEGIN(MATH); mtex2MML_inoptarg[0] = 0; mtex2MML_rowposn=2; mtex2MML_displaymode=1; return STARTDMATH;
54
+ <INITIAL>EOF return 0;
55
+ <INITIAL>"\n" {mtex2MML_lineno++; yylval=mtex2MML_copy_string(yytext); return CHAR;}
56
+ <INITIAL>. {yylval=mtex2MML_copy_string(yytext); return CHAR;}
57
+
58
+
59
+ <MATH>{
60
+
61
+
62
+
63
+ "$"{1,2} |
64
+ "\\]" {mtex2MML_eqn_src[mtex2MML_eqn_end-mtex2MML_eqn_src-yyleng]=0; mtex2MML_eqn_end=mtex2MML_eqn_src; yylval=mtex2MML_copy_escaped(mtex2MML_eqn_src); BEGIN(INITIAL); return ENDMATH;}
65
+
66
+
67
+ "\\limits" return LIMITS;
68
+ "\\nolimits" return NOLIMITS;
69
+ "^" return SUP;
70
+ "_" return SUB;
71
+ "{"[\t\r\n ]*"}" return EMPTYMROW;
72
+
73
+ "\\hline" |
74
+ "\\hdashline" { /* Ignore */ ;}
75
+
76
+ ^%.+ { /* Ignore */ ;}
77
+
78
+ "{" {mtex2MML_rowposn = 2; if(mtex2MML_inoptarg[mtex2MML_optarg_ind] != 0) mtex2MML_inoptarg[mtex2MML_optarg_ind]++; return MROWOPEN;}
79
+ "}" {if(mtex2MML_inoptarg[mtex2MML_optarg_ind] != 0) mtex2MML_inoptarg[mtex2MML_optarg_ind]--; return MROWCLOSE;}
80
+
81
+ "\\left" mtex2MML_rowposn=2; return LEFT;
82
+ "\\right" return RIGHT;
83
+
84
+ "\\big" |
85
+ "\\bigr" {return BIG;}
86
+ "\\Big" |
87
+ "\\Bigr" {return BBIG;}
88
+ "\\bigg" |
89
+ "\\biggr" {return BIGG;}
90
+ "\\Bigg" |
91
+ "\\Biggr" {return BBIGG;}
92
+
93
+ "\\bigl" {return BIGL;}
94
+ "\\Bigl" {return BBIGL;}
95
+ "\\biggl" {return BIGGL;}
96
+ "\\Biggl" {return BBIGGL;}
97
+
98
+ "\\bigm" {return BIGM;}
99
+ "\\Bigm" {return BBIGM;}
100
+ "\\biggm" {return BIGGM;}
101
+ "\\Biggm" {return BBIGGM;}
102
+
103
+ "\\mathrlap" |
104
+ "\\rlap" {return RLAP;}
105
+ "\\mathllap" |
106
+ "\\llap" {return LLAP;}
107
+ "\\mathclap" |
108
+ "\\clap" {return CLAP;}
109
+ "\\ulap" |
110
+ "\\dlap" {/* Ignore */ ;}
111
+
112
+
113
+ "&amp;" |
114
+ "&" {mtex2MML_rowposn=2; return COLSEP;}
115
+
116
+ "\\&" {yylval=mtex2MML_copy_string("&amp;"); return MI;}
117
+
118
+ "\\$" {yylval=mtex2MML_copy_string("$"); return MI;}
119
+ "\\%" {yylval=mtex2MML_copy_string("%"); return MI;}
120
+
121
+ "\\\\"[\n\r\t ]*\[[0-9\.]+(em|ex|px|in|cm|mm|mu|pt|pc|%)\] |
122
+ "\\newline"[\n\r\t ]* |
123
+ "\\cr"[\n\r\t ]* |
124
+ "\\\\"[\n\r\t ]* { mtex2MML_rowposn=2; return ROWSEP; }
125
+
126
+ [0-9\.,]+(em|ex|px|in|cm|mm|mu|pt|pc|%) {char * normalized_px = str_replace(yytext, ",", "."); yylval=mtex2MML_copy_string(normalized_px); mtex2MML_free_string(normalized_px); return PXSTRING; }
127
+
128
+ [a-zA-Z] {yylval=mtex2MML_copy_string(yytext); return MI;}
129
+
130
+ [0-9]{1,3}(,[0-9]{3,3})*(\.[0-9]+)? |
131
+ [0-9]*[\.][0-9]+ |
132
+ [0-9]+ {yylval=mtex2MML_copy_string(yytext); return MN;}
133
+ "\\infty" |
134
+ "\\infinity" {yylval=mtex2MML_copy_string("&infin;"); return MN;}
135
+
136
+ "(" |
137
+ "[" {yylval=mtex2MML_copy_string(yytext); return LEFTDELIM;}
138
+
139
+ ")" {yylval=mtex2MML_copy_string(yytext); return RIGHTDELIM;}
140
+ "]" {if(mtex2MML_inoptarg[mtex2MML_optarg_ind]==1 && mtex2MML_optarg_ind > 0) {mtex2MML_inoptarg[mtex2MML_optarg_ind]=0; mtex2MML_optarg_ind--; return OPTARGCLOSE;} else {yylval=mtex2MML_copy_string(yytext); return RIGHTDELIM;}}
141
+
142
+ "\\" {yylval=mtex2MML_copy_string("&#xA0;"); return MTEXT;}
143
+
144
+ "\\_" {yylval=mtex2MML_copy_string("_"); return MI;}
145
+
146
+ "\\lbrace" |
147
+ "\\{" {yylval=mtex2MML_copy_string("{"); return LEFTDELIM;}
148
+ "\\rbrace" |
149
+ "\\}" {yylval=mtex2MML_copy_string("}"); return RIGHTDELIM;}
150
+
151
+ "\\vert" |
152
+ "|" {yylval=mtex2MML_copy_string("&vert;"); return OTHERDELIM;}
153
+ "\\Vert" |
154
+ "\\|" {yylval=mtex2MML_copy_string("&Vert;"); return OTHERDELIM;}
155
+
156
+ "\\lbrack" {yylval=mtex2MML_copy_string("&#91;"); return LEFTDELIM;}
157
+ "\\rbrack" {yylval=mtex2MML_copy_string("&#93;"); return RIGHTDELIM;}
158
+
159
+ "\\lVert" {yylval=mtex2MML_copy_string("&#8741;"); return LEFTDELIM;}
160
+ "\\rVert" {yylval=mtex2MML_copy_string("&#8741;"); return RIGHTDELIM;}
161
+
162
+ "\\lvert" {yylval=mtex2MML_copy_string("&#8739;"); return LEFTDELIM;}
163
+ "\\rvert" {yylval=mtex2MML_copy_string("&#8739;"); return RIGHTDELIM;}
164
+
165
+ "\\bracevert" {yylval=mtex2MML_copy_string("&#9130;"); return OTHERDELIM;}
166
+
167
+ "\\setminus" {yylval=mtex2MML_copy_string("&setminus;"); return MO;}
168
+ "\\backslash" {yylval=mtex2MML_copy_string("&bsol;"); return MO;}
169
+ "\\smallsetminus" {yylval=mtex2MML_copy_string("&#xFE68;"); return MOF;}
170
+
171
+ "\\sslash" {yylval=mtex2MML_copy_string("&parsl;"); return MO;}
172
+
173
+ "\\lfloor" |
174
+ "\\lceil" |
175
+ "\\lang" |
176
+ "\\langle" {yylval=mtex2MML_copy2(yytext, ";"); if (yylval != mtex2MML_empty_string) yylval[0]='&'; return LEFTDELIM;}
177
+ "\\llangle" {yylval=mtex2MML_copy_string("&Lang;"); return LEFTDELIM;}
178
+ "\\lgroup" {yylval=mtex2MML_copy_string("&#10222;"); return LEFTDELIM;}
179
+
180
+ "\\rfloor" |
181
+ "\\rceil" |
182
+ "\\rmoustache" |
183
+ "\\rang" |
184
+ "\\rangle" {yylval=mtex2MML_copy2(yytext, ";"); if (yylval != mtex2MML_empty_string) yylval[0]='&'; return RIGHTDELIM;}
185
+ "\\rrangle" {yylval=mtex2MML_copy_string("&Rang;"); return RIGHTDELIM;}
186
+ "\\rgroup" {yylval=mtex2MML_copy_string("&#10223;"); return RIGHTDELIM;}
187
+
188
+ "/" {yylval=mtex2MML_copy_string(yytext); return OTHERDELIM;}
189
+
190
+ "\\uparrow" |
191
+ "\\downarrow" |
192
+ "\\updownarrow" {yylval=mtex2MML_copy2(yytext, ";"); if (yylval != mtex2MML_empty_string) yylval[0]='&'; return OTHERDELIM;}
193
+
194
+ "." {yylval=mtex2MML_copy_string(yytext); return PERIODDELIM;}
195
+
196
+ "-" {if (mtex2MML_rowposn==1) return UNARYMINUS; else {yylval=mtex2MML_copy_string("&minus;"); return MO;}}
197
+
198
+ "+" {if (mtex2MML_rowposn==1) return UNARYPLUS; else {yylval=mtex2MML_copy_string("+"); return MO;}}
199
+
200
+ "\\#" {yylval=mtex2MML_copy_string("#"); return MOL;}
201
+
202
+ "," {yylval=mtex2MML_copy_string(yytext); return COMMADELIM;}
203
+
204
+ ":" |
205
+ "!" |
206
+ "=" |
207
+ "~" |
208
+ ";" |
209
+ "?" |
210
+ "#" |
211
+ "`" |
212
+ "*" {yylval=mtex2MML_copy_string(yytext); return MOL;}
213
+
214
+ "\\prime" {yylval=mtex2MML_copy_string("&prime;"); return MOLL;}
215
+ "'" {yylval=mtex2MML_copy_string("&prime;"); return MOL;}
216
+ "''" {yylval=mtex2MML_copy_string("&Prime;"); return MOL;}
217
+ "'''" {yylval=mtex2MML_copy_string("&#8244;"); return MOL;}
218
+ "''''" {yylval=mtex2MML_copy_string("&#8279;"); return MOL;}
219
+
220
+ "\\alpha" |
221
+ "\\beta" |
222
+ "\\gamma" |
223
+ "\\delta" |
224
+ "\\zeta" |
225
+ "\\eta" |
226
+ "\\theta" |
227
+ "\\iota" |
228
+ "\\kappa" |
229
+ "\\lambda" |
230
+ "\\mu" |
231
+ "\\nu" |
232
+ "\\xi" |
233
+ "\\pi" |
234
+ "\\rho" |
235
+ "\\sigma" |
236
+ "\\tau" |
237
+ "\\upsilon" |
238
+ "\\chi" |
239
+ "\\psi" |
240
+ "\\omega" |
241
+ "\\backepsilon" |
242
+ "\\varkappa" |
243
+ "\\varpi" |
244
+ "\\varrho" |
245
+ "\\varsigma" |
246
+ "\\vartheta" {yylval=mtex2MML_copy2(yytext, ";"); if (yylval != mtex2MML_empty_string) yylval[0]='&'; return MI;}
247
+
248
+ "\\varepsilon" {yylval=mtex2MML_copy_string("&#x03B5;"); return MI;}
249
+ "\\phi" {yylval=mtex2MML_copy_string("&#x03D5;"); return MI;}
250
+ "\\varphi" {yylval=mtex2MML_copy_string("&#x03C6;"); return MI;}
251
+
252
+ "\\varDelta" {yylval=mtex2MML_copy_string("&#x394;"); return MI;}
253
+ "\\varGamma" {yylval=mtex2MML_copy_string("&#x393;"); return MI;}
254
+ "\\varLambda" {yylval=mtex2MML_copy_string("&#x39B;"); return MI;}
255
+ "\\varOmega" {yylval=mtex2MML_copy_string("&#x3A9;"); return MI;}
256
+ "\\varPhi" {yylval=mtex2MML_copy_string("&#x3A6;"); return MI;}
257
+ "\\varPi" {yylval=mtex2MML_copy_string("&#x3A0;"); return MI;}
258
+ "\\varPsi" {yylval=mtex2MML_copy_string("&#x3A8;"); return MI;}
259
+ "\\varSigma" {yylval=mtex2MML_copy_string("&#x3A3;"); return MI;}
260
+ "\\varTheta" {yylval=mtex2MML_copy_string("&#x398;"); return MI;}
261
+ "\\varUpsilon" {yylval=mtex2MML_copy_string("&#x3A5;"); return MI;}
262
+ "\\varXi" {yylval=mtex2MML_copy_string("&#x39E;"); return MI;}
263
+
264
+ "\\arccos" |
265
+ "\\arcsin" |
266
+ "\\arctan" |
267
+ "\\arg" |
268
+ "\\cos" |
269
+ "\\cosh" |
270
+ "\\cot" |
271
+ "\\coth" |
272
+ "\\csc" |
273
+ "\\deg" |
274
+ "\\dim" |
275
+ "\\exp" |
276
+ "\\hom" |
277
+ "\\ker" |
278
+ "\\lg" |
279
+ "\\ln" |
280
+ "\\log" |
281
+ "\\sec" |
282
+ "\\sin" |
283
+ "\\sinh" |
284
+ "\\tan" |
285
+ "\\tanh" {yylval=mtex2MML_copy_string(yytext+1); return MI;}
286
+
287
+ "\\injlim" {yylval=mtex2MML_copy_string("inj lim"); return MO;}
288
+ "\\projlim" {yylval=mtex2MML_copy_string("proj lim"); return MO;}
289
+
290
+ "\\varinjlim" return VARINJLIM;
291
+ "\\varliminf" return VARLIMINF;
292
+ "\\varlimsup" return VARLIMSUP;
293
+ "\\varprojlim" return VARPROJLIM;
294
+
295
+ "\\det" |
296
+ "\\gcd" |
297
+ "\\inf" |
298
+ "\\lim" |
299
+ "\\liminf" |
300
+ "\\limsup" |
301
+ "\\max" |
302
+ "\\min" |
303
+ "\\Pr" |
304
+ "\\sup" {yylval=mtex2MML_copy_string(yytext+1); return MIB;}
305
+
306
+ "\\omicron" {yylval=mtex2MML_copy_string("&oscr;"); return MI;}
307
+
308
+ "\\epsilon" {yylval=mtex2MML_copy_string("&epsi;"); return MI;}
309
+
310
+ "\\cdot" {yylval=mtex2MML_copy_string("&sdot;"); return MO;}
311
+ "\\cdotp" {yylval=mtex2MML_copy_string("&middot;"); return MO;}
312
+ "\\centerdot" {yylval=mtex2MML_copy_string("&centerdot;"); return MO;}
313
+
314
+ "\\dotsb" |
315
+ "\\dotsi" |
316
+ "\\dotsm" {yylval=mtex2MML_copy_string("&#x22EF;"); return MI;}
317
+
318
+ "\\ldotp" |
319
+ "\\dotsc" |
320
+ "\\dotso" {yylval=mtex2MML_copy_string("&#x2026;"); return MI;}
321
+
322
+ "\\Alpha" |
323
+ "\\Beta" |
324
+ "\\Delta" |
325
+ "\\Gamma" |
326
+ "\\digamma" |
327
+ "\\Lambda" |
328
+ "\\Pi" |
329
+ "\\Phi" |
330
+ "\\Psi" |
331
+ "\\Sigma" |
332
+ "\\Theta" |
333
+ "\\Xi" |
334
+ "\\Zeta" |
335
+ "\\Eta" |
336
+ "\\Iota" |
337
+ "\\Kappa" |
338
+ "\\Mu" |
339
+ "\\Nu" |
340
+ "\\Rho" |
341
+ "\\Tau" |
342
+ "\\mho" |
343
+ "\\Omega" {yylval=mtex2MML_copy2(yytext, ";"); if (yylval != mtex2MML_empty_string) yylval[0]='&'; return MI;}
344
+
345
+ "\\Upsilon" |
346
+ "\\Upsi" {yylval=mtex2MML_copy_string("&Upsi;"); return MI;}
347
+
348
+ "\\iff" |
349
+ "\\Longleftrightarrow" {yylval=mtex2MML_copy_string("&iff;"); return MOL;}
350
+
351
+ "\\longleftrightarrow" {yylval=mtex2MML_copy_string("&#10231;"); return MOL;}
352
+
353
+ "\\Leftrightarrow" {yylval=mtex2MML_copy_string("&Leftrightarrow;"); return MOL;}
354
+
355
+ "\\impliedby" |
356
+ "\\Leftarrow" {yylval=mtex2MML_copy_string("&Leftarrow;"); return MOL;}
357
+
358
+ "\\implies" |
359
+ "\\Rightarrow" {yylval=mtex2MML_copy_string("&Rightarrow;"); return MOL;}
360
+
361
+ "\\hookleftarrow" {yylval=mtex2MML_copy_string("&hookleftarrow;"); return MOL;}
362
+
363
+ "\\embedsin" |
364
+ "\\hookrightarrow" {yylval=mtex2MML_copy_string("&hookrightarrow;"); return MOL;}
365
+
366
+ "\\longleftarrow" {yylval=mtex2MML_copy_string("&longleftarrow;"); return MOL;}
367
+
368
+ "\\Longleftarrow" {yylval=mtex2MML_copy_string("&#10232;"); return MOL;}
369
+
370
+ "\\longrightarrow" {yylval=mtex2MML_copy_string("&longrightarrow;"); return MOL;}
371
+
372
+ "\\Longrightarrow" {yylval=mtex2MML_copy_string("&#10233;"); return MOL;}
373
+
374
+ "\\leftarrow" {yylval=mtex2MML_copy_string("&leftarrow;"); return MOL;}
375
+
376
+ "\\to" |
377
+ "\\rightarrow" {yylval=mtex2MML_copy_string("&rightarrow;"); return MOL;}
378
+
379
+ "\\leftrightarrow" {yylval=mtex2MML_copy_string("&leftrightarrow;"); return MOL;}
380
+
381
+ "\\mapsto" |
382
+ "\\map" {yylval=mtex2MML_copy_string("&map;"); return MOL;}
383
+
384
+ "\\nearrow" |
385
+ "\\nearr" {yylval=mtex2MML_copy_string("&nearr;"); return MOL;}
386
+
387
+ "\\nwarrow" |
388
+ "\\nwarr" {yylval=mtex2MML_copy_string("&nwarr;"); return MOL;}
389
+
390
+ "\\searrow" |
391
+ "\\searr" {yylval=mtex2MML_copy_string("&searr;"); return MOL;}
392
+
393
+ "\\swarrow" |
394
+ "\\swarr" {yylval=mtex2MML_copy_string("&swarr;"); return MOL;}
395
+
396
+ "\\neArrow" |
397
+ "\\neArr" {yylval=mtex2MML_copy_string("&neArr;"); return MOL;}
398
+
399
+ "\\nwArrow" |
400
+ "\\nwArr" {yylval=mtex2MML_copy_string("&nwArr;"); return MOL;}
401
+
402
+ "\\seArrow" |
403
+ "\\seArr" {yylval=mtex2MML_copy_string("&seArr;"); return MOL;}
404
+
405
+ "\\swArrow" |
406
+ "\\swArr" {yylval=mtex2MML_copy_string("&swArr;"); return MOL;}
407
+
408
+ "\\darr" {yylval=mtex2MML_copy_string("&darr;"); return MOL;}
409
+
410
+ "\\Downarrow" {yylval=mtex2MML_copy_string("&dArr;"); return MOL;}
411
+
412
+ "\\Arrowvert" {yylval=mtex2MML_copy_string("&#8214;"); return MOL;}
413
+
414
+ "\\arrowvert" {yylval=mtex2MML_copy_string("&#9168;"); return MOL;}
415
+
416
+ "\\uparr" {yylval=mtex2MML_copy_string("&uarr;"); return MOL;}
417
+
418
+ "\\Uparrow" {yylval=mtex2MML_copy_string("&uArr;"); return MOL;}
419
+
420
+ "\\downuparrow" |
421
+ "\\duparr" |
422
+ "\\updarr" {yylval=mtex2MML_copy_string("&updownarrow;"); return MOL;}
423
+
424
+ "\\Updownarrow" {yylval=mtex2MML_copy_string("&Updownarrow;"); return MOL;}
425
+
426
+ "\\leftsquigarrow" {yylval=mtex2MML_copy_string("&#x21DC;"); return MOL;}
427
+ "\\rightsquigarrow" {yylval=mtex2MML_copy_string("&zigrarr;"); return MOL;}
428
+ "\\dashleftarrow" {yylval=mtex2MML_copy_string("&#x290E;"); return MOL;}
429
+ "\\dashrightarrow" {yylval=mtex2MML_copy_string("&#x290F;"); return MOL;}
430
+ "\\curvearrowbotright" {yylval=mtex2MML_copy_string("&#x293B;"); return MOL;}
431
+ "\\righttoleftarrow" {yylval=mtex2MML_copy_string("&#x27F2;"); return MOL;}
432
+ "\\lefttorightarrow" {yylval=mtex2MML_copy_string("&#x27F3;"); return MOL;}
433
+ "\\leftrightsquigarrow" |
434
+ "\\upuparrows" |
435
+ "\\rightleftarrows" |
436
+ "\\rightrightarrows" |
437
+ "\\curvearrowleft" |
438
+ "\\curvearrowright" |
439
+ "\\downdownarrows" |
440
+ "\\leftarrowtail" |
441
+ "\\rightarrowtail" |
442
+ "\\leftleftarrows" |
443
+ "\\leftrightarrows" |
444
+ "\\Lleftarrow" |
445
+ "\\Rrightarrow" |
446
+ "\\looparrowleft" |
447
+ "\\looparrowright" |
448
+ "\\Lsh" |
449
+ "\\Rsh" |
450
+ "\\circlearrowleft" |
451
+ "\\circlearrowright" |
452
+ "\\twoheadleftarrow" |
453
+ "\\twoheadrightarrow" |
454
+ "\\nLeftarrow" |
455
+ "\\nleftarrow" |
456
+ "\\nLeftrightarrow" |
457
+ "\\nleftrightarrow" |
458
+ "\\nRightarrow" |
459
+ "\\nrightarrow" |
460
+ "\\rightharpoonup" |
461
+ "\\rightharpoondown" |
462
+ "\\leftharpoonup" |
463
+ "\\leftharpoondown" |
464
+ "\\downharpoonleft" |
465
+ "\\downharpoonright" |
466
+ "\\leftrightharpoons" |
467
+ "\\rightleftharpoons" |
468
+ "\\upharpoonleft" |
469
+ "\\upharpoonright" {yylval=mtex2MML_copy2(yytext, ";"); if (yylval != mtex2MML_empty_string) yylval[0]='&'; return MOL;}
470
+
471
+ "\\xrightarrow" |
472
+ "\\xleftarrow" |
473
+ "\\xleftrightarrow" |
474
+ "\\xLeftarrow" |
475
+ "\\xRightarrow" |
476
+ "\\xLeftrightarrow" |
477
+ "\\xleftrightharpoons" |
478
+ "\\xrightleftharpoons" |
479
+ "\\xhookleftarrow" |
480
+ "\\xhookrightarrow" |
481
+ "\\xtwoheadrightarrow" |
482
+ "\\xtwoheadleftarrow" |
483
+ "\\xmapsto" {BEGIN(OPTARG); yylval = mtex2MML_copy3("&", yytext+2, ";"); return XARROW;}
484
+
485
+ "\\xlongequal" {BEGIN(OPTARG); yylval=mtex2MML_copy_string("&#61;"); return XARROW;}
486
+
487
+ "\\xtofrom" {BEGIN(OPTARG); yylval=mtex2MML_copy_string("&#8644;"); return XARROW;}
488
+
489
+ "\\dots" |
490
+ "\\ldots" {yylval=mtex2MML_copy_string("&hellip;"); return MI;}
491
+ "\\cdots" {yylval=mtex2MML_copy_string("&ctdot;"); return MI;}
492
+ "\\ddots" {yylval=mtex2MML_copy_string("&dtdot;"); return MI;}
493
+ "\\udots" {yylval=mtex2MML_copy_string("&utdot;"); return MI;}
494
+ "\\vdots" {yylval=mtex2MML_copy_string("&vellip;"); return MI;}
495
+ "\\colon" {yylval=mtex2MML_copy_string("&colon;"); return MOR;}
496
+
497
+ "\\cup" |
498
+ "\&union;" |
499
+ "\\union" {yylval=mtex2MML_copy_string("&cup;"); return MOL;}
500
+
501
+ "\\bigcup" |
502
+ "\\Union" |
503
+ "\&Union;" {yylval=mtex2MML_copy_string("&Union;"); return MOB;}
504
+
505
+ "\\cap" |
506
+ "\\intersection" {yylval=mtex2MML_copy_string("&cap;"); return MOL;}
507
+
508
+ "\\bigcap" |
509
+ "\\Intersection" {yylval=mtex2MML_copy_string("&Intersection;"); return MOB;}
510
+
511
+ "\\in" {yylval=mtex2MML_copy_string("&Element;"); return MOL;}
512
+
513
+ /* For some reason, Firefox does not put in the right spacing around some of these operators
514
+ * unless we ask for it, explicitly.
515
+ */
516
+ "\\coloneqq" {yylval=mtex2MML_copy_string("&colone;"); return MOL;}
517
+ "\\Coloneqq" {yylval=mtex2MML_copy_string("&Colone;"); return MOS;}
518
+ "\\coloneq" {yylval=mtex2MML_copy_string("&#x2236;&#x2212;"); return MOS;}
519
+ "\\Coloneq" {yylval=mtex2MML_copy_string("&#x2237;&#x2212;"); return MOS;}
520
+ "\\eqqcolon" {yylval=mtex2MML_copy_string("&ecolon;"); return MOS;}
521
+ "\\Eqqcolon" {yylval=mtex2MML_copy_string("&#x003d;&#x2237;"); return MOS;}
522
+ "\\eqcolon" {yylval=mtex2MML_copy_string("&#x2239;"); return MOS;}
523
+ "\\Eqcolon" {yylval=mtex2MML_copy_string("&#x2212;&#x2237;"); return MOS;}
524
+ "\\colonapprox" {yylval=mtex2MML_copy_string("&#x2236;&#x2248;"); return MOS;}
525
+ "\\Colonapprox" {yylval=mtex2MML_copy_string("&#x2237;&#x2248;"); return MOS;}
526
+ "\\colonsim" {yylval=mtex2MML_copy_string("&#x2236;&#x223C;"); return MOS;}
527
+ "\\Colonsim" {yylval=mtex2MML_copy_string("&#x2237;&#x223C;"); return MOS;}
528
+ "\\dblcolon" {yylval=mtex2MML_copy_string("&Colon;"); return MOL;}
529
+
530
+ "\\ast" |
531
+ "\\Cap" |
532
+ "\\Cup" |
533
+ "\\circledast" |
534
+ "\\circledcirc" |
535
+ "\\curlyvee" |
536
+ "\\curlywedge" |
537
+ "\\divideontimes" |
538
+ "\\dotplus" |
539
+ "\\leftthreetimes" |
540
+ "\\rightthreetimes" |
541
+ "\\veebar" |
542
+ "\\gt" |
543
+ "\\lt" |
544
+ "\\approxeq" |
545
+ "\\backsim" |
546
+ "\\backsimeq" |
547
+ "\\barwedge" |
548
+ "\\doublebarwedge" |
549
+ "\\subset" |
550
+ "\\subseteq" |
551
+ "\\subseteqq" |
552
+ "\\subsetneq" |
553
+ "\\subsetneqq" |
554
+ "\\varsubsetneq" |
555
+ "\\varsubsetneqq" |
556
+ "\\prec" |
557
+ "\\parallel" |
558
+ "\\nparallel" |
559
+ "\\shortparallel" |
560
+ "\\nshortparallel" |
561
+ "\\perp" |
562
+ "\\eqslantgtr" |
563
+ "\\eqslantless" |
564
+ "\\gg" |
565
+ "\\ggg" |
566
+ "\\geq" |
567
+ "\\geqq" |
568
+ "\\geqslant" |
569
+ "\\gneq" |
570
+ "\\gneqq" |
571
+ "\\gnapprox" |
572
+ "\\gnsim" |
573
+ "\\gtrapprox" |
574
+ "\\ge" |
575
+ "\\le" |
576
+ "\\leq" |
577
+ "\\leqq" |
578
+ "\\leqslant" |
579
+ "\\lessapprox" |
580
+ "\\lessdot" |
581
+ "\\lesseqgtr" |
582
+ "\\lesseqqgtr" |
583
+ "\\lessgtr" |
584
+ "\\lneq" |
585
+ "\\lneqq" |
586
+ "\\lnsim" |
587
+ "\\lvertneqq" |
588
+ "\\gtrsim" |
589
+ "\\gtrdot" |
590
+ "\\gtreqless" |
591
+ "\\gtreqqless" |
592
+ "\\gtrless" |
593
+ "\\gvertneqq" |
594
+ "\\lesssim" |
595
+ "\\lnapprox" |
596
+ "\\nsubset" |
597
+ "\\nsubseteq" |
598
+ "\\nsubseteqq" |
599
+ "\\notin" |
600
+ "\\ni" |
601
+ "\\notni" |
602
+ "\\nmid" |
603
+ "\\nshortmid" |
604
+ "\\preceq" |
605
+ "\\npreceq" |
606
+ "\\ll" |
607
+ "\\ngeq" |
608
+ "\\ngeqq" |
609
+ "\\ngeqslant" |
610
+ "\\nleq" |
611
+ "\\nleqq" |
612
+ "\\nleqslant" |
613
+ "\\nless" |
614
+ "\\supset" |
615
+ "\\supseteq" |
616
+ "\\supseteqq" |
617
+ "\\supsetneq" |
618
+ "\\supsetneqq" |
619
+ "\\varsupsetneq" |
620
+ "\\varsupsetneqq" |
621
+ "\\approx" |
622
+ "\\asymp" |
623
+ "\\bowtie" |
624
+ "\\dashv" |
625
+ "\\Vdash" |
626
+ "\\vDash" |
627
+ "\\VDash" |
628
+ "\\vdash" |
629
+ "\\Vvdash" |
630
+ "\\models" |
631
+ "\\sim" |
632
+ "\\simeq" |
633
+ "\\nsim" |
634
+ "\\smile" |
635
+ "\\triangle" |
636
+ "\\triangledown" |
637
+ "\\triangleleft" |
638
+ "\\cong" |
639
+ "\\succ" |
640
+ "\\nsucc" |
641
+ "\\ngtr" |
642
+ "\\nsupset" |
643
+ "\\nsupseteq" |
644
+ "\\propto" |
645
+ "\\equiv" |
646
+ "\\nequiv" |
647
+ "\\frown" |
648
+ "\\triangleright" |
649
+ "\\ncong" |
650
+ "\\succeq" |
651
+ "\\succapprox" |
652
+ "\\succnapprox" |
653
+ "\\succcurlyeq" |
654
+ "\\succsim" |
655
+ "\\succnsim" |
656
+ "\\nsucceq" |
657
+ "\\nvDash" |
658
+ "\\nvdash" |
659
+ "\\nVDash" |
660
+ "\\amalg" |
661
+ "\\pm" |
662
+ "\\mp" |
663
+ "\\bigcirc" |
664
+ "\\wr" |
665
+ "\\odot" |
666
+ "\\uplus" |
667
+ "\\clubsuit" |
668
+ "\\spadesuit" |
669
+ "\\Diamond" |
670
+ "\\diamond" |
671
+ "\\sqcup" |
672
+ "\\sqcap" |
673
+ "\\sqsubset" |
674
+ "\\sqsubseteq" |
675
+ "\\sqsupset" |
676
+ "\\sqsupseteq" |
677
+ "\\Subset" |
678
+ "\\Supset" |
679
+ "\\ltimes" |
680
+ "\\div" |
681
+ "\\rtimes" |
682
+ "\\bot" |
683
+ "\\therefore" |
684
+ "\\thickapprox" |
685
+ "\\thicksim" |
686
+ "\\varpropto" |
687
+ "\\varnothing" |
688
+ "\\flat" |
689
+ "\\vee" |
690
+ "\\because" |
691
+ "\\between" |
692
+ "\\Bumpeq" |
693
+ "\\bumpeq" |
694
+ "\\circeq" |
695
+ "\\curlyeqprec" |
696
+ "\\curlyeqsucc" |
697
+ "\\doteq" |
698
+ "\\doteqdot" |
699
+ "\\eqcirc" |
700
+ "\\fallingdotseq" |
701
+ "\\multimap" |
702
+ "\\pitchfork" |
703
+ "\\precapprox" |
704
+ "\\precnapprox" |
705
+ "\\preccurlyeq" |
706
+ "\\precsim" |
707
+ "\\precnsim" |
708
+ "\\risingdotseq" |
709
+ "\\sharp" |
710
+ "\\bullet" |
711
+ "\\nexists" |
712
+ "\\dagger" |
713
+ "\\ddagger" |
714
+ "\\top" |
715
+ "\\natural" |
716
+ "\\angle" |
717
+ "\\measuredangle" |
718
+ "\\backprime" |
719
+ "\\bigstar" |
720
+ "\\blacklozenge" |
721
+ "\\lozenge" |
722
+ "\\blacksquare" |
723
+ "\\blacktriangle" |
724
+ "\\blacktriangleleft" |
725
+ "\\blacktriangleright" |
726
+ "\\blacktriangledown" |
727
+ "\\ntriangleleft" |
728
+ "\\ntriangleright" |
729
+ "\\ntrianglelefteq" |
730
+ "\\ntrianglerighteq" |
731
+ "\\trianglelefteq" |
732
+ "\\trianglerighteq" |
733
+ "\\triangleq" |
734
+ "\\vartriangleleft" |
735
+ "\\vartriangleright" |
736
+ "\\forall" |
737
+ "\\bigtriangleup" |
738
+ "\\bigtriangledown" |
739
+ "\\nprec" {yylval=mtex2MML_copy2(yytext, ";"); if (yylval != mtex2MML_empty_string) yylval[0]='&'; return MOL;}
740
+
741
+ "\\land" {yylval=mtex2MML_copy_string("&and;"); return MOL;}
742
+ "\\lor" {yylval=mtex2MML_copy_string("&or;"); return MOL;}
743
+ "\\surd" {yylval=mtex2MML_copy_string("&radic;"); return MOL;}
744
+ "\\And" {yylval=mtex2MML_copy_string("&amp;"); return MOL;}
745
+ "\\checkmark" {yylval=mtex2MML_copy_string("&#10003;"); return MOL;}
746
+ "\\circledR" {yylval=mtex2MML_copy_string("&reg;"); return MOL;}
747
+ "\\circledS" {yylval=mtex2MML_copy_string("&#9416;"); return MOL;}
748
+ "\\complement" {yylval=mtex2MML_copy_string("&#8705;"); return MOL;}
749
+ "\\diagdown" {yylval=mtex2MML_copy_string("&#9586;"); return MOL;}
750
+ "\\diagup" {yylval=mtex2MML_copy_string("&#9585;"); return MOL;}
751
+ "\\doublecap" {yylval=mtex2MML_copy_string("&#8914;"); return MOL;}
752
+ "\\doublecup" {yylval=mtex2MML_copy_string("&#8915;"); return MOL;}
753
+ "\\eqsim" {yylval=mtex2MML_copy_string("&#8770;"); return MOL;}
754
+ "\\Finv" {yylval=mtex2MML_copy_string("&#8498;"); return MOL;}
755
+ "\\Game" {yylval=mtex2MML_copy_string("&#8513;"); return MOL;}
756
+ "\\gggtr" {yylval=mtex2MML_copy_string("&#8921;"); return MOL;}
757
+ "\\gets" {yylval=mtex2MML_copy_string("&#x2190;"); return MOL;}
758
+ "\\hslash" {yylval=mtex2MML_copy_string("&#x210F;"); return MOL;}
759
+ "\\intop" {yylval=mtex2MML_copy_string("&#x222B;"); return MOL;}
760
+ "\\Join" {yylval=mtex2MML_copy_string("&#x22C8;"); return MOL;}
761
+ "\\leadsto" {yylval=mtex2MML_copy_string("&#x21DD;"); return MOL;}
762
+ "\\llcorner" {yylval=mtex2MML_copy_string("&#x231E;"); return MOL;}
763
+ "\\lrcorner" {yylval=mtex2MML_copy_string("&#x231F;"); return MOL;}
764
+ "\\llless" {yylval=mtex2MML_copy_string("&#x22D8;"); return MOL;}
765
+ "\\lmoustache" {yylval=mtex2MML_copy_string("&#x23B0;"); return MOL;}
766
+ "\\lnot" {yylval=mtex2MML_copy_string("&#xAC;"); return MOL;}
767
+ "\\longmapsto" {yylval=mtex2MML_copy_string("&#x27FC;"); return MOL;}
768
+ "\\maltese" {yylval=mtex2MML_copy_string("&#x2720;"); return MOL;}
769
+ "\\nsupseteqq" {yylval=mtex2MML_copy_string("&#x2289;"); return MOL;}
770
+ "\\nVdash" {yylval=mtex2MML_copy_string("&#x22AE;"); return MOL;}
771
+ "\\owns" {yylval=mtex2MML_copy_string("&#x220B;"); return MOL;}
772
+ "\\precneqq" {yylval=mtex2MML_copy_string("&#x2AB5;"); return MOL;}
773
+ "\\restriction" {yylval=mtex2MML_copy_string("&#x21BE;"); return MOL;}
774
+ "\\smallint" {yylval=mtex2MML_copy_string("&#x222B;"); return MOL;}
775
+ "\\succneqq" {yylval=mtex2MML_copy_string("&#x2AB6;"); return MOL;}
776
+ "\\ulcorner" {yylval=mtex2MML_copy_string("&#x231C;"); return MOL;}
777
+ "\\urcorner" {yylval=mtex2MML_copy_string("&#x231D;"); return MOL;}
778
+ "\\vartriangle" {yylval=mtex2MML_copy_string("&#x25B3;"); return MOL;}
779
+ "\\yen" {yylval=mtex2MML_copy_string("&#xA5;"); return MOL;}
780
+
781
+ "\\TeX" {return TEXSYMBOL;}
782
+ "\\LaTeX" {return LATEXSYMBOL;}
783
+
784
+ "\\aleph" |
785
+ "\\beth" |
786
+ "\\gimel" |
787
+ "\\daleth" |
788
+ "\\eth" |
789
+ "\\ell" |
790
+ "\\hbar" |
791
+ "\\Im" |
792
+ "\\imath" |
793
+ "\\jmath" |
794
+ "\\wp" |
795
+ "\\Re" {yylval=mtex2MML_copy2(yytext, ";"); if (yylval != mtex2MML_empty_string) yylval[0]='&'; return MI;}
796
+
797
+ "\\Perp" |
798
+ "\\Vbar" {yylval=mtex2MML_copy_string("&Vbar;"); return MOL;}
799
+ "\\boxdot" {yylval=mtex2MML_copy_string("&sdotb;"); return MOL;}
800
+ "\\Doteq" {yylval=mtex2MML_copy_string("&#8785;"); return MOL;}
801
+ "\\Box" |
802
+ "\\square" {yylval=mtex2MML_copy_string("&square;"); return MOL;}
803
+ "\\emptyset" |
804
+ "\\empty" {yylval=mtex2MML_copy_string("&emptyv;"); return MI;}
805
+ "\\exists" {yylval=mtex2MML_copy_string("&Exists;"); return MOL;}
806
+ "\\circ" {yylval=mtex2MML_copy_string("&SmallCircle;"); return MOL;}
807
+ "\\rhd" {yylval=mtex2MML_copy_string("&RightTriangle;"); return MOL;}
808
+ "\\lhd" {yylval=mtex2MML_copy_string("&LeftTriangle;"); return MOL;}
809
+ "\\lll" {yylval=mtex2MML_copy_string("&Ll;"); return MOL;}
810
+ "\\unrhd" {yylval=mtex2MML_copy_string("&RightTriangleEqual;"); return MOL;}
811
+ "\\unlhd" {yylval=mtex2MML_copy_string("&LeftTriangleEqual;"); return MOL;}
812
+ "\\Del" |
813
+ "\\nabla" {yylval=mtex2MML_copy_string("&Del;"); return MOL;}
814
+ "\\sphericalangle" {yylval=mtex2MML_copy_string("&angsph;"); return MOL;}
815
+
816
+ "\\heartsuit" {yylval=mtex2MML_copy_string("&#x2661;"); return MOL;}
817
+ "\\diamondsuit" {yylval=mtex2MML_copy_string("&#x2662;"); return MOL;}
818
+
819
+ "\\partial" {yylval=mtex2MML_copy_string("&PartialD;"); return MOL;}
820
+
821
+ "\\qed" {yylval=mtex2MML_copy_string("&squf;"); return MO;}
822
+
823
+ "\\mod" {yylval=mtex2MML_copy_string("mod"); return MOS;}
824
+ "\\pmod" {return PMOD;}
825
+ "\\bmod" {return BMOD;}
826
+ "\\pod" {return POD;}
827
+
828
+ "\\bottom" {yylval=mtex2MML_copy_string("&perp;"); return MOL;}
829
+
830
+ "\\neg" {yylval=mtex2MML_copy_string("&not;"); return MOL;}
831
+
832
+ "\\neq" |
833
+ "\\ne" {yylval=mtex2MML_copy_string("&ne;"); return MOL;}
834
+
835
+ "\\shortmid" |
836
+ "\\mid" {yylval=mtex2MML_copy_string("&VerticalBar;"); return MOS;}
837
+
838
+ "\\int" |
839
+ "\\integral" {yylval=mtex2MML_copy_string("&Integral;"); return MOL;}
840
+
841
+ "\\iint" |
842
+ "\\doubleintegral" {yylval=mtex2MML_copy_string("&Int;"); return MOL;}
843
+
844
+ "\\iiint" |
845
+ "\\tripleintegral" {yylval=mtex2MML_copy_string("&tint;"); return MOL;}
846
+
847
+ "\\iiiint" |
848
+ "\\quadrupleintegral" {yylval=mtex2MML_copy_string("&qint;"); return MOL;}
849
+
850
+ "\\idotsint" {yylval=mtex2MML_copy_string("&#x222B; &#x22EF; &#x222B;"); return MOL;}
851
+
852
+ "\\oint" |
853
+ "\\conint" |
854
+ "\\contourintegral" {yylval=mtex2MML_copy_string("&conint;"); return MOL;}
855
+
856
+ "\\times" {yylval=mtex2MML_copy_string("&times;"); return MOL;}
857
+ "\\star" {yylval=mtex2MML_copy_string("&sstarf;"); return MOL;}
858
+ "\\circleddash" |
859
+ "\\odash" {yylval=mtex2MML_copy_string("&odash;"); return MOL;}
860
+
861
+ "\\intercal" {yylval=mtex2MML_copy_string("&intcal;"); return MOL;}
862
+ "\\smallfrown" {yylval=mtex2MML_copy_string("&sfrown;"); return MOL;}
863
+ "\\smallsmile" {yylval=mtex2MML_copy_string("&ssmile;"); return MOL;}
864
+
865
+ "\\boxminus" |
866
+ "\\minusb" {yylval=mtex2MML_copy_string("&boxminus;"); return MOL;}
867
+ "\\boxplus" |
868
+ "\\plusb" {yylval=mtex2MML_copy_string("&boxplus;"); return MOL;}
869
+ "\\boxtimes" |
870
+ "\\timesb" {yylval=mtex2MML_copy_string("&boxtimes;"); return MOL;}
871
+
872
+ "\\sideset" {return SIDESET;}
873
+
874
+ "\\sum" {yylval=mtex2MML_copy_string("&Sum;"); return MOB;}
875
+
876
+ "\\prod" |
877
+ "\\product" {yylval=mtex2MML_copy_string("&prod;"); return MOB;}
878
+
879
+ "\\coprod" |
880
+ "\\coproduct" {yylval=mtex2MML_copy_string("&coprod;"); return MOB;}
881
+
882
+ "\\otimes" {yylval=mtex2MML_copy_string("&otimes;"); return MOL;}
883
+ "\\Otimes" {yylval=mtex2MML_copy_string("&Otimes;"); return MOL;}
884
+ "\\bigotimes" {yylval=mtex2MML_copy_string("&bigotimes;"); return MOL;}
885
+
886
+ "\\ominus" {yylval=mtex2MML_copy_string("&ominus;"); return MOL;}
887
+ "\\oslash" {yylval=mtex2MML_copy_string("&osol;"); return MOL;}
888
+
889
+ "\\oplus" {yylval=mtex2MML_copy_string("&oplus;"); return MOL;}
890
+ "\\Oplus" |
891
+ "\\bigoplus" {yylval=mtex2MML_copy_string("&bigoplus;"); return MOB;}
892
+
893
+ "\\bigodot" {yylval=mtex2MML_copy_string("&bigodot;"); return MOB;}
894
+ "\\bigsqcup" {yylval=mtex2MML_copy_string("&bigsqcup;"); return MOB;}
895
+ "\\bigsqcap" {yylval=mtex2MML_copy_string("&#x2A05;"); return MOB;}
896
+ "\\biginterleave" {yylval=mtex2MML_copy_string("&#x2AFC;"); return MOB;}
897
+ "\\biguplus" {yylval=mtex2MML_copy_string("&biguplus;"); return MOB;}
898
+
899
+ "\\wedge" {yylval=mtex2MML_copy_string("&wedge;"); return MOL;}
900
+ "\\Wedge" |
901
+ "\\bigwedge" {yylval=mtex2MML_copy_string("&xwedge;"); return MOB;}
902
+
903
+ "\\Vee" |
904
+ "\\bigvee" {yylval=mtex2MML_copy_string("&bigvee;"); return MOB;}
905
+
906
+ "\\invamp" |
907
+ "\\parr" {yylval=mtex2MML_copy_string("&#8523;"); return MOL;}
908
+
909
+ "\\frac" {return FRAC;}
910
+ "\\tfrac" {return TFRAC;}
911
+ "\\dfrac" {return DFRAC;}
912
+ "\\cfrac" {return CFRAC;}
913
+ "\\genfrac" {return GENFRAC;}
914
+
915
+ "\\binom" {return BINOM;}
916
+ "\\tbinom" {return TBINOM;}
917
+ "\\brace" {return BRACE;}
918
+ "\\brack" {return BRACK;}
919
+ "\\choose" {return CHOOSE;}
920
+ "\\dbinom" {return DBINOM;}
921
+
922
+ "\\tensor" {return TENSOR;}
923
+
924
+ "\\multiscripts" {return MULTI;}
925
+
926
+ "\\overbrace" {return OVERBRACE;}
927
+
928
+ "\\overbracket" {return OVERBRACKET;}
929
+
930
+ "\\underbrace" {return UNDERBRACE;}
931
+
932
+ "\\underbracket" {return UNDERBRACKET;}
933
+
934
+ "\\underline" {return UNDERLINE;}
935
+
936
+ "\\underleftarrow" { return UNDERLEFTARROW;}
937
+
938
+ "\\underleftrightarrow" { return UNDERLEFTRIGHTARROW;}
939
+
940
+ "\\underrightarrow" { return UNDERRIGHTARROW;}
941
+
942
+ "\\bar" {return BAR;}
943
+ "\\overline" |
944
+ "\\closure" |
945
+ "\\widebar" {return WIDEBAR;}
946
+
947
+ "\\skew" {return SKEW; }
948
+
949
+ "\\acute" {return ACUTE;}
950
+
951
+ "\\grave" {return GRAVE;}
952
+
953
+ "\\breve" {return BREVE;}
954
+
955
+ "\\mathring" {return MATHRING;}
956
+
957
+ "\\vec" {return VEC;}
958
+ "\\widevec" {return WIDEVEC;}
959
+
960
+ "\\dot" {return DOT;}
961
+ "\\ddot" {return DDOT;}
962
+ "\\dddot" {return DDDOT;}
963
+ "\\ddddot" {return DDDDOT;}
964
+
965
+ "\\tilde" {return TILDE;}
966
+ "\\widetilde" {return WIDETILDE;}
967
+
968
+
969
+ "\\check" {return CHECK;}
970
+ "\\widecheck" {return WIDECHECK;}
971
+
972
+
973
+ "\\hat" {return HAT;}
974
+ "\\widehat" {return WIDEHAT;}
975
+
976
+ "\\underset" {return UNDER;}
977
+
978
+ "\\buildrel" {return BUILDREL;}
979
+
980
+ "\\stackrel" |
981
+ "\\overset" {return OVER;}
982
+
983
+ "\\over" {return TEXOVER;}
984
+ "\\overwithdelims" {return TEXOVERWITHDELIMS;}
985
+ "\\atop" {return TEXATOP;}
986
+ "\\atopwithdelims" {return TEXATOPWITHDELIMS;}
987
+ "\\above" {return TEXABOVE;}
988
+ "\\abovewithdelims" {return TEXABOVEWITHDELIMS;}
989
+
990
+ "\\overleftarrow" {return OVERLEFTARROW;}
991
+
992
+ "\\overleftrightarrow" {return OVERLEFTRIGHTARROW;}
993
+
994
+ "\\overrightarrow" {return OVERRIGHTARROW;}
995
+
996
+ "\\underoverset" {return UNDEROVER;}
997
+
998
+ "\\sqrt" {BEGIN(OPTARG); return SQRT;}
999
+
1000
+ "\\root" {return ROOT;}
1001
+ "\\leftroot" {BEGIN(NUM); return LEFTROOT;}
1002
+ "\\uproot" {BEGIN(NUM); return UPROOT;}
1003
+
1004
+ "\\of" {return OF;}
1005
+
1006
+ "\\text" {BEGIN(PLAINTEXT); return TEXTBOX;}
1007
+ "\\verb"[^ ] {mtex2MML_verbdelim = yytext[yyleng-1]; mtex2MML_str = mtex2MML_copy_string(""); BEGIN(VERBTEXT); return VERBBOX;}
1008
+
1009
+ "\\statusline" {BEGIN(PLAINTEXT); return STATLINE;}
1010
+ "\\tooltip" {BEGIN(PLAINTEXT); return TOOLTIP;}
1011
+
1012
+ "\\toggle" {return TOGGLE;}
1013
+ "\\begintoggle" {return TOGGLESTART;}
1014
+ "\\endtoggle" {return TOGGLEEND;}
1015
+
1016
+ "\\mathraisebox" {BEGIN(RAISEBOX1); return RAISEBOX;}
1017
+
1018
+ "\\fghilight" |
1019
+ "\\fghighlight" {BEGIN(ATTRIBUTELIST); return FGHIGHLIGHT;}
1020
+
1021
+ "\\bghilight" |
1022
+ "\\bghighlight" {BEGIN(ATTRIBUTELIST); return BGHIGHLIGHT;}
1023
+
1024
+ "\\colorbox" {BEGIN(ATTRIBUTELIST); return COLORBOX;}
1025
+
1026
+ "\\color" {BEGIN(ATTRIBUTELIST); return COLOR;}
1027
+ "\\bgcolor" {BEGIN(ATTRIBUTELIST); return BGCOLOR;}
1028
+
1029
+ "\\bbox" {BEGIN(BRACKETLIST); return BBOX;}
1030
+
1031
+ "\\displaystyle" {mtex2MML_displaymode=1; mtex2MML_rowposn=2; display_style = 1; return DISPLAY;}
1032
+
1033
+ "\\textstyle" {mtex2MML_displaymode=0; mtex2MML_rowposn=2; display_style = 0; return TEXTSTY;}
1034
+
1035
+ "\\textsize" {display_style = 0; return TEXTSIZE;}
1036
+
1037
+ "\\scriptstyle" {display_style = 0; return SCSTY;}
1038
+
1039
+ "\\scriptsize" {return SCSIZE;}
1040
+
1041
+ "\\scriptscriptstyle" |
1042
+ "\\scriptscriptsize" {return SCSCSIZE;}
1043
+
1044
+ "\\tiny" { return TINY; }
1045
+ "\\Tiny" { return TTINY; }
1046
+ "\\small" { return SMALL; }
1047
+ "\\normalsize" { return NORMALSIZE; }
1048
+ "\\large" { return LARGE; }
1049
+ "\\Large" { return LLARGE; }
1050
+ "\\LARGE" { return LLLARGE; }
1051
+ "\\huge" { return HUGE; }
1052
+ "\\Huge" { return HHUGE; }
1053
+
1054
+ "\\oldstyle" {return OLDSTYLE;}
1055
+
1056
+ "\\moveleft" {return MOVELEFT;}
1057
+
1058
+ "\\moveright" {return MOVERIGHT;}
1059
+
1060
+ "\\raise" { return RAISE;}
1061
+
1062
+ "\\lower" {return LOWER;}
1063
+
1064
+ "\\it" |
1065
+ "\\textit" |
1066
+ "\\mathit" {return ITALICS;}
1067
+
1068
+ "\\sf" |
1069
+ "\\textsf" |
1070
+ "\\mathsf" {return SANS;}
1071
+
1072
+ "\\tt" |
1073
+ "\\texttt" |
1074
+ "\\mathtt" {return TT;}
1075
+
1076
+ "\\boldsymbol" |
1077
+ "\\bf" |
1078
+ "\\textbf" |
1079
+ "\\mathbf" {return BOLD;}
1080
+
1081
+ "\\rm" |
1082
+ "\\textrm" |
1083
+ "\\mathrm" {BEGIN(ROMAN); return RM;}
1084
+
1085
+ "\\scr" |
1086
+ "\\mathscr" {BEGIN(SCRIPT); return SCR;}
1087
+
1088
+ "\\Bbb" |
1089
+ "\\mathbb" {BEGIN(BBOLD); return BB;}
1090
+
1091
+ "\\frak" |
1092
+ "\\mathfrak" |
1093
+ "\\mathfr" {BEGIN(FRAKTUR); return FRAK;}
1094
+
1095
+ "\\pmb" {BEGIN(PMBSTRING); return PMB;}
1096
+
1097
+ "\\not" {return NOT;}
1098
+
1099
+ "\\cancel" |
1100
+ "\\slash" {return SLASHED;}
1101
+
1102
+ "\\bcancel" {return BCANCELED;}
1103
+
1104
+ "\\xcancel" {return XCANCELED;}
1105
+
1106
+ "\\cancelto" {return CANCELEDTO;}
1107
+
1108
+ "\\boxed" {return BOXED;}
1109
+
1110
+ "\\fbox" {return FBOX;}
1111
+ "\\hbox" {return HBOX;}
1112
+ "\\mbox" {return MBOX;}
1113
+
1114
+ "\\mathopen" {return MATHOPEN;}
1115
+ "\\mathclose" {return MATHCLOSE;}
1116
+ "\\mathord" {return MATHORD;}
1117
+ "\\mathpunct" {return MATHPUNCT;}
1118
+
1119
+ "\\vcenter" {return VCENTER;}
1120
+
1121
+ "\\enclose" {BEGIN(ENCLOSEOPTS); return ENCLOSE;}
1122
+
1123
+ "\\cal" |
1124
+ "\\mathcal" {BEGIN(CALLIGRAPHIC); return CAL;}
1125
+
1126
+ "\\begin" {mtex2MML_env_start = 1; BEGIN(MATHENV); return BEGINENV;}
1127
+ "\\end" {BEGIN(MATHENV); return ENDENV;}
1128
+
1129
+ "\\substack" {return SUBSTACK;}
1130
+
1131
+ "\\cases" {return CASES;}
1132
+
1133
+ "\\eqalign" {return EQALIGN;}
1134
+
1135
+ "\\eqalignno" {return EQALIGNNO;}
1136
+
1137
+ "\\array" {return ARRAY;}
1138
+
1139
+ "\\arrayopts" {return ARRAYOPTS;}
1140
+
1141
+ "\\colalign" {BEGIN(ATTRIBUTELIST); return COLALIGN;}
1142
+
1143
+ "\\collayout" {BEGIN(ATTRIBUTELIST); return COLLAYOUT;}
1144
+
1145
+ "\\rowalign" {BEGIN(ATTRIBUTELIST); return ROWALIGN;}
1146
+
1147
+ "\\align" {BEGIN(ATTRIBUTELIST); return ALIGN;}
1148
+
1149
+ "\\equalrows" {BEGIN(ATTRIBUTELIST); return EQROWS;}
1150
+
1151
+ "\\equalcols" {BEGIN(ATTRIBUTELIST); return EQCOLS;}
1152
+
1153
+ "\\rowlines" {BEGIN(ATTRIBUTELIST); return ROWLINES;}
1154
+
1155
+ "\\collines" {BEGIN(ATTRIBUTELIST); return COLLINES;}
1156
+
1157
+ "\\frame" {BEGIN(ATTRIBUTELIST); return FRAME;}
1158
+
1159
+ "\\padding" {BEGIN(ATTRIBUTELIST); return PADDING;}
1160
+
1161
+ "\\rowopts" {return ROWOPTS;}
1162
+
1163
+ "\\cellopts" {return CELLOPTS;}
1164
+
1165
+ "\\rowspan" {BEGIN(ATTRIBUTELIST); return ROWSPAN;}
1166
+
1167
+ "\\colspan" {BEGIN(ATTRIBUTELIST); return COLSPAN;}
1168
+
1169
+
1170
+ "\\," |
1171
+ "\\thinspace" {return THINSPACE;}
1172
+
1173
+ "\\:" |
1174
+ "\\>" |
1175
+ "\\medspace" {return MEDSPACE;}
1176
+
1177
+ "\\;" |
1178
+ "\\thickspace" {return THICKSPACE;}
1179
+
1180
+ "\\quad" {return QUAD;}
1181
+ "\\qquad" {return QQUAD;}
1182
+
1183
+ "\\!" |
1184
+ "\\negspace" |
1185
+ "\\negthinspace" {return NEGSPACE;}
1186
+
1187
+ "\\negmedspace" {return NEGMEDSPACE;}
1188
+
1189
+ "\\negthickspace" {return NEGTHICKSPACE;}
1190
+
1191
+ "\\enspace" { return ENSPACE; }
1192
+
1193
+ "\\hskip" |
1194
+ "\\hspace" |
1195
+ "\\mspace" |
1196
+ "\\kern" |
1197
+ "\\mkern" |
1198
+ "\\mskip" { return HSPACE; }
1199
+
1200
+ "\\space" |
1201
+ "\\nobreakspace" { yylval=mtex2MML_copy_string("&#xA0;"); return MTEXT; }
1202
+
1203
+ "\\strut" {return STRUT;}
1204
+ "\\mathstrut" {return MATHSTRUT;}
1205
+
1206
+ "\\phantom" {return PHANTOM;}
1207
+ "\\vphantom" {return VPHANTOM;}
1208
+ "\\hphantom" {return HPHANTOM;}
1209
+
1210
+ "\\smash" {return SMASH;}
1211
+
1212
+ "\\href" {BEGIN(PLAINTEXT); return HREF;}
1213
+
1214
+ "\\operatorname" {return OPERATORNAME;}
1215
+ "\\mathop" {return MATHOP;}
1216
+
1217
+ "\\mathbin" {BEGIN(PLAINTEXT); return MATHBIN;}
1218
+ "\\mathinner" {BEGIN(PLAINTEXT); return MATHINNER;}
1219
+ "\\mathrel" {BEGIN(PLAINTEXT); return MATHREL;}
1220
+ "\\mtexnum" {BEGIN(PLAINTEXT); return MTEXNUM;}
1221
+
1222
+ "\\Space" { BEGIN(SPACEWIDTH); return SPACECUBE; }
1223
+
1224
+ "\\includegraphics"(\[[^\]]*\])?\{[^}]*\} ;
1225
+
1226
+ "\\"[a-zA-Z]+ {yylval=mtex2MML_copy_string(yytext+1); return MOP;}
1227
+
1228
+ "\&"[a-zA-Z_][a-zA-Z0-9_]*";" |
1229
+ "\&#"[0-9]+";" |
1230
+ "\&#x"[a-fA-F0-9]+";" {yylval=mtex2MML_copy_string(yytext); return MI;}
1231
+
1232
+ "\n" mtex2MML_lineno++;
1233
+ [\r\t ]+ ;
1234
+
1235
+
1236
+ . {return UNKNOWNCHAR;}
1237
+ }
1238
+
1239
+ <ATTRIBUTELIST>"{"[ \t\n\r #a-zA-Z0-9.\-]*"}" {BEGIN(MATH); yylval=mtex2MML_copy_string(yytext); if (yylval != mtex2MML_empty_string) { yylval[0]='"'; yylval[yyleng-1]='"'; } return ATTRLIST;}
1240
+
1241
+ <BRACKETLIST>{
1242
+ "\[" {return ST;}
1243
+ "\]" {BEGIN(MATH); return END;}
1244
+ [0-9\.,]+(em|ex|px|in|cm|mm|mu|pt|pc|%) {char * normalized_px = str_replace(yytext, ",", "."); if (normalized_px[0] == '.') remove_first_char(normalized_px); yylval=mtex2MML_copy_string(normalized_px); mtex2MML_free_string(normalized_px); return PXSTRING; }
1245
+ [0-9a-zA-Z ]+":"[0-9a-zA-Z ]+ {yylval=mtex2MML_copy_string(yytext); return STYLESTRING;}
1246
+ #?[0-9a-zA-Z]+ {yylval=mtex2MML_copy_string(yytext); return COLORSTRING;}
1247
+ [\t\n\r, ]+ ;
1248
+ . {return yytext[0];}
1249
+ }
1250
+
1251
+ <OPTARG>{
1252
+ "[" {if(mtex2MML_optarg_ind < mtex2MML_optarg_depth - 1 && mtex2MML_inoptarg[mtex2MML_optarg_ind] !=1 ){mtex2MML_optarg_ind++; mtex2MML_inoptarg[mtex2MML_optarg_ind]=1;}; BEGIN(MATH); return OPTARGOPEN;}
1253
+ [\n\r\t ]+ ;
1254
+ . {mtex2MML_eqn_src[mtex2MML_eqn_end-mtex2MML_eqn_src]=0; --mtex2MML_eqn_end; BEGIN(MATH); unput(yytext[0]);}
1255
+ }
1256
+
1257
+ <RAISEBOX1>{
1258
+ \{[\n\r\t ]*- {BEGIN(RAISEBOX2); return NEG;}
1259
+ \{[\n\r\t ]* {BEGIN(RAISEBOX2);}
1260
+ }
1261
+
1262
+ <RAISEBOX2>{
1263
+ [^\}]*?\} {yylval=mtex2MML_copy_string(yytext); if ((yyleng > 1) && (yylval != mtex2MML_empty_string)) yylval[yyleng-1]='\0'; BEGIN(TEXTOPTARG1); return TEXTSTRING;}
1264
+ }
1265
+
1266
+
1267
+ <TEXTOPTARG1>{
1268
+ \[[^\]]*?\] {yylval=mtex2MML_copy_string(yytext+1); if ((yyleng > 1) && (yylval != mtex2MML_empty_string)) yylval[yyleng-2]='\0'; BEGIN(TEXTOPTARG); return TEXTSTRING;}
1269
+ . {mtex2MML_eqn_src[mtex2MML_eqn_end-mtex2MML_eqn_src]=0; --mtex2MML_eqn_end; BEGIN(MATH); unput(yytext[0]);}
1270
+ }
1271
+
1272
+ <TEXTOPTARG>{
1273
+ \[[^\]]*?\] {yylval=mtex2MML_copy_string(yytext+1); if ((yyleng > 1) && (yylval != mtex2MML_empty_string)) yylval[yyleng-2]='\0'; BEGIN(MATH); return TEXTSTRING;}
1274
+ . {mtex2MML_eqn_src[mtex2MML_eqn_end-mtex2MML_eqn_src]=0; --mtex2MML_eqn_end; BEGIN(MATH); unput(yytext[0]);}
1275
+ }
1276
+
1277
+ <MATHENV>{
1278
+ "\{equation\}" { BEGIN(MATH); return EQUATION;}
1279
+ "\{equation*\}" { BEGIN(MATH); return EQUATION_STAR;}
1280
+ "\{matrix\}" {BEGIN(MATH); return MATRIX;}
1281
+ "\{pmatrix\}" {BEGIN(MATH); return PMATRIX;}
1282
+ "\{bmatrix\}" {BEGIN(MATH); return BMATRIX;}
1283
+ "\{Bmatrix\}" {BEGIN(MATH); return BBMATRIX;}
1284
+ "\{vmatrix\}" {BEGIN(MATH); return VMATRIX;}
1285
+ "\{Vmatrix\}" {BEGIN(MATH); return VVMATRIX;}
1286
+ "\{smallmatrix\}" {BEGIN(MATH); return SMALLMATRIX;}
1287
+ "\{cases\}" {BEGIN(MATH); return CASES;}
1288
+ "\{aligned\}[" {BEGIN(ENVOPTIONS); return ALIGNED;}
1289
+ "\{aligned\}" {BEGIN(MATH); return ALIGNED;}
1290
+ "\{align\}" {BEGIN(MATH); return ALIGNENV;}
1291
+ "\{align*\}" {BEGIN(MATH); return ALIGNENV_STAR;}
1292
+ "\{alignat\}" {if (mtex2MML_env_start == 1) BEGIN(ALIGNATOPTS); else BEGIN(MATH); return ALIGNAT;}
1293
+ "\{alignat*\}" {if (mtex2MML_env_start == 1) BEGIN(ALIGNATOPTS); else BEGIN(MATH); return ALIGNAT_STAR;}
1294
+ "\{alignedat\}" {if (mtex2MML_env_start == 1) BEGIN(ALIGNATOPTS); else BEGIN(MATH); return ALIGNEDAT;}
1295
+ "\{eqnarray*\}" {BEGIN(MATH); return EQNARRAY_STAR;}
1296
+ "\{eqnarray\}" {BEGIN(MATH); return EQNARRAY;}
1297
+ "\{gather\}" {BEGIN(MATH); return GATHER;}
1298
+ "\{gather*\}" {BEGIN(MATH); return GATHER_STAR;}
1299
+ "\{gathered\}[" {BEGIN(ENVOPTIONS); return GATHERED;}
1300
+ "\{gathered\}" {BEGIN(MATH); return GATHERED;}
1301
+ "\{multline*\}" {BEGIN(MATH); return MULTLINE_STAR;}
1302
+ "\{multline\}" {BEGIN(MATH); return MULTLINE;}
1303
+ "\{split\}" {BEGIN(MATH); return ALIGNED;}
1304
+ "\{array\}" {if (mtex2MML_env_start == 1) BEGIN(ARRAYOPTIONS); else BEGIN(MATH); return ARRAY;}
1305
+ "\{subarray\}" {if (mtex2MML_env_start == 1) BEGIN(ARRAYOPTIONS); else BEGIN(MATH); return SUBARRAY;}
1306
+ "\{svg\}" {mtex2MML_env_start = 0; BEGIN(SVGENV); return SVG;}
1307
+ }
1308
+
1309
+ <ARRAYOPTIONS>{
1310
+ "[t]" {yylval=mtex2MML_copy_string("axis 1"); return ARRAYALIGN;}
1311
+ "[c]" {yylval=mtex2MML_copy_string("center"); return ARRAYALIGN;}
1312
+ "[b]" {yylval=mtex2MML_copy_string("axis -1"); return ARRAYALIGN;}
1313
+ "\{" {BEGIN(COLOPTS); return ST;}
1314
+ [\t\n\r ]+ ;
1315
+ }
1316
+
1317
+ <ALIGNATOPTS>{
1318
+ "\{" { /* Ignore */ }
1319
+ [0-9]+ {yylval=mtex2MML_copy_string(yytext); return ALIGNATVALUE;}
1320
+ "\}" {mtex2MML_env_start = 0; BEGIN(MATH); return END;}
1321
+ [\t\n\r ]+ ;
1322
+ }
1323
+
1324
+ <ENVOPTIONS>{
1325
+ "t" {yylval=mtex2MML_copy_string("baseline 1"); return ARRAYALIGN;}
1326
+ "c" {yylval=mtex2MML_copy_string("center"); return ARRAYALIGN;}
1327
+ "b" {yylval=mtex2MML_copy_string("baseline -1"); return ARRAYALIGN;}
1328
+ "]" {mtex2MML_env_start = 0; BEGIN(MATH); return END; }
1329
+ [\t\n\r ]+ ;
1330
+ }
1331
+
1332
+ <COLOPTS>{
1333
+ "\}" {mtex2MML_env_start = 0; BEGIN(MATH); return END;}
1334
+ "c" {yylval=mtex2MML_copy_string("center"); return COLUMNALIGN;}
1335
+ "l" {yylval=mtex2MML_copy_string("left"); return COLUMNALIGN;}
1336
+ "r" {yylval=mtex2MML_copy_string("right"); return COLUMNALIGN;}
1337
+ "|" {yylval=mtex2MML_copy_string("s"); return COLUMNALIGN;}
1338
+ ":" {yylval=mtex2MML_copy_string("d"); return COLUMNALIGN;}
1339
+ [\t\n\r ]+ ;
1340
+ }
1341
+
1342
+ <SVGENV>{
1343
+ "\\end\{svg" {mtex2MML_do_capture_eqn(); yylval=mtex2MML_copy_string(yytext); yylval[yyleng-8]=0; BEGIN(SVGEND); return XMLSTRING;}
1344
+ (.|\n) {yymore();}
1345
+ }
1346
+
1347
+ <SVGEND>{
1348
+ "\}" {BEGIN(MATH); return ENDSVG;}
1349
+ }
1350
+
1351
+ <ROMAN>{
1352
+ "\{" {mtex2MML_variant_start = 1; return ST;}
1353
+ "\}" {mtex2MML_variant_start = 0; BEGIN(MATH); return END;}
1354
+ [a-zA-Z]+ {yylval=mtex2MML_copy_string(yytext); if (mtex2MML_variant_start == 0) BEGIN(MATH); return RMCHAR;}
1355
+ [\t\n\r ]+ ;
1356
+ . {return yytext[0];}
1357
+ }
1358
+
1359
+ <SCRIPT>{
1360
+ "\{" {mtex2MML_variant_start = 1; return ST;}
1361
+ "\}" {mtex2MML_variant_start = 0; BEGIN(MATH); return END;}
1362
+ [a-zA-Z]+ {yylval=mtex2MML_copy_string(yytext); if (mtex2MML_variant_start == 0) BEGIN(MATH); return SCRCHAR;}
1363
+ [\t\n\r ]+ ;
1364
+ . {return yytext[0];}
1365
+ }
1366
+
1367
+ <PMBSTRING>{
1368
+ "\{" {mtex2MML_variant_start = 1; return ST;}
1369
+ "\}" {mtex2MML_variant_start = 0; BEGIN(MATH); return END;}
1370
+ [a-zA-Z]+ {yylval=mtex2MML_copy_string(yytext); if (mtex2MML_variant_start == 0) BEGIN(MATH); return PMBCHAR;}
1371
+ [\t\n\r ]+ ;
1372
+ . {return yytext[0];}
1373
+ }
1374
+
1375
+ <BBOLD>{
1376
+ "\{" {mtex2MML_variant_start = 1; return ST;}
1377
+ "\}" {mtex2MML_variant_start = 0; BEGIN(MATH); return END;}
1378
+ [a-z]+ {yylval=mtex2MML_copy_string(yytext); if (mtex2MML_variant_start == 0) BEGIN(MATH); return BBLOWERCHAR;}
1379
+ [A-Z]+ {yylval=mtex2MML_copy_string(yytext); if (mtex2MML_variant_start == 0) BEGIN(MATH); return BBUPPERCHAR;}
1380
+ [0-9] {yylval=mtex2MML_copy_string(yytext); if (mtex2MML_variant_start == 0) BEGIN(MATH); return BBDIGIT;}
1381
+ [\t\n\r ]+ ;
1382
+ . {return yytext[0];}
1383
+ }
1384
+
1385
+ <CALLIGRAPHIC>{
1386
+ "\{" {mtex2MML_variant_start = 1; return ST;}
1387
+ "\}" {mtex2MML_variant_start = 0; BEGIN(MATH); return END;}
1388
+ [a-zA-Z]+ {yylval=mtex2MML_copy_string(yytext); if (mtex2MML_variant_start == 0) BEGIN(MATH); return CALCHAR;}
1389
+ [\t\n\r ]+ ;
1390
+ . {return yytext[0];}
1391
+ }
1392
+
1393
+ <FRAKTUR>{
1394
+ "\{" {mtex2MML_variant_start = 1; return ST;}
1395
+ "\}" {mtex2MML_variant_start = 0; BEGIN(MATH); return END;}
1396
+ [a-zA-Z]+ {yylval=mtex2MML_copy_string(yytext); if (mtex2MML_variant_start == 0) BEGIN(MATH); return FRAKCHAR;}
1397
+ [\t\n\r ]+ ;
1398
+ . {return yytext[0];}
1399
+ }
1400
+
1401
+ <PLAINTEXT>{
1402
+ "\{" {yylval=mtex2MML_copy_string_extra("", 1); BEGIN(PLAINTEXT_CURLY);}
1403
+ . {yylval=mtex2MML_copy_string(yytext); if (mtex2MML_variant_start == 0) BEGIN(MATH); return TEXTSTRING;}
1404
+ [\t\n\r ]+ ;
1405
+ }
1406
+
1407
+ <PLAINTEXT_CURLY>{
1408
+ \\. {char *s = mtex2MML_copy_string(yylval); mtex2MML_free_string(yylval); yylval = mtex2MML_copy2(s, yytext+1); mtex2MML_free_string(s); }
1409
+ "\}" {BEGIN(MATH); return TEXTSTRING;}
1410
+ . {char *s = mtex2MML_copy_string(yylval); mtex2MML_free_string(yylval); yylval=mtex2MML_copy2(s, yytext); mtex2MML_free_string(s);}
1411
+ }
1412
+
1413
+ <VERBTEXT>{
1414
+ . { if (yytext[0] != mtex2MML_verbdelim) { char *s = mtex2MML_copy_string(mtex2MML_str); mtex2MML_free_string(mtex2MML_str); mtex2MML_str=mtex2MML_copy2(s, yytext); mtex2MML_free_string(s); } else { yylval=mtex2MML_copy_string(mtex2MML_str); mtex2MML_free_string(mtex2MML_str); BEGIN(MATH); return VERBSTRING; } }
1415
+ }
1416
+
1417
+ <NUM>{
1418
+ "\{" {return ST;}
1419
+ "\}" {BEGIN(MATH); return END;}
1420
+ -?[.0-9]+ {yylval=mtex2MML_copy_string(yytext); return NUMBER;}
1421
+ [\t\n\r ]+ ;
1422
+ }
1423
+
1424
+ <INT1>{
1425
+ "\{" {return ST;}
1426
+ "\}" {BEGIN(INT2); return END;}
1427
+ [0-9]+ {yylval=mtex2MML_copy_string_extra(yytext, 1); if (yyleng && (yylval != mtex2MML_empty_string)) { yylval[yyleng]=yylval[yyleng-1]; yylval[yyleng-1]='.'; yylval[yyleng+1]='\0'; } return INTONE;}
1428
+ [\t\n\r ]+ ;
1429
+ . {return yytext[0];}
1430
+ }
1431
+
1432
+ <INT2>{
1433
+ "\{" {return ST;}
1434
+ "\}" {BEGIN(INT3); return END;}
1435
+ [0-9]+ {yylval=mtex2MML_copy_string_extra(yytext, 1); if (yyleng && (yylval != mtex2MML_empty_string)) { yylval[yyleng]=yylval[yyleng-1]; yylval[yyleng-1]='.'; yylval[yyleng+1]='\0'; } return INTTWO;}
1436
+ [\t\n\r ]+ ;
1437
+ . {return yytext[0];}
1438
+ }
1439
+
1440
+ <INT3>{
1441
+ "\{" {return ST;}
1442
+ "\}" {BEGIN(MATH); return END;}
1443
+ [0-9]+ {yylval=mtex2MML_copy_string_extra(yytext, 1); if (yyleng && (yylval != mtex2MML_empty_string)) { yylval[yyleng]=yylval[yyleng-1]; yylval[yyleng-1]='.'; yylval[yyleng+1]='\0'; } return INTTHREE;}
1444
+ [\t\n\r ]+ ;
1445
+ . {return yytext[0];}
1446
+ }
1447
+
1448
+ <ENCLOSEOPTS>{
1449
+ "\}\{" {BEGIN(ENCLOSETEXTPARSE); return ST;}
1450
+ "\}\[" {BEGIN(ENCLOSEATTRPARSE); return ST;}
1451
+ "\{" {return ST;}
1452
+ [a-zA-Z,]+ {yylval=mtex2MML_copy_string(yytext); return ENCLOSENOTATION;}
1453
+ [\t\n\r ]+ ;
1454
+ }
1455
+
1456
+ <ENCLOSEATTRPARSE>{
1457
+ "\]\{" {BEGIN(ENCLOSETEXTPARSE); return ST;}
1458
+ [a-zA-Z,=0-9]+ {yylval=mtex2MML_copy_string(yytext); return ENCLOSEATTR;}
1459
+ [\t\n\r ]+ ;
1460
+ }
1461
+
1462
+ <ENCLOSETEXTPARSE>{
1463
+ "\}" {BEGIN(MATH); return ST;}
1464
+ [a-zA-Z]+ {yylval=mtex2MML_copy_string(yytext); return ENCLOSETEXT;}
1465
+ [\t\n\r ]+ ;
1466
+ }
1467
+
1468
+ <SPACEWIDTH>{
1469
+ "\{" { return ST;}
1470
+ [0-9\.,]+(em|ex|px|in|cm|mm|mu|pt|pc|%) {char * normalized_px = str_replace(yytext, ",", "."); yylval=mtex2MML_copy_string(normalized_px); mtex2MML_free_string(normalized_px); return PXSTRING; }
1471
+ "\}" {BEGIN(SPACEHEIGHT); return ST;}
1472
+ [\t\n\r ]+ ;
1473
+ }
1474
+
1475
+ <SPACEHEIGHT>{
1476
+ "\{" { return ST;}
1477
+ [0-9\.,]+(em|ex|px|in|cm|mm|mu|pt|pc|%) {char * normalized_px = str_replace(yytext, ",", "."); yylval=mtex2MML_copy_string(normalized_px); mtex2MML_free_string(normalized_px); return PXSTRING; }
1478
+ "\}" {BEGIN(SPACEDEPTH); return ST;}
1479
+ [\t\n\r ]+ ;
1480
+ }
1481
+
1482
+ <SPACEDEPTH>{
1483
+ "\{" { return ST;}
1484
+ [0-9\.,]+(em|ex|px|in|cm|mm|mu|pt|pc|%) {char * normalized_px = str_replace(yytext, ",", "."); yylval=mtex2MML_copy_string(normalized_px); mtex2MML_free_string(normalized_px); return PXSTRING; }
1485
+ "\}" {BEGIN(MATH); return ST;}
1486
+ [\t\n\r ]+ ;
1487
+ }
1488
+
1489
+ %%
1490
+
1491
+ void mtex2MML_restart ()
1492
+ {
1493
+ BEGIN(INITIAL);
1494
+ }
1495
+
1496
+ static const char * s_mtex2MML_buffer = 0;
1497
+ static unsigned long s_mtex2MML_length = 0;
1498
+
1499
+ void mtex2MML_setup (const char * buffer, unsigned long length)
1500
+ {
1501
+ yy_flush_buffer( YY_CURRENT_BUFFER );
1502
+
1503
+ s_mtex2MML_buffer = buffer;
1504
+ s_mtex2MML_length = length;
1505
+ }
1506
+
1507
+ int mtex2MML_capture_eqn_src()
1508
+ {
1509
+ if (YY_START != INITIAL && YY_START != SVGENV)
1510
+ return mtex2MML_do_capture_eqn();
1511
+
1512
+ return -1;
1513
+ }
1514
+
1515
+ int mtex2MML_do_capture_eqn()
1516
+ {
1517
+ if (mtex2MML_eqn_bufsize - (mtex2MML_eqn_end-mtex2MML_eqn_src+yyleng) > 1)
1518
+ {
1519
+ strcpy(mtex2MML_eqn_end, yytext);
1520
+ mtex2MML_eqn_end += yyleng;
1521
+ return 0;
1522
+ }
1523
+
1524
+ return -1;
1525
+ }
1526
+
1527
+ static int s_mtex2MML_read (char * buffer, int max_size)
1528
+ {
1529
+ int result = 0;
1530
+
1531
+ if ((unsigned long) max_size < s_mtex2MML_length)
1532
+ {
1533
+ result = max_size;
1534
+
1535
+ memcpy (buffer, s_mtex2MML_buffer, max_size);
1536
+
1537
+ s_mtex2MML_buffer += max_size;
1538
+ s_mtex2MML_length -= max_size;
1539
+ }
1540
+ else
1541
+ {
1542
+ result = s_mtex2MML_length;
1543
+
1544
+ memcpy (buffer, s_mtex2MML_buffer, s_mtex2MML_length);
1545
+
1546
+ s_mtex2MML_buffer = 0;
1547
+ s_mtex2MML_length = 0;
1548
+ }
1549
+ return result;
1550
+ }