mathematical 1.2.1 → 1.2.2

Sign up to get free protection for your applications and to get access to all the features.
@@ -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
+ }