繁体   English   中英

lua - 如何检查一个单词是在字符串中还是只是一个单词

[英]lua - How to check if a word is in a string or it is just a word

所以我试图在lua中制作一种语言,我用“print”和更多的词替换了“output”这个词,但是如果有人输出(“output”)它也会替换它。 如何检查它是否在字符串中? 代码:

output('trying to make a new language in lua')
output('\n')
local file = io.open(arg[1],"r")
local code = file:read "*a"
local filename = arg[1]
local function execute()
    code = code:gsub("output","print")
  code = code:gsub("void","function")
  code = code:gsub("{}}","end")
  local newfile = io.open(filename:gsub("idk","lua"),"w")
  newfile:write(code)
  newfile:close()
  os.execute("lua test.lua")
end
execute()

Lua 模式通常不适合为编程语言构建解析器; 它们既没有标记化(词法分析)所需的正则表达式的全部表达能力,也没有接近构建抽象语法树所需的上下文无关语法(CFG,句法分析)的能力,即使它们提供了一些高级功能,例如超出正则表达式功能的括号匹配。

作为初学者,您可能希望从手写标记器开始; 由于您的语言在此阶段仅在令牌替换级别上运行,因此您可以简单地替换标识符令牌。

当您控制脚本的执行方式时,您不需要字符串替换 ( gsub ) 来实现变量重命名,例如printoutput :只需将全局print变量替换为保存print函数的output变量(您可能想要这样做这仅在以您的语言编写的脚本运行的环境中):

output = print
print = nil

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM