Lab 4
Lab 4
Lab #4
Huzaifa Jameel
RC 28
CS 34 A
using System.Text.RegularExpressions;
namespace WinFormsApp4
public Form1()
InitializeComponent();
keywordList.Add("int");
keywordList.Add("float");
keywordList.Add("double");
keywordList.Add("string");
keywordList.Add("char");
keywordList.Add("while");
keywordList.Add("main");
keywordList.Add("if");
keywordList.Add("else");
keywordList.Add("new");
int row = 1;
int count = 1;
int line_num = 0;
//Input Buffering
if (charinput[itr].Equals('\n'))
if (tempArray.Count != 0)
int j = 0;
fin += tempArray[j];
finalArray.Add(fin);
tempArray.Clear();
else
tempArray.Add(charinput[itr]);
}
if (tempArray.Count != 0)
int j = 0;
fin += tempArray[j];
finalArray.Add(fin);
tempArray.Clear();
tfTokens.Clear();
line_num++;
if (Match_Variable.Success || Match_Constant.Success)
tempArray.Add(lineChar[itr]);
if (lineChar[itr].Equals(' '))
if (tempArray.Count != 0)
int j = 0;
fins += tempArray[j];
finalArrayc.Add(fins);
tempArray.Clear();
if (Match_Operator.Success || Match_Special.Success)
{
if (tempArray.Count != 0)
int j = 0;
fins += tempArray[j];
finalArrayc.Add(fins);
tempArray.Clear();
finalArrayc.Add(lineChar[itr]);
if (tempArray.Count != 0)
fina += tempArray[j];
finalArrayc.Add(fina);
tempArray.Clear();
}
Match operators =
operators_Reg.Match(finalArrayc[x].ToString());
Match variables =
variable_Reg.Match(finalArrayc[x].ToString());
Match digits =
constants_Reg.Match(finalArrayc[x].ToString());
Match punctuations =
Special_Reg.Match(finalArrayc[x].ToString());
if (operators.Success)
else if (digits.Success)
tfTokens.AppendText("<digit, " +
finalArrayc[x].ToString() + "> ");
else if (punctuations.Success)
{
// if a current lexeme is a punctuation then make a token
e.g. < punc, ; >
else if (variables.Success)
if (!keywordList.Contains(finalArrayc[x].ToString()))
// if it is not a keyword
if (category1.Success)
{
symbolTable[row, 1] = row.ToString();
//index
symbolTable[row, 2] = finalArrayc[x].ToString();
//variable name
symbolTable[row, 3] = finalArrayc[x -
1].ToString();
//type
symbolTable[row, 4] = finalArrayc[x +
2].ToString();
//value
symbolTable[row, 5] = line_num.ToString();
// line number
tfSymbolTable.AppendText(symbolTable[row,
1].ToString() + " \t ");
tfSymbolTable.AppendText(symbolTable[row,
2].ToString() + " \t ");
tfSymbolTable.AppendText(symbolTable[row,
3].ToString() + " \t ");
tfSymbolTable.AppendText(symbolTable[row,
4].ToString() + " \t ");
tfSymbolTable.AppendText(symbolTable[row,
5].ToString() + " \n ");
row++;
count++;
}
else if (category2.Success)
if (!(finalArrayc[x - 1].ToString().Equals("'")
&& finalArrayc[x + 1].ToString().Equals("'")))
symbolTable[row, 1] = row.ToString(); //
index
symbolTable[row, 2] =
finalArrayc[x].ToString(); //varname
symbolTable[row, 3] = finalArrayc[x -
1].ToString(); //type
symbolTable[row, 4] = finalArrayc[x +
3].ToString(); //value
symbolTable[row, 5] = line_num.ToString(); //
line number
tfSymbolTable.AppendText(symbolTable[row,
1].ToString() + " \t ");
tfSymbolTable.AppendText(symbolTable[row,
2].ToString() + " \t ");
tfSymbolTable.AppendText(symbolTable[row,
3].ToString() + " \t ");
tfSymbolTable.AppendText(symbolTable[row,
4].ToString() + " \t ");
tfSymbolTable.AppendText(symbolTable[row,
5].ToString() + " \n ");
row++;
count++;
else
else
String ty = "Default";
ty = symbolTable[r, 3];
break;
else
tfTokens.AppendText("<keyword, " +
finalArrayc[x].ToString() + "> ");
finalArrayc.Clear();
tfTokens.AppendText("\n");
finalArrayc.Clear();
}
Output