public SymbolTable(CGTStructure cgtStructure, int start, int count)
 {
     list = new ArrayList();
     for (int i = start; i < start + count; i++)
     {
         SymbolRecord symbol = new SymbolRecord(cgtStructure.Records[i]);
         list.Add(symbol);
     }
 }
Esempio n. 2
0
		public SymbolTable(CGTStructure cgtStructure, int start, int count)
		{
			list = new ArrayList();
			for (int i=start;i<start+count;i++)
			{
				SymbolRecord symbol = new SymbolRecord(cgtStructure.Records[i]);
				list.Add(symbol);
			}
		}
Esempio n. 3
0
		/// <summary>
		/// Creates a new symbol or gives a reference to a symbol that is
		/// determined by the type of the symbol record in the file content.
		/// </summary>
		/// <param name="symbolRecord"></param>
		/// <returns></returns>
		static public Symbol CreateSymbol(SymbolRecord symbolRecord)
		{
			Symbol symbol;
			switch (symbolRecord.Kind)
			{
				case 0:
					symbol = new SymbolNonterminal(symbolRecord.Index,symbolRecord.Name);
					break;
				case 1:
					symbol = new SymbolTerminal(symbolRecord.Index,symbolRecord.Name);
					break;
				case 2:
					symbol = new SymbolWhiteSpace(symbolRecord.Index);
					break;
				case 3:
					symbol = SymbolCollection.EOF;
					break;
				case 4:
					symbol = new SymbolCommentStart(symbolRecord.Index);
					break;
				case 5:
					symbol = new SymbolCommentEnd(symbolRecord.Index);
					break;
				case 6:
					symbol = new SymbolCommentLine(symbolRecord.Index);
					break;
				case 7:
					symbol = SymbolCollection.ERROR;
					break;
				default:
					// this sort of symbol should never be here
					symbol = new SymbolError(-1);
					break;
			}
			return symbol;
		}