📄 itex2mml.y
字号:
thinspace: THINSPACE {(char *)$$=malloc(34); sprintf((char *)$$, "<mspace width=\"thinmathspace\"/>");};medspace: MEDSPACE {(char *)$$=malloc(36); sprintf((char *)$$, "<mspace width=\"mediummathspace\"/>");};thickspace: THICKSPACE {(char *)$$=malloc(36); sprintf((char *)$$, "<mspace width=\"thickmathspace\"/>");};quad: QUAD {(char *)$$=malloc(38); sprintf((char *)$$, "<mspace width=\"verythickmathspace\"/>");};negspace: NEGSPACE {(char *)$$=malloc(30); sprintf((char *)$$, "<mspace width=\"-0.1667 em\"/>");};phantom: PHANTOM closedTerm{(char *)$$=malloc(strlen((char *)$2)+22); sprintf((char *)$$,"<mphantom>%s</mphantom>",strdup((char *)$2));};href: HREF TEXTSTRING closedTerm{(char *)$$=malloc(strlen((char *)$2)+strlen((char *)$3)+70); sprintf((char *)$$,"<mrow xlink:type=\"simple\" xlink:show=\"replace\" xlink:href=\"%s\">%s</mrow>",strdup((char *)$2),strdup((char *)$3));};tensor: TENSOR closedTerm MROWOPEN subsupList MROWCLOSE{(char *)$$=malloc(strlen((char *)$2)+strlen((char *)$4)+32); sprintf((char *)$$,"<mmultiscripts>%s%s</mmultiscripts>",strdup((char *)$2),strdup((char *)$4));}| TENSOR closedTerm subsupList MROWCLOSE{(char *)$$=malloc(strlen((char *)$2)+strlen((char *)$3)+32); sprintf((char *)$$,"<mmultiscripts>%s%s</mmultiscripts>",strdup((char *)$2),strdup((char *)$3));}| TENSOR closedTerm subsupList {(char *)$$=malloc(strlen((char *)$2)+strlen((char *)$3)+32); sprintf((char *)$$,"<mmultiscripts>%s%s</mmultiscripts>",strdup((char *)$2),strdup((char *)$3));};multi: MULTI MROWOPEN subsupList MROWCLOSE closedTerm MROWOPEN subsupList MROWCLOSE{(char *)$$=malloc(strlen((char *)$3)+strlen((char *)$5)+strlen((char *)$7)+48); sprintf((char *)$$,"<mmultiscripts>%s%s<mprescripts/>%s</mmultiscripts>",strdup((char *)$5),strdup((char *)$7),strdup((char *)$3));};subsupList: subsupTerm {sprintf((char *)$$, "%s", strdup((char *)$1));} | subsupList subsupTerm {sprintf((char *)$$, "%s %s", strdup((char *)$1), strdup((char *)$2));};subsupTerm: SUB closedTerm SUP closedTerm {(char *)$$=malloc(strlen((char *)$2)+strlen((char *)$4)+2); sprintf((char *)$$,"%s %s",strdup((char *)$2),strdup((char *)$4));}|SUB closedTerm {(char *)$$=malloc(strlen((char *)$2)+10); sprintf((char *)$$,"%s <none/>",strdup((char *)$2));}|SUP closedTerm {(char *)$$=malloc(strlen((char *)$2)+10); sprintf((char *)$$,"<none/> %s",strdup((char *)$2));};mfrac: FRAC closedTerm closedTerm{(char *)$$=malloc(strlen((char *)$2)+strlen((char *)$3)+20); sprintf((char *)$$,"<mfrac>%s%s</mfrac>",strdup((char *)$2),strdup((char *)$3));};binom: BINOM closedTerm closedTerm{(char *)$$=malloc(strlen((char *)$2)+strlen((char *)$3)+35); sprintf((char *)$$,"<mfrac linethickness=\"0\">%s%s</mfrac>",strdup((char *)$2),strdup((char *)$3));};munderbrace: UNDERBRACE closedTerm{(char *)$$=malloc(strlen((char *)$2)+38); sprintf((char *)$$,"<munder>%s<mo>⏟</mo></munder>",strdup((char *)$2));};moverbrace: OVERBRACE closedTerm{(char *)$$=malloc(strlen((char *)$2)+36); sprintf((char *)$$,"<mover>%s<mo>⏞</mo></mover>",strdup((char *)$2));};bar: BAR closedTerm{(char *)$$=malloc(strlen((char *)$2)+36); sprintf((char *)$$,"<mover>%s<mo>‾</mo></mover>",strdup((char *)$2));};vec: VEC closedTerm{(char *)$$=malloc(strlen((char *)$2)+36); sprintf((char *)$$,"<mover>%s<mo>⇀</mo></mover>",strdup((char *)$2));};dot: DOT closedTerm{(char *)$$=malloc(strlen((char *)$2)+36); sprintf((char *)$$,"<mover>%s<mo>˙</mo></mover>",strdup((char *)$2));};ddot: DDOT closedTerm{(char *)$$=malloc(strlen((char *)$2)+36); sprintf((char *)$$,"<mover>%s<mo>¨</mo></mover>",strdup((char *)$2));};tilde: TILDE closedTerm{(char *)$$=malloc(strlen((char *)$2)+36); sprintf((char *)$$,"<mover>%s<mo>˜</mo></mover>",strdup((char *)$2));};check: CHECK closedTerm{(char *)$$=malloc(strlen((char *)$2)+36); sprintf((char *)$$,"<mover>%s<mo>¯</mo></mover>",strdup((char *)$2));};hat: HAT closedTerm{(char *)$$=malloc(strlen((char *)$2)+36); sprintf((char *)$$,"<mover>%s<mo>^</mo></mover>",strdup((char *)$2));};msqrt: SQRT closedTerm{(char *)$$=malloc(strlen((char *)$2)+20); sprintf((char *)$$,"<msqrt>%s</msqrt>",strdup((char *)$2));};mroot: ROOT closedTerm closedTerm{(char *)$$=malloc(strlen((char *)$2)+strlen((char *)$3)+20); sprintf((char *)$$,"<mroot>%s%s</mroot>",strdup((char *)$3),strdup((char *)$2));};munder: UNDER closedTerm closedTerm{(char *)$$=malloc(strlen((char *)$2)+strlen((char *)$3)+22); sprintf((char *)$$,"<munder>%s%s</munder>",strdup((char *)$3),strdup((char *)$2));};mover: OVER closedTerm closedTerm{(char *)$$=malloc(strlen((char *)$2)+strlen((char *)$3)+20); sprintf((char *)$$,"<mover>%s%s</mover>",strdup((char *)$3),strdup((char *)$2));};munderover: UNDEROVER closedTerm closedTerm closedTerm{(char *)$$=malloc(strlen((char *)$2)+strlen((char *)$3)+strlen((char *)$4)+26); sprintf((char *)$$,"<munderover>%s%s%s</munderover>",strdup((char *)$4),strdup((char *)$2),strdup((char *)$3));};array: ARRAY MROWOPEN tableRowList MROWCLOSE{(char *)$$=malloc(strlen((char *)$3)+28); sprintf((char *)$$,"<mrow><mtable>%s</mtable></mrow>",strdup((char *)$3));}| ARRAY MROWOPEN ARRAYOPTS MROWOPEN arrayopts MROWCLOSE tableRowList MROWCLOSE{(char *)$$=malloc(strlen((char *)$5)+strlen((char *)$7)+30); sprintf((char *)$$,"<mrow><mtable %s>%s</mtable></mrow>",strdup((char *)$5),strdup((char *)$7));};arrayopts: anarrayopt {(char *)$$=malloc(strlen((char *)$1)); sprintf((char *)$$,"%s",strdup((char *)$1));};|arrayopts anarrayopt{(char *)$$=malloc(strlen((char *)$1)+strlen((char *)$2)+2);sprintf((char *)$$,"%s %s",strdup((char *)$1),strdup((char *)$2));};anarrayopt:collayout {(char *)$$=malloc(strlen((char *)$1)); sprintf((char *)$$,"%s",strdup((char *)$1));}| colalign {(char *)$$=malloc(strlen((char *)$1)); sprintf((char *)$$,"%s",strdup((char *)$1));}| rowalign {(char *)$$=malloc(strlen((char *)$1)); sprintf((char *)$$,"%s",strdup((char *)$1));}| align {(char *)$$=malloc(strlen((char *)$1)); sprintf((char *)$$,"%s",strdup((char *)$1));}| eqrows {(char *)$$=malloc(strlen((char *)$1)); sprintf((char *)$$,"%s",strdup((char *)$1));}| eqcols {(char *)$$=malloc(strlen((char *)$1)); sprintf((char *)$$,"%s",strdup((char *)$1));}| rowlines {(char *)$$=malloc(strlen((char *)$1)); sprintf((char *)$$,"%s",strdup((char *)$1));}| collines {(char *)$$=malloc(strlen((char *)$1)); sprintf((char *)$$,"%s",strdup((char *)$1));}| frame {(char *)$$=malloc(strlen((char *)$1)); sprintf((char *)$$,"%s",strdup((char *)$1));}| padding {(char *)$$=malloc(strlen((char *)$1)); sprintf((char *)$$,"%s",strdup((char *)$1));};collayout: COLLAYOUT ATTRLIST {(char *)$$=malloc(strlen((char *)$1)+14); sprintf((char *)$$,"columnalign=%s",strdup((char *)$2));};colalign: COLALIGN ATTRLIST {(char *)$$=malloc(strlen((char *)$1)+14); sprintf((char *)$$,"columnalign=%s",strdup((char *)$2));};rowalign: ROWALIGN ATTRLIST {(char *)$$=malloc(strlen((char *)$1)+10); sprintf((char *)$$,"rowalign=%s",strdup((char *)$2));};align: ALIGN ATTRLIST {(char *)$$=malloc(strlen((char *)$1)+10); sprintf((char *)$$,"align=%s",strdup((char *)$2));};eqrows: EQROWS ATTRLIST {(char *)$$=malloc(strlen((char *)$1)+12); sprintf((char *)$$,"equalrows=%s",strdup((char *)$2));};eqcols: EQCOLS ATTRLIST {(char *)$$=malloc(strlen((char *)$1)+14); sprintf((char *)$$,"equalcolumns=%s",strdup((char *)$2));};rowlines: ROWLINES ATTRLIST {(char *)$$=malloc(strlen((char *)$1)+14); sprintf((char *)$$,"rowlines=%s",strdup((char *)$2));};collines: COLLINES ATTRLIST {(char *)$$=malloc(strlen((char *)$1)+14); sprintf((char *)$$,"columnlines=%s",strdup((char *)$2));};frame: FRAME ATTRLIST {(char *)$$=malloc(strlen((char *)$1)+14); sprintf((char *)$$,"frame=%s",strdup((char *)$2));};padding: PADDING ATTRLIST {(char *)$$=malloc(strlen((char *)$1)+28); sprintf((char *)$$,"rowspacing=%s columnspacing=%s",strdup((char *)$2),strdup((char *)$2));};tableRowList: tableRow {(char *)$$=malloc(strlen((char *)$1)); sprintf((char *)$$,"%s",strdup((char *)$1));}| tableRowList ROWSEP tableRow {(char *)$$=malloc(strlen((char *)$1)+strlen((char *)$3)); sprintf((char *)$$,"%s %s",strdup((char *)$1), strdup((char *)$3));};tableRow: simpleTableRow {(char *)$$=malloc(strlen((char *)$1)+12); sprintf((char *)$$,"<mtr>%s</mtr>",strdup((char *)$1));}| optsTableRow {(char *)$$=malloc(strlen((char *)$1)); sprintf((char *)$$,"%s",strdup((char *)$1));};simpleTableRow: tableCell {(char *)$$=malloc(strlen((char *)$1)); sprintf((char *)$$,"%s",strdup((char *)$1));}| simpleTableRow COLSEP tableCell {(char *)$$=malloc(strlen((char *)$1)+strlen((char *)$3)+2); sprintf((char *)$$,"%s %s",strdup((char *)$1), strdup((char *)$3));};optsTableRow: ROWOPTS MROWOPEN rowopts MROWCLOSE simpleTableRow {(char *)$$=malloc(strlen((char *)$3)+strlen((char *)$5)+14); sprintf((char *)$$,"<mtr %s>%s</mtr>",strdup((char *)$3),strdup((char *)$5));};rowopts: arowopt {(char *)$$=malloc(strlen((char *)$1)); sprintf((char *)$$,"%s",strdup((char *)$1));}|rowopts arowopt{(char *)$$=malloc(strlen((char *)$1)+strlen((char *)$2)+2);sprintf((char *)$$,"%s %s",strdup((char *)$1),strdup((char *)$2));};arowopt:colalign {(char *)$$=malloc(strlen((char *)$1)); sprintf((char *)$$,"%s",strdup((char *)$1));}| rowalign {(char *)$$=malloc(strlen((char *)$1)); sprintf((char *)$$,"%s",strdup((char *)$1));};tableCell: {(char *)$$=malloc(20); sprintf((char *)$$,"<mtd> </mtd>");}| compoundTermList {(char *)$$=malloc(strlen((char *)$1)+12); sprintf((char *)$$,"<mtd>%s</mtd>",strdup((char *)$1));}| CELLOPTS MROWOPEN cellopts MROWCLOSE compoundTermList{(char *)$$=malloc(strlen((char *)$3)+strlen((char *)$5)+14); sprintf((char *)$$,"<mtd %s>%s</mtd>",strdup((char *)$3),strdup((char *)$5));};cellopts: acellopt {(char *)$$=malloc(strlen((char *)$1)); sprintf((char *)$$,"%s",strdup((char *)$1));}|cellopts acellopt{(char *)$$=malloc(strlen((char *)$1)+strlen((char *)$2)+2);sprintf((char *)$$,"%s %s",strdup((char *)$1),strdup((char *)$2));};acellopt:colalign {(char *)$$=malloc(strlen((char *)$1)); sprintf((char *)$$,"%s",strdup((char *)$1));}| rowalign {(char *)$$=malloc(strlen((char *)$1)); sprintf((char *)$$,"%s",strdup((char *)$1));}| rowspan {(char *)$$=malloc(strlen((char *)$1)); sprintf((char *)$$,"%s",strdup((char *)$1));}| colspan {(char *)$$=malloc(strlen((char *)$1)); sprintf((char *)$$,"%s",strdup((char *)$1));};rowspan: ROWSPAN ATTRLIST {(char *)$$=malloc(strlen((char *)$1)+10); sprintf((char *)$$,"rowspan=%s",strdup((char *)$2));};colspan: COLSPAN ATTRLIST {(char *)$$=malloc(strlen((char *)$1)+10); sprintf((char *)$$,"colspan=%s",strdup((char *)$2));};%%main(){ yyparse();}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -