2016-06-09 2 views
-7

Я всегда задавался вопросом, почему я не могу использовать синтаксис C++ на терминале Node.js.Почему я не использую синтаксис C++ на Node.JS-терминале?

Например, V8 - это механизм JavaScript, который реализует ECMAScript. Сам Node.js - это программа на C++, которая сообщает движку V8 использовать ее функцию. Таким образом, эти функции написаны на C++-коде, поэтому это приложение должно быть в синтаксисе C++. Если я должен был набирать код C++ в терминале Node.js, то терминал Node.js должен иметь возможность передать этот синтаксис в модули C++ в ядре Node.js и успешно выполнить вывод. Но вместо этого он дает:

SyntaxError: Unexpected identifier 
at Object.exports.createScript (vm.js:24:10) 
at REPLServer.defaultEval (repl.js:236:25) 
at bound (domain.js:280:14) 
at REPLServer.runBound [as eval] (domain.js:293:12) 
at REPLServer.<anonymous> (repl.js:441:10) 
at emitOne (events.js:101:20) 
at REPLServer.emit (events.js:188:7) 
at REPLServer.Interface._onLine (readline.js:224:10) 
at REPLServer.Interface._line (readline.js:566:8) 
at REPLServer.Interface._ttyWrite (readline.js:843:14) 

Я просто искал ясное объяснение, как два языка забираемый хотя Node.js написан на вершине C++.

+0

Это не совсем необычно для компилятора или переводчика для написания одного языка на другом языке. На самом деле это необходимость, по крайней мере, для первой версии компилятора этого языка. Это не позволяет компилировать или интерпретировать их язык, который они использовали автоматически, даже если текстовый редактор, написанный на C++, предоставит ему эту возможность. * Может ли они построить компилятор C++ в NodeJS? Конечно, но это не имеет никакого отношения к тому, что оно написано * на C++. –

+0

... сказал, что есть проекты, которые позволят вам взять C++ и скомпилировать его в виде JavaScript, который запустит его в поддерживаемых реализациях с очень высокой производительностью. http://kripken.github.io/emscripten-site/ –

+1

Как уродливая аналогия, пищеварительные отходы производятся из пищи, но это не значит, что вы ее глотаете ... –

ответ

5

Просто потому, что программа написана на C++, не означает, что она может интерпретировать код C++. Вы ожидаете, что эта программа будет понимать код C++ при ее запуске?

#include <iostream> 

int main() 
{ 
    std::string line; 
    while (std::getline(std::cin, line)) { 
     std::cout << line << '\n'; 
    } 
} 
4

Узел и V8 написаны на C++, но их задача - интерпретировать код Javascript. Они не будут запускать какой-либо код на C++, так же, как компилятор C++ не будет компилировать код Javascript.