我首先认为它是python,因为该文件名为macros.py。但有些人说不是。
在另一次讨论中,This v8引擎的一部分出现了。
# Constants. The compiler constant folds them.
define INFINITY = (1/0);
我还没有用另一种语言看过这样的事情。这种语言的机制是什么(py?/ js?)允许这样的表达式?
答案 0 :(得分:2)
这行不是有效的Python语法。 Python语言没有const
类型的概念,也没有任何macro
语法。
该文件的.py
扩展名具有高度误导性;只有一行可能包含或不包含实际的Python语法:
# Macros implemented in Python.
python macro CHAR_CODE(str) = ord(str[1]);
该文件实际上由Python script解析,因此它最多只是一种自定义域特定语言。未标记为python macro
的Python代码的宏似乎用于将 JavaScript 代码转换为字符数组,从顶部的注释判断:
# This is a utility for converting JavaScript source code into C-style
# char arrays. It is used for embedded JavaScript code in the V8
# library.
在 JavaScript 代码中,(1/0)
生成浮点无穷大:
> (1/0)
Infinity
在Python代码中,这引发了一个异常:
>>> 1/0
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
ZeroDivisionError: integer division or modulo by zero
但是你不需要这样的技巧,因为如果你真的需要引用无穷大,你可以使用float('inf')
。