Roslyn объявить локальную переменную с SyntaxGenerator - PullRequest
0 голосов
/ 07 октября 2018

Я пытаюсь написать компилятор для проприетарного языка, основанного на C / C ++ / C #, но со скрытыми более сложными функциями.Компилятор использует ANTLR для построения собственного синтаксического дерева, а затем использует класс Roslyn SyntaxGenerator для построения кода на C #, который затем компилируется как обычно для кода C #.Моя текущая проблема заключается в обработке переменных внутри функций: так как объявить поле довольно просто, локальные переменные, кажется, не обсуждаются и не создаются.Как создать локальную переменную с классом SyntaxGenerator?

1 Ответ

0 голосов
/ 07 октября 2018

Вы используете SyntaxGenerator.LocalDeclarationStatement.

Например, если вы инициализировали выражение, вы можете использовать его следующим образом:

SyntaxGenerator generator = ...;
generator.LocalDeclarationStatement(
    "variable",
    generator.LiteralExpression(1));

Это создаст оператор var variable = 1;.

Или, если вы просто хотите создать переменную, но назначить ее позже:

SyntaxGenerator generator = ...;     
generator.LocalDeclarationStatement(
    generator.TypeExpression(SpecialType.System_Int32),
    "variable");

Это сгенерирует оператор int variable;.

...