ファイルの名前がmacros.pyであるため、最初はpythonだと思いました。しかし、そうではないという人もいます。
v8 エンジンのこの部分は、別の議論の途中で明らかになりました。
# Constants. The compiler constant folds them.
define INFINITY = (1/0);
私は他の言語でこのようなものを見たことがありません。この言語(py?/js?)がそのような表現を可能にするメカニズムは何ですか?
ファイルの名前がmacros.pyであるため、最初はpythonだと思いました。しかし、そうではないという人もいます。
v8 エンジンのこの部分は、別の議論の途中で明らかになりました。
# Constants. The compiler constant folds them.
define INFINITY = (1/0);
私は他の言語でこのようなものを見たことがありません。この言語(py?/js?)がそのような表現を可能にするメカニズムは何ですか?
行は有効な Python 構文ではありません。Python 言語には型の概念がなく、構文const
もありません。macro
その.py
ファイルの拡張子は非常に誤解を招くものです。実際の Python 構文が含まれている場合と含まれていない場合がある行は 1 行だけです。
# Macros implemented in Python.
python macro CHAR_CODE(str) = ord(str[1]);
このファイルは実際にはPython スクリプトによって解析されるため、せいぜいドメイン固有のカスタム言語です。で Python コードとしてマークされていないマクロは、上部のコメントから判断すると、 JavaScriptコードを文字配列にpython macro
変換するために使用されているようです。
# 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)
、float 無限を生成します。
> (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')
しかし、本当に無限を参照する必要がある場合にのみ使用できるので、そのようなトリックは必要ありません。