parser.mly
来自「php 开发的内容管理系统」· MLY 代码 · 共 104 行
MLY
104 行
%{ open Tex open Render_info let sq_close_ri = HTMLABLEC(FONT_UFH,"]", "]")%}%token <Render_info.t> LITERAL DELIMITER%token <string> FUN_AR2 FUN_INFIX FUN_AR1 DECL FUN_AR1opt BIG%token <string*string> BOX%token <string*(string*string)> FUN_AR1hl%token <string*Render_info.font_force> FUN_AR1hf DECLh%token <string*(Tex.t->Tex.t->string*string*string)> FUN_AR2h%token <string*(Tex.t list->Tex.t list->string*string*string)> FUN_INFIXh%token EOF CURLY_OPEN CURLY_CLOSE SUB SUP SQ_CLOSE NEXT_CELL NEXT_ROW%token BEGIN__MATRIX BEGIN_PMATRIX BEGIN_BMATRIX BEGIN_BBMATRIX BEGIN_VMATRIX BEGIN_VVMATRIX BEGIN_CASES%token END__MATRIX END_PMATRIX END_BMATRIX END_BBMATRIX END_VMATRIX END_VVMATRIX END_CASES%token LEFT RIGHT%type <Tex.t list> tex_expr%start tex_expr%%tex_expr: expr EOF { $1 } | ne_expr FUN_INFIX ne_expr EOF { [TEX_INFIX($2,$1,$3)] } | ne_expr FUN_INFIXh ne_expr EOF { let t,h=$2 in [TEX_INFIXh(t,h,$1,$3)] }expr: /* */ { [] } | ne_expr { $1 }ne_expr: lit_aq expr { $1 :: $2 } | litsq_aq expr { $1 :: $2 } | DECLh expr { let t,h = $1 in [TEX_DECLh(t,h,$2)] }litsq_aq: litsq_zq { $1 } | litsq_dq { let base,downi = $1 in TEX_DQ(base,downi) } | litsq_uq { let base,upi = $1 in TEX_UQ(base,upi)} | litsq_fq { $1 }litsq_fq: litsq_dq SUP lit { let base,downi = $1 in TEX_FQ(base,downi,$3) } | litsq_uq SUB lit { let base,upi = $1 in TEX_FQ(base,$3,upi) }litsq_uq: litsq_zq SUP lit { $1,$3 }litsq_dq: litsq_zq SUB lit { $1,$3 }litsq_zq: | SQ_CLOSE { TEX_LITERAL sq_close_ri }expr_nosqc: /* */ { [] } | lit_aq expr_nosqc { $1 :: $2 }lit_aq: lit { $1 } | lit_dq { let base,downi = $1 in TEX_DQ(base,downi) } | lit_uq { let base,upi = $1 in TEX_UQ(base,upi)} | lit_fq { $1 }lit_fq: lit_dq SUP lit { let base,downi = $1 in TEX_FQ(base,downi,$3) } | lit_uq SUB lit { let base,upi = $1 in TEX_FQ(base,$3,upi) }lit_uq: lit SUP lit { $1,$3 }lit_dq: lit SUB lit { $1,$3 }left: LEFT DELIMITER { $2 } | LEFT SQ_CLOSE { sq_close_ri }right: RIGHT DELIMITER { $2 } | RIGHT SQ_CLOSE { sq_close_ri }lit: LITERAL { TEX_LITERAL $1 } | DELIMITER { TEX_LITERAL $1 } | BIG DELIMITER { TEX_BIG ($1,$2) } | BIG SQ_CLOSE { TEX_BIG ($1,sq_close_ri) } | left expr right { TEX_LR ($1,$3,$2) } | FUN_AR1 lit { TEX_FUN1($1,$2) } | FUN_AR1hl lit { let t,h=$1 in TEX_FUN1hl(t,h,$2) } | FUN_AR1hf lit { let t,h=$1 in TEX_FUN1hf(t,h,$2) } | FUN_AR1opt expr_nosqc SQ_CLOSE lit { TEX_FUN2sq($1,TEX_CURLY $2,$4) } | FUN_AR2 lit lit { TEX_FUN2($1,$2,$3) } | FUN_AR2h lit lit { let t,h=$1 in TEX_FUN2h(t,h,$2,$3) } | BOX { let bt,s = $1 in TEX_BOX (bt,s) } | CURLY_OPEN expr CURLY_CLOSE { TEX_CURLY $2 } | CURLY_OPEN ne_expr FUN_INFIX ne_expr CURLY_CLOSE { TEX_INFIX($3,$2,$4) } | CURLY_OPEN ne_expr FUN_INFIXh ne_expr CURLY_CLOSE { let t,h=$3 in TEX_INFIXh(t,h,$2,$4) } | BEGIN__MATRIX matrix END__MATRIX { TEX_MATRIX ("matrix", $2) } | BEGIN_PMATRIX matrix END_PMATRIX { TEX_MATRIX ("pmatrix", $2) } | BEGIN_BMATRIX matrix END_BMATRIX { TEX_MATRIX ("bmatrix", $2) } | BEGIN_BBMATRIX matrix END_BBMATRIX { TEX_MATRIX ("Bmatrix", $2) } | BEGIN_VMATRIX matrix END_VMATRIX { TEX_MATRIX ("vmatrix", $2) } | BEGIN_VVMATRIX matrix END_VVMATRIX { TEX_MATRIX ("Vmatrix", $2) } | BEGIN_CASES matrix END_CASES { TEX_MATRIX ("cases", $2) }matrix: line { [$1] } | line NEXT_ROW matrix { $1::$3 }line: expr { [$1] } | expr NEXT_CELL line { $1::$3 };;
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?