110,534
社区成员
发帖
与我相关
我的任务
分享
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using Roslyn.Compilers;
using Roslyn.Compilers.CSharp;
namespace ConsoleApplication1
{
class Program
{
static void Main(string[] args)
{
string sourcecode = @"
public class Test
{
public static void Main(string[] args)
{
int sum = 0;
for (int i = 1; i <= 100; i++)
{
sum += i;
}
Console.WriteLine(sum);
Console.WriteLine(i++ * 3 + (5 - 2) / 7);
}
}";
SyntaxTree tree = SyntaxTree.ParseCompilationUnit(sourcecode);
processChilds(tree.Root.ChildNodes());
}
static void processChilds(IEnumerable<SyntaxNode> nodes, int level = 0)
{
foreach (var node in nodes)
{
Console.WriteLine("{0}{1}: {2}", new string(' ', level * 2), node.Kind, node.GetFirstToken().ValueText);
if (node.HasChildren) processChilds(node.ChildNodes(), level++);
}
}
}
}
ClassDeclaration: public
MethodDeclaration: public
PredefinedType: void
ParameterList: (
Parameter: string
ArrayType: string
PredefinedType: string
ArrayRankSpecifier: [
Block: {
LocalDeclarationStatement: int
VariableDeclaration: int
PredefinedType: int
VariableDeclarator: sum
EqualsValueClause: =
NumericLiteralExpression: 0
ForStatement: for
VariableDeclaration: int
PredefinedType: int
VariableDeclarator: i
EqualsValueClause: =
NumericLiteralExpression: 1
LessThanOrEqualExpression: i
IdentifierName: i
NumericLiteralExpression: 100
PostIncrementExpression: i
IdentifierName: i
Block: {
ExpressionStatement: sum
AddAssignExpression: sum
IdentifierName: sum
IdentifierName: i
ExpressionStatement: Console
InvocationExpression: Console
MemberAccessExpression: Console
IdentifierName: Console
IdentifierName: WriteLine
ArgumentList: (
Argument: sum
IdentifierName: sum
ExpressionStatement: Console
InvocationExpression: Console
MemberAccessExpression: Console
IdentifierName: Console
IdentifierName: WriteLine
ArgumentList: (
Argument: i
AddExpression: i
MultiplyExpression: i
PostIncrementExpression: i
IdentifierName: i
NumericLiteralExpression: 3
DivideExpression: (
ParenthesizedExpression: (
SubtractExpression: 5
NumericLiteralExpression: 5
NumericLiteralExpression: 2
NumericLiteralExpression: 7
Press any key to continue . . .
早上论坛有问题,打了很多字都没了。。。还有些什么想不起来了。。。先写这么多。