lexes.mll

来自「用ocaml编写的pascal编译程序」· MLL 代码 · 共 52 行

MLL
52
字号
{open Parser}
let letter=['a'-'z' 'A'-'Z']
let pdigit=['1'-'9']
let digit=['0'-'9']
let ident=letter(letter|'_'|digit)*
let number=pdigit(digit)*|'0'

rule token=parse
[' ''\t''\n']{token lexbuf}
|"true"     {TRUE}
|"false"    {FALSE}
|'+'        {ADD}
|'-'        {SUB}
|'*'        {MUL}
|'/'        {DIV}
|"<="       {LEQ}
|'<'        {LES}
|'>'        {GRT}
|">="       {GEQ}
|'='        {EQL}
|"<>"       {NEQ}
|"and"      {AND}
|"or"       {OR}
|"not"      {NOT}
|":="       {AFF}
|'('        {LPA}
|')'        {RPA}
|'['        {LCOR}
|']'        {RCOR}
|','        {VIRG}
|';'        {PVIRG}
|'.'        {PT}
|':'        {DPT}
|"if"       {IF}
|"then"     {THEN}
|"else"     {ELSE}
|"while"    {WHILE}
|"do"       {DO}
|"begin"    {BEGIN}
|"end"      {END}

|"integer"  {INTEGER}
|"boolean"  {BOOLEAN}
|"array"    {ARRAY}
|"of"       {OF}
|"var"      {VAR}
|"proc"     {PROC}
|"program"  {PROGRAM}
|ident      {IDENT(Lexing.lexeme lexbuf)}
|number     {NUMBER(int_of_string(Lexing.lexeme lexbuf))}

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?