0

ファイルの名前がmacros.pyであるため、最初はpythonだと思いました。しかし、そうではないという人もいます。

v8 エンジンのこの部分は、別の議論の途中で明らかになりました。

# Constants.  The compiler constant folds them.
define INFINITY = (1/0);

私は他の言語でこのようなものを見たことがありません。この言語(py?/js?)がそのような表現を可能にするメカニズムは何ですか?

4

1 に答える 1

2

行は有効な 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')しかし、本当に無限を参照する必要がある場合にのみ使用できるので、そのようなトリックは必要ありません。

于 2015-11-24T18:02:12.767 に答える