C# 用于可视化表示的拆分条件语句.net
我有一个带有长条件语句的字符串,我需要对其进行解析并将其拆分为组/表达式以进行可视化表示。下面是源字符串的一个示例C# 用于可视化表示的拆分条件语句.net,c#,.net,vb.net,C#,.net,Vb.net,我有一个带有长条件语句的字符串,我需要对其进行解析并将其拆分为组/表达式以进行可视化表示。下面是源字符串的一个示例 ($ROOT.OPT_CHAR1 IN ('val1') AND $ROOT.OPT_CHAR2 IN ('val2')) OR ($ROOT.OPT_CHAR3 IN ('val3') AND $ROOT.OPT_CHAR4 IN ('val4')) 我需要动态解析这个字符串,并将表达式适当地组合在一起 Group1:-或 第1-A组:-和 $ROOT.OPT_CHAR1 IN
($ROOT.OPT_CHAR1 IN ('val1') AND $ROOT.OPT_CHAR2 IN ('val2')) OR ($ROOT.OPT_CHAR3 IN ('val3') AND $ROOT.OPT_CHAR4 IN ('val4'))
我需要动态解析这个字符串,并将表达式适当地组合在一起
Group1:-或
第1-A组:-和
$ROOT.OPT_CHAR1 IN ('val1')
$ROOT.OPT_CHAR2 IN ('val2')
$ROOT.OPT_CHAR3 IN ('val3')
$ROOT.OPT_CHAR4 IN ('val4')
第1-B组:-和
$ROOT.OPT_CHAR1 IN ('val1')
$ROOT.OPT_CHAR2 IN ('val2')
$ROOT.OPT_CHAR3 IN ('val3')
$ROOT.OPT_CHAR4 IN ('val4')
任何帮助都将不胜感激。对您的表达进行评估
($ROOT.OPT_CHAR1 IN ('val1') AND $ROOT.OPT_CHAR2 IN ('val2')) OR ($ROOT.OPT_CHAR3 IN ('val3') AND $ROOT.OPT_CHAR4 IN ('val4'))
应该考虑逻辑表达式的计算,不仅要考虑和/或,还要考虑表达式分组的左/右括号
简单拆分或正则表达式不适用于此类问题。您必须构建一个解析器
要构建解析器,首先要定义语法:标记、规则等等
您可以使用构建/测试语法,最终生成c#或java解析器,并获得现成的解析器
Antlr工具将语法文件作为输入,并生成两个类:lexer和parser
首先,为每个运算符和括号创建标记:
LPAREN : '(' ;
RPAREN : ')' ;
AND : 'AND';
OR : 'OR';
IN : 'IN';
定义变量,如ROOT.OPT_CHAR1:名称由字母和数字组成:
NAME : ('a'..'z' | '0'..'9')*;
定义空白:
WS:(“|”\t“|”\r“|”\n”)
最后创建解析器规则
有关语法结构的详细信息,请阅读:
阅读Antllr的简单教程可以帮助您构建解析器。表达式的计算
($ROOT.OPT_CHAR1 IN ('val1') AND $ROOT.OPT_CHAR2 IN ('val2')) OR ($ROOT.OPT_CHAR3 IN ('val3') AND $ROOT.OPT_CHAR4 IN ('val4'))
应该考虑逻辑表达式的计算,不仅要考虑和/或,还要考虑表达式分组的左/右括号
简单拆分或正则表达式不适用于此类问题。您必须构建一个解析器
要构建解析器,首先要定义语法:标记、规则等等
您可以使用构建/测试语法,最终生成c#或java解析器,并获得现成的解析器
Antlr工具将语法文件作为输入,并生成两个类:lexer和parser
首先,为每个运算符和括号创建标记:
LPAREN : '(' ;
RPAREN : ')' ;
AND : 'AND';
OR : 'OR';
IN : 'IN';
定义变量,如ROOT.OPT_CHAR1:名称由字母和数字组成:
NAME : ('a'..'z' | '0'..'9')*;
定义空白:
WS:(“|”\t“|”\r“|”\n”)
最后创建解析器规则
有关语法结构的详细信息,请阅读:
阅读Antllr的简单教程可以帮助您构建解析器。计算不仅要考虑逻辑表达式的计算和/或,还要考虑左/右括号。简单拆分或正则表达式不适用于此类问题。你必须构建一个解析器。同意。我正在努力解决创建解析器的逻辑问题。求值不仅要考虑逻辑表达式求值和/或,还要考虑左/右括号。简单拆分或正则表达式不适用于此类问题。你必须构建一个解析器。同意。我正在为创建语法分析器的逻辑而挣扎。我不知道ANTLR工具是什么。ANTLR工具是一个强大的语法分析器生成器,请阅读我的答案中的参考以构建语法并生成c#语法分析器,它可以基于该语法处理文本文件。读吧。我不知道ANTLR工具是什么。ANTLR工具是一个强大的解析器生成器,请阅读我的答案中的参考来构建语法并生成c#解析器,它可以基于该语法处理文本文件。读吧。