需要帮助来细分字符串

时间:2015-09-14 12:25:59

标签: c# string parsing grammar rule-engine

我正在尝试在C#中拆分字符串,使其成为我的代码的逻辑。字符串是:

if ( x111 > 0 ) 
   then (( x111/ x222) >= 34 and ( x222 / x222) <= 4500) 
else ( if ( x333 equals 0) 
   then true else false)

我正在使用以下代码用于其他字符串,它工作正常:

string query = "if ( x111 > 0 ) then (x222 > 0 ) else true";
string result = query.Split(new string [] {"if", "then", "else" },StringSplitOptions.RemoveEmptyEntries); 

输出:

  

(x111> 0)
(x222> 0)

对于我的上面的字符串,有一个问题是然后条件包含另一个嵌套逻辑,我需要将其拆分为一个逻辑。我可以根据“(”“)”拆分它,以便我能够存储各种表达式的结果,例如 if,then,else 和嵌套条件。

1 个答案:

答案 0 :(得分:4)

您正在尝试使用字符串操作构建解析器......这是一个坏主意,可能永远不会有效。

我建议你使用ANTLR,这是一个用来创建语法和解析器/词法分析器的工具。你应该试一试。有许多语言示例,包括C#,您可以将它们用作您自己的语言分析器的开头。