.版本 2 .支持库 RegEx .程序集 词法分析程序集 .程序集变量 正则, 正则表达式 .子程序 词法分析 .参数 表达式, 文本型 .参数 返回值, 词, 参考 数组 .局部变量 上次结果位置, 整数型 .局部变量 当前词, 词 .局部变量 当前匹配文本, 文本型 .局部变量 res, 搜索结果 .局部变量 i, 整数型 ' 可能带°的数字 (\d+)(\.\d+)*[°]{0,1} ' 标识符 [a-zA-ZΑ-Ωα-ω_][a-zA-ZΑ-Ωα-ω0-9_]* ' 算符 [\+\-\*\/\^] ' 括号 [\(\)] ' 注释 \#.+ ' 逗号 , ' 易语言的正则表达式没办法用\u, 也没办法写希腊字母, 也没办法写「°」, 因此去掉希腊字母和「°」, 加上空白, 合起来就是这样的 .如果真 (正则.是否为空 ()) 正则.创建 (“((\d+)(\.\d+)*)|([a-zA-Z_][a-zA-Z0-9_]*)|([\+\-\*\/\^])|([\(\)])|(\#.+)|([,])|[ ]+$”, ) .如果真结束 ' ________________m1______________ -> 数字 ' ____________ m2___m3____________ -> 数字的整数和小数部分 ' __________________________________________m4___________ -> 标识符 包含英文字母和希腊字母 只能以字母或下划线开头, 之后可以是数字或字母下划线 ' _______________________________________________________________m5______ -> 算符, +-*/^ ' __________________________________________________________________________m6___ -> 括号 ' _________________________________________________________________________________m7___ -> 注释 ' _______________________________________________________________________________________m8___ -> 逗号 ' 调试输出 (正则.取子表达式个数 ()) 清除数组 (返回值) 上次结果位置 = 1 .判断循环首 (上次结果位置 ≤ 取文本长度 (表达式) 且 当前词.类型 ≠ -1) 当前词.内容 = “” 当前词.类型 = -1 res = 正则.搜索 (表达式, 上次结果位置, ) .计次循环首 (#词类型枚举数量, i) .如果真 (i = #词类_整数部分 或 i = #词类_小数部分) 到循环尾 () .如果真结束 当前匹配文本 = res.取子匹配文本 (表达式, i, 上次结果位置) .如果真 (取文本长度 (当前匹配文本) > 0 且 i ≠ #词类_空格) 当前词.内容 = 当前匹配文本 当前词.类型 = i 上次结果位置 = 上次结果位置 + 取文本长度 (当前匹配文本) + 1 加入成员 (返回值, 当前词) 跳出循环 () .如果真结束 .计次循环尾 () .判断循环尾 () .子程序 输出词法分析结果 .参数 词, 词, 数组 .局部变量 i, 整数型 .计次循环首 (取数组成员数 (词), i) 标准输出 (, “当前类型: ” + 到文本 (词 [i].类型) + “, 内容: ” + 词 [i].内容 + #换行符) .计次循环尾 () 标准输出 (, “----” + #换行符) .子程序 词法分析并输出 .参数 表达式, 文本型 .局部变量 res, 词, , "0" .局部变量 t0, 长整数型 t0 = 时间_取现行时间戳1 (真) 词法分析 (表达式, res) 标准输出 (, “用时 ” + 到文本 (时间_取现行时间戳1 (真) - t0) + “ms” + #换行符) 输出词法分析结果 (res)