草庐IT

StringScanner

全部标签

ruby - 如何从 StringScanner 捕获项目?

我正在使用Ruby的StringScanner规范化一些英文文本。defnormalizetexts=''ss=StringScanner.newtextwhile!ss.eos?dos+=''ifss.scan(/\s+/)#mutiplewhitespace=>singlespaces+='mice'ifss.scan(/\bmouses\b/)#mouses=>mices+=''ifss.scan(/\bthe\b/)#remove'the's+="#$1#$2"ifss.scan(/(\d)(\w+)/)#shouldsplit3blind=>3blindendsendnorm

ruby - StringScanner 扫描 IO 而不是字符串

我有一个使用ruby​​的标准StringScanner编写的解析器。如果我可以在流式文件上使用它,那就太好了。有没有不需要我将整个字符串加载到内存中的StringScanner等效项? 最佳答案 您可能需要稍微修改一下解析器,但是您可以像这样将文件中的行提供给扫描器:File.open('filepath.txt','r')do|file|scanner=StringScanner.new(file.readline)untilfile.eof?scanner.scan(/whatever/)scanner

Ruby StringScanner 用于词法分析 : how to get the line number?

我正在使用StringScanner进行词法分析,如下所示:defnext@scanner.skip(/\s+/)value,kind=nil,nilTOKEN_DEF.each{|tok,regex|(kind=tok;break)if@scanner.scan(regex)}returnToken.new(kind,value,@line,@scanner.pos)end初步估计,这很好用,只是我不知道现在如何获取@line编号。我已经阅读了文档,begin_of_line在哪里?方法似乎合适,但我不知道如何使用它。 最佳答案