易语言

关注公众号 jb51net

关闭
首页 > 软件编程 > 易语言 > 易语言把c代码转换成易代码

易语言通过文本解析的方式把C代码转换成易代码

作者:易语言源码教程

今天小编就为大家分享一篇关于易语言通过文本解析的方式把C代码转换成易代码,小编觉得内容挺不错的,现在分享给大家,具有很好的参考价值,需要的朋友一起跟随小编来看看吧

常量数据表

.版本 2
.常量 c, "<文本长度: 759>", , '常量值是一段C代码

C代码转易代码

.版本 2
.支持库 commobj
.支持库 iext2
.程序集 窗口程序集_启动窗口
.程序集变量 k, 快速文本对象
.程序集变量 k2, 快速文本对象
.子程序 __启动窗口_创建完毕
.局部变量 z, 字符格式
z.字体大小 = 8
z.字体名称 = “微软雅黑”
d1.置默认字符格式 (z)
d2.置默认字符格式 (z)
d1.内容 = #c
.子程序 替换_程序命名, 文本型
.参数 str, 文本型
.局部变量 替换到
.局部变量 位置1
.局部变量 位置2
.局部变量 s, 文本型, , "0"
.局部变量 s2, 文本型, , "0"
.局部变量 替换, 文本型, , "0"
.局部变量 替换为, 文本型, , "0"
.局部变量 参考数组, 文本型
.局部变量 i
k.置文本 (str)
位置1 = k.寻找文本 (“void”, , 假)
.如果真 (位置1 = -1)
  返回 (str)
.如果真结束
位置2 = k.寻找文本 (“{”, 位置1, 假)
k2.置文本 (k.取文本 (位置1, 位置2 - 位置1))
k2.替换子文本 (#换行符, “”, , , 假)
k2.替换子文本 (“void”, “.子程序”, , , 假)
k2.替换子文本 (“,”, #换行符, , , 假)
k2.替换子文本 (“(”, #换行符, , 1, 假)
位置1 = k2.倒找文本 (“)”, , 真)
.如果真 (位置1 ≠ -1)
  k2.替换文本 (位置1, 1, “”)
.如果真结束
str = “”
s = k2.分割文本 (#换行符, )
.计次循环首 (取数组成员数 (s), i)
  s2 = 分割文本 (删首尾空 (s [i]), “ ”, )
  .如果 (取文本右边 (s2 [2], 1) = “]”)
    s2 [2] = 文本_最右标识取左 (s2 [2], “[”)
    参考数组 = “, 数组”
  .否则
    参考数组 = “”
  .如果结束
  .如果真 (取文本左边 (s2 [2], 1) = “(”)
    s2 [2] = 文本_按前两标识取中 (s2 [2], “(&”, “)”)
    参考数组 = “, 参考 数组”
  .如果真结束
  .如果真 (取文本左边 (s2 [2], 1) = “&”)
    s2 [2] = 取文本右边 (s2 [2], 取文本长度 (s2 [2]) - 1)
    参考数组 = “, 参考”
  .如果真结束
  .判断开始 (s2 [1] = “float”)
    str = str + “.参数 ” + s2 [2] + “, 小数型” + 参考数组 + #换行符
  .判断 (s2 [1] = “int” 或 s2 [1] = “long”)
    str = str + “.参数 ” + s2 [2] + “, 整数型” + 参考数组 + #换行符
  .判断 (s2 [1] = “string”)
    str = str + “.参数 ” + s2 [2] + “, 文本型” + 参考数组 + #换行符
  .判断 (s2 [1] = “short”)
    str = str + “.参数 ” + s2 [2] + “, 短整数型” + 参考数组 + #换行符
  .默认
    str = str + s [i] + #换行符
  .判断结束
.计次循环尾 ()
返回 (str)
.子程序 替换_索引数字累加, 文本型
.参数 文本, 文本型
.局部变量 i1
.局部变量 i2
.局部变量 k0, 快速文本对象
k0.置文本 (文本)
.循环判断首 ()
  i1 = k0.寻找文本 (“[”, i2, 真)
  .如果真 (i1 = -1)
    跳出循环 ()
  .如果真结束
  i1 = i1 + 1
  i2 = k0.寻找文本 (“]”, i1, 真)
  .如果真 (i2 = -1)
    跳出循环 ()
  .如果真结束
  .判断开始 (到整数 (k0.取文本 (i1, i2 - i1)) > 0)
    k0.替换文本 (i1, i2 - i1, 到文本 (到整数 (k0.取文本 (i1, i2 - i1)) + 1))
  .判断 (到字节集 (k0.取文本 (i1, i2 - i1)) = { 48 })
    k0.替换文本 (i1, 1, “1”)
  .默认
  .判断结束
.循环判断尾 (真)
返回 (k0.取文本 (, ))
.子程序 替换_注释, 文本型
.参数 文本, 文本型
.局部变量 i1
.局部变量 i2
k2.置文本 (文本)
.循环判断首 ()
  i1 = k2.寻找文本 (“//”, i2, 真)
  .如果真 (i1 = -1)
    跳出循环 ()
  .如果真结束
  i2 = k2.寻找文本 (#换行符, i1, 真)
  .如果真 (i2 = -1)
    跳出循环 ()
  .如果真结束
  k2.替换文本 (i1, i2 - i1, “'” + k2.取文本 (i1 + 2, i2 - i1 - 2) + “;”)
.循环判断尾 (真)
返回 (k2.取文本 (, ))
.子程序 替换_按行, 文本型
.参数 文本, 文本型
.局部变量 s, 文本型, , "0"
.局部变量 f, 文本型, , "0"
.局部变量 i
s = 分割文本 (文本, #换行符, )
文本 = “”
.计次循环首 (取数组成员数 (s), i)
  s [i] = 删首尾空 (s [i])
  .判断开始 (取文本左边 (s [i], 6) = “float ”)
    f = 分割文本 (s [i], “float ”, )
    文本 = “.局部变量 ” + 文本_按前两标识取中 (s [i], “float ”, “=”) + “,小数型” + #换行符 + 文本 + f [2] + #换行符
  .判断 (寻找文本 (s [i], “*=”, , 假) ≠ -1)
    f = 分割文本 (s [i], “*=”, )
    文本 = 文本 + f [1] + “= ” + f [1] + “*” + f [2] + #换行符
  .判断 (寻找文本 (s [i], “/=”, , 假) ≠ -1)
    f = 分割文本 (s [i], “/=”, )
    文本 = 文本 + f [1] + “= ” + f [1] + “/” + f [2] + #换行符
  .判断 (寻找文本 (s [i], “+=”, , 假) ≠ -1)
    f = 分割文本 (s [i], “+=”, )
    文本 = 文本 + f [1] + “= ” + f [1] + “+” + f [2] + #换行符
  .判断 (寻找文本 (s [i], “-=”, , 假) ≠ -1)
    f = 分割文本 (s [i], “-=”, )
    文本 = 文本 + f [1] + “= ” + f [1] + “-” + f [2] + #换行符
  .判断 (取文本右边 (s [i], 2) = “++”)
    f = 分割文本 (s [i], “++”, )
    文本 = 文本 + f [1] + “= ” + f [1] + “+1” + #换行符
  .判断 (取文本右边 (s [i], 2) = “--”)
    f = 分割文本 (s [i], “--”, )
    文本 = 文本 + f [1] + “= ” + f [1] + “-1” + #换行符
  .默认
    文本 = 文本 + s [i] + #换行符
  .判断结束
.计次循环尾 ()
返回 (文本)
.子程序 替换_函数, 文本型
.参数 代码, 文本型
.局部变量 i
.局部变量 原, 文本型, , "0"
.局部变量 到, 文本型, , "0"
k2.置文本 (代码)
原 = { “/”, “*”, “sqrtf”, “cosf”, “sinf” }
到 = { “÷”, “×”, “求平方根”, “求余弦”, “求正弦 ” }
.计次循环首 (取数组成员数 (原), i)
  k2.替换子文本 (原 [i], 到 [i], , , 假)
.计次循环尾 ()
返回 (k2.取文本 (, ))
.子程序 _转换钮_被单击
.局部变量 s, 文本型
d2.内容 = 替换_程序命名 (文本_按标识取左 (d1.内容, “{”))
s = 文本_按两边标识取中 (d1.内容, “{”, “}”)
s = 替换_注释 (s)
s = 替换_索引数字累加 (s)
s = 子文本替换 (s, #换行符, “”, , , 真)
s = 子文本替换 (s, “;”, #换行符, , , 真)
s = 替换_按行 (s)
s = 替换_函数 (s)
d2.内容 = d2.内容 + s
.子程序 文本_最右标识取左, 文本型, 公开
.参数 文本, 文本型
.参数 最右标识, 文本型
返回 (取文本左边 (文本, 倒找文本 (文本, 最右标识, , 假) - 1))
.子程序 文本_按标识取左, 文本型, 公开
.参数 文本, 文本型
.参数 标识, 文本型
返回 (取文本左边 (文本, 寻找文本 (文本, 标识, , 假)))
.子程序 文本_按前两标识取中, 文本型, 公开
.参数 文本, 文本型
.参数 标识_左, 文本型
.参数 标识_右, 文本型
.局部变量 i
.局部变量 r, 快速文本对象
r.置文本 (文本)
i = r.寻找文本 (标识_左, , 假)
.如果真 (i = -1)
  返回 (文本)
.如果真结束
i = i + 取文本长度 (标识_左)
返回 (r.取文本 (i, r.寻找文本 (标识_右, i, 假) - i))
.子程序 文本_按两边标识取中, 文本型, 公开
.参数 文本, 文本型
.参数 标识_左, 文本型
.参数 标识_右, 文本型
.局部变量 i
.局部变量 r, 快速文本对象
r.置文本 (文本)
i = r.寻找文本 (标识_左, , 假)
.如果真 (i = -1)
  返回 (文本)
.如果真结束
i = i + 取文本长度 (标识_左)
返回 (r.取文本 (i, r.倒找文本 (标识_右, , 假) - i))

运行结果:

总结

以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作具有一定的参考学习价值,谢谢大家对脚本之家的支持。如果你想了解更多相关内容请查看下面相关链接

您可能感兴趣的文章:
阅读全文