/// <summary> /// Constructor for the Syntax Analyzer class. /// </summary> /// <param name="commandLineFileName"></param> public SyntaxAnalyzer(string commandLineFileName) { lexicalAnalyzer = new LexicalAnalyzer(commandLineFileName); symbolTable = new SymbolTable(); intermediateCodeGenerator = new IntermediateCodeGenerator(); intermediateCodeGenerator.SetupTacFile(commandLineFileName); // Prime the parser lexicalAnalyzer.GetNextToken(); }
///// <summary> ///// Method that converts a table entry to a const int entry. ///// </summary> ///// <param name="tableEntry"></param> //public void ConvertEntryToIntConstantEntry(ISymbolTableEntry tableEntry) //{ // Constant<int?> entry = tableEntry as SymbolTableEntry; // entry.Value = value; // entry.TypeOfConst = dataType; // entry.Offset = offset; // entry.TypeOfEntry = EntryType.constEntry; // entry.OffsetNotation = BpOffsetNotation; // Insert(entry); // /* Use for testing: DisplayConstIntEntry(entry); */ //} /// <summary> /// Method that converts a table entry to a var entry. /// </summary> /// <param name="tableEntry"></param> public void ConvertEntryToVariableEntry(IntermediateCodeGenerator intermediateCodeGenerator, ISymbolTableEntry tableEntry, bool isParameter) { Variable entry = tableEntry as SymbolTableEntry; entry.TypeOfVariable = dataType; entry.Offset = offset; entry.OffsetNotation = BpOffsetNotation;//isParameter ? intermediateCodeGenerator.CalculateParameterOffsetNotation(entry) : intermediateCodeGenerator.CalculateLocalVariableOffsetNotation(entry); entry.Size = size; entry.TypeOfEntry = EntryType.varEntry; entry.OffsetNotation = BpOffsetNotation; Insert(entry); /* Use for testing: DisplayVariableEntry(entry); */ }