- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在尝试使用 Python 的“slimit”包缩小一些 javascript。
import slimit
slimit.minify('[1,2,3,4,5,6,7,8]')
运行正常并返回 '[1,2,3,4,5,6,7,8]'
import slimit
slimit.minify('[01,02,03,04,05,06,07,08]')
报错:
SyntaxError: Unexpected token (NUMBER, '8') at 1:23 between LexToken(NUMBER,'0',1,22) and LexToken(RBRACKET,']',1,24)
奇怪的是缩小字符串 [01,02,03,04,05,06,07] 没问题。
Slimit 仅在缩小数组中的 8 个或更多零填充整数时返回错误。
最佳答案
这取决于 slimit 使用的词法分析器。以“0”(但不是“0x”)开头的数字被视为八进制整数。因此,序列“08”以 2 个单独的标记(“0”、“8”)结束,因此出现“意外标记”错误。
注意以下几点:
>>> from slimit import lexer
>>> L = Lexer()
>>> L.input("02")
>>> L.token()
LexToken(NUMBER,'02',1,0)
>>> L.input("08")
>>> L.token()
LexToken(NUMBER,'0',1,0)
>>> L.token()
LexToken(NUMBER,'8',1,1)
寻找 the source对于词法分析器,我们看到用于识别数字的正则表达式:
t_NUMBER = r"""
(?:
0[xX][0-9a-fA-F]+ # hex_integer_literal
| 0[0-7]+ # or octal_integer_literal (spec B.1.1)
| (?: # or decimal_literal
(?:0|[1-9][0-9]*) # decimal_integer_literal
\. # dot
[0-9]* # decimal_digits_opt
(?:[eE][+-]?[0-9]+)? # exponent_part_opt
|
\. # dot
[0-9]+ # decimal_digits
(?:[eE][+-]?[0-9]+)? # exponent_part_opt
|
(?:0|[1-9][0-9]*) # decimal_integer_literal
(?:[eE][+-]?[0-9]+)? # exponent_part_opt
)
)
"""
关于 slimit 应该支持八进制表示还是将其视为普通的 10 进制整数的问题尚待商榷。
JSON 规范明确禁止八进制形式的数字,一些工具会将其标记为无效 JSON(尝试 jsonlint)。来自 RFC 4627 (2.4. Numbers) :
Octal and hex forms are not allowed. Leading zeros are not allowed.
关于javascript - Slimit python 缩小器奇怪的行为,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16445575/
from slimit import minify if __name__ == "__main__": print("start") # Normally, I pass real
我正在尝试使用 Python 的“slimit”包缩小一些 javascript。 import slimit slimit.minify('[1,2,3,4,5,6,7,8]') 运行正常并返回 '
我有这个示例网站:http://www.example.com/whatever.asp?profile=1 对于每个个人资料号码,我在此 Java 脚本代码中都有一个不同的电子邮件。 functi
我是一名优秀的程序员,十分优秀!