问题描述
使用CSharpSyntaxRewriter,我想确定特定的BinaryExpression是否是Artihmetic表达式。确定代码的方法比下面的代码段更简单。
private static bool IsArithmeticoperator(BinaryExpressionSyntax node)
{
return node.IsKind(SyntaxKind.AddExpression) ||
node.IsKind(SyntaxKind.MultiplyExpression) ||
node.IsKind(SyntaxKind.DivideExpression) ||
node.IsKind(SyntaxKind.SubtractExpression) ||
node.IsKind(SyntaxKind.ModuloExpression);
}
只是有点笨拙。
解决方法
我不确定这是否可行,但是枚举中可能有一些可以帮助您的东西,
算术表达式在枚举import {HttpClient,HttpParams,HttpHeaders} from '@angular/common/http';
import {Injectable} from '@angular/core';
@Injectable({
providedIn: 'root'
})
export class MarksService {
constructor(private http: HttpClient,private params: HttpParams) {}
}
内按顺序排列,但SyntaxKind
除外,您可以单独检查。
也许其他ModuloExpression
也会满足您的需求。
SyntaxKind
因此您可以执行以下操作:
AddExpression = 307,SubtractExpression = 308,MultiplyExpression = 309,DivideExpression = 310,IntegerDivideExpression = 311,ExponentiateExpression = 314,LeftShiftExpression = 315,RightShiftExpression = 316,ConcatenateExpression = 317,ModuloExpression = 318,
更新
这仅适用于private static bool IsArithmeticOperator(BinaryExpressionSyntax node)
{
SyntaxKind expressionKind = node.Kind();
return (expressionKind >= SyntaxKind.AddExpression && expressionKind <= SyntaxKind.DivideExpression)
|| expressionKind == SyntaxKind.ModuloExpression;
}
并且不会为Microsoft.CodeAnalysis.VisualBasic