在c中按运算符,标识符和其他字符拆分字符串

时间:2014-05-23 11:04:11

标签: c math wolfram-mathematica

我有一个字符串,如“id1 * id2 + 100; for(i = 0; i< 5; i ++); if(a> b),c = 70;” 现在我想通过运算符拆分字符串,标识符n其他如.......

输出:

运算符:

*

+ .......

标识符: ID1 ID2 ..........

他人: 对于 如果 然后 Ç...........

我知道将一个字符串分成像......这样的标记。

int main()
{
 char str[]=" b = a + c ; for (i =0;i<5;i++ )";
 char *Pch;Pch=strtok(str,"  ;");
 int i=1;
 printf("Splitting string \"%s\" into token \n",str);
 while(Pch!=NULL)
 {
     printf("[%d]    %s\n",i,Pch);
    i++;
     Pch=strtok(NULL," ; ");
 }

 return 0;
}

但是我不知道怎么用这一切来分割一个字符串......我想要你们的帮助。所有。请帮助..

2 个答案:

答案 0 :(得分:0)

在我看来,您似乎正在尝试解析特定语法。现在你必须做出选择:

  1. 自己编写解析器 - 在这种情况下查找LL解析器(http://en.wikipedia.org/wiki/LL_parser
  2. 使用工具,您可以编写作品(语法规则http://en.wikipedia.org/wiki/Production_(computer_science)),然后使用生成的代码。看看Bison(产生LALR(1)http://www.gnu.org/software/bison/)或ANTLR(产生LL(1)http://www.antlr.org/

答案 1 :(得分:0)

看起来你想让词法分析器从输入字符串中提取标记。 Flex(与Bison,也许?)是一个很好的选择。如果您愿意,您可以随时编写自己的词法分析器和/或语法分析器。

我通过挖掘FSM(有限状态机)来开始我的冒险家。

参考。标题:&#34;龙书&#34;

相关问题