首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Python Tokenizer:字数限制

Python Tokenizer:字数限制
EN

Stack Overflow用户
提问于 2017-11-26 09:10:53
回答 0查看 107关注 0票数 1

我用python为我的语言编写了一个标记器,但是当我试图标记化一个文件时,它只对它进行标记化。It标记器只能标记大约90个标记(单词和符号分开),而它应该标记所有文件。代码如下:

代码语言:javascript
复制
import re

file = input("filename>")

with open(file, 'r') as myfile:
data=myfile.read().replace('\n', '')


scanner = re.Scanner([
 (r"[0-9]+",                   lambda scanner,token:("NUMBER", token)),
 (r"[a-z_A-Z_λ]+",             lambda scanner,token:("KEYWORD", token)),
 (r"[,.!#%^*()']+",            lambda scanner,token:("OPERATOR", token)),
 (r'["]+',                     lambda scanner,token:("OPERATOR", token)),
 (r"[+-]+",                    lambda scanner,token:("OPERATOR", token)),
 (r'[=]+',                     lambda scanner,token:("OPERATOR", token)),
 (r"[{}]+",                    lambda scanner,token:("OPERATOR", token)),
 (r'[[]]+',                    lambda scanner,token:("OPERATOR", token)),
 (r"\s+", None), # None == skip token.
])

results, remainder = scanner.scan(data)

print(results)

示例脚本是(对于那些有时间阅读的人):

代码语言:javascript
复制
constant Flow = "Flow"
constant script = this

local names = {'Gabriel', 'Kauan', 'Laura', 'Tarsila'}
constant flowCountry = 'Brasil'

local void function getinpairs(name) extends findArg()
    for _, v(name) in pairs(names) do
       private local table = names
       print("Flow being the best programming language for you, has implemented     some new arguments!")
       local flowFounder = names[1]
       local namesMetatable = getmetatable(t1)
  end
end

function findArg(name)
    return getinpairs(name)
end

findArg('Gabriel')

结果是(对于那些有时间阅读的人来说):

代码语言:javascript
复制
[('KEYWORD', 'constant'), ('KEYWORD', 'Flow'), ('OPERATOR', '='), ('OPERATOR', '"'), ('KEYWORD', 'Flow'), ('OPERATOR', '"'), ('KEYWORD', 'constant'), ('KEYWORD', 'script'), ('OPERATOR', '='), ('KEYWORD', 'thislocal'), ('KEYWORD', 'names'), ('OPERATOR', '='), ('OPERATOR', '{'), ('OPERATOR', "'"), ('KEYWORD', 'Gabriel'), ('OPERATOR', "',"), ('OPERATOR', "'"), ('KEYWORD', 'Kauan'), ('OPERATOR', "',"), ('OPERATOR', "'"), ('KEYWORD', 'Laura'), ('OPERATOR', "',"), ('OPERATOR', "'"), ('KEYWORD', 'Tarsila'), ('OPERATOR', "'"), ('OPERATOR', '}'), ('KEYWORD', 'constant'), ('KEYWORD', 'flowCountry'), ('OPERATOR', '='), ('OPERATOR', "'"), ('KEYWORD', 'Brasil'), ('OPERATOR', "'"), ('KEYWORD', 'local'), ('KEYWORD', 'void'), ('KEYWORD', 'function'), ('KEYWORD', 'getinpairs'), ('OPERATOR', '('), ('KEYWORD', 'name'), ('OPERATOR', ')'), ('KEYWORD', 'extends'), ('KEYWORD', 'findArg'), ('OPERATOR', '()'), ('KEYWORD', 'for'), ('KEYWORD', '_'), ('OPERATOR', ','), ('KEYWORD', 'v'), ('OPERATOR', '('), ('KEYWORD', 'name'), ('OPERATOR', ')'), ('KEYWORD', 'in'), ('KEYWORD', 'pairs'), ('OPERATOR', '('), ('KEYWORD', 'names'), ('OPERATOR', ')'), ('KEYWORD', 'do'), ('KEYWORD', 'private'), ('KEYWORD', 'local'), ('KEYWORD', 'table'), ('OPERATOR', '='), ('KEYWORD', 'names'), ('KEYWORD', 'print'), ('OPERATOR', '('), ('OPERATOR', '"'), ('KEYWORD', 'Flow'), ('KEYWORD', 'being'), ('KEYWORD', 'the'), ('KEYWORD', 'best'), ('KEYWORD', 'programming'), ('KEYWORD', 'language'), ('KEYWORD', 'for'), ('KEYWORD', 'you'), ('OPERATOR', ','), ('KEYWORD', 'has'), ('KEYWORD', 'implemented'), ('KEYWORD', 'some'), ('KEYWORD', 'new'), ('KEYWORD', 'arguments'), ('OPERATOR', '!'), ('OPERATOR', '"'), ('OPERATOR', ')'), ('KEYWORD', 'local'), ('KEYWORD', 'flowFounder'), ('OPERATOR', '='), ('KEYWORD', 'names')]

它停在第11行:单词"name“。

有人能指出脚本上的错误吗?

EN

回答

页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/47492087

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档