我有一个矩阵,包含我编程语言中的所有过渡。 假设我有以下代码:
if(x=0) { x=10; }
当我开始阅读'('我存储单词"如果",但是在我这样做之后我丢失了角色'('。我能做什么来保持括号? 到目前为止我的代码看起来像这样:
for (int i = 0; i <Code.Length ; i++)
{
char CurrentChar= code[i];
for (int j = 0; j < Chars.Length; j++)
{
if (CurrentChar == '(')
{
column= 15;
i--;
}
}
然后它循环并继续阅读&#39;(&#39;并且不会继续阅读其余的代码。
答案 0 :(得分:0)
你的代码循环的原因是因为你正在把我移回'('然后for循环让你回到'('。这将无限循环。
示例:
上面的代码说明并不能让我为您的困境提供解决方案。我只能告诉你导致无限循环的原因。
编辑:我能提供的最好的是关于令牌收集的一般知识。当您到达分隔符时,您将需要一个缓冲区用于当前令牌。这是一个粗略的例子(再次,没有更好的澄清,我可以做很少的帮助):
using System;
using System.Collections.Generic;
using System.Text;
public class Program
{
public static void Main(){
var code = @"if(x=0)
{
x=10;
}";
var tokens = new List<string>();
var token = new StringBuilder();
for(int i = 0; i < code.Length; i++)
{
char CurrentChar = code[i];
if(CurrentChar == '(')
{
tokens.Add(token.ToString());
token = new StringBuilder();
}
// Do checks for other tokens
else
{
token.Append(code[i]);
}
}
foreach(var tkn in tokens)
{
Console.WriteLine(tkn);
}
}
}