Я использовал Esprima.Net (https://github.com/Diullei/Esprima.NET), чтобы получить AST (абстрактный синтаксический ключ) из кода JavaScript. Он возвращает List<Dynamic>
, состоящий из множества дочерних и дочерних узлов. Интересно, как лучше всего пройти все эти узлы в C# для анализа. В основном я хочу получить имя функции, имя переменной &, что она находится под.Перемещение JavaScript AST (Esprima.Net) в Дерево в C#
Например, в следующем коде JavaScript:
var y = 45;
function fTest(d)
{
var key: Argument.Callee;
var cars = 'Hello';
for (i = 0; i < cars.length; i++)
{
text += cars[i];
}
}
Я хочу, чтобы получить следующий результат в конце:
variable: 45
function:parameter:'d'
function:variable:argument.callee
function:variable:'Hello'
funtion:loop:variable:object
Я имею трудность пересечь List<Dynamic>
, данный Esprima.Net. Любые идеи для обработки или пересечения этого списка в дереве или любой структуре, чтобы я мог получить к ним доступ? Благодарю.
Я сделал что-то с Esprima в прошлом, и я закончил его реализацию с помощью NodeJS. Поскольку Esprima сделан в JS (хорошо, есть этот .NET-порт ... но я имею в виду официальный), анализ JS от JS чувствует себя немного более простым. Возможно, вы также можете выполнить всю работу с помощью [Юрское] (https://jurassic.codeplex.com/), а затем прочитать результаты из .NET. –
Оглядываясь, кажется, что юра не создает АСТ, если не сделано изменение его кода. В итоге я использовал Esprima JS и внешний Javascript, как указано ниже. – iLoeng