コード例 #1
0
ファイル: Reader.cs プロジェクト: CSRedRat/pascalabcnet
		/// <summary>
		/// Reads a CGT and creates all the objects needed to create
		/// a tokenizer and parser at a later time.
		/// </summary>
		/// <param name="stream">The CGT stream.</param>
		private void ReadFile(Stream stream)
		{
			try
			{
				Reset();
				this.stream = stream;
				CalithaBinReader reader = new CalithaBinReader(stream);
				string header = "";
				try
				{
					header = reader.ReadUnicodeString();
					if (! header.StartsWith("GOLD"))
						throw new CGTStructureException("File header is invalid");
				}
				catch (EndOfStreamException e)
				{
					throw new CGTStructureException("File header is invalid",e);
				}
				RecordCollection records = new RecordCollection();
				while (!(stream.Position == stream.Length))
				{
					records.Add(ReadRecord(reader));
				}
				structure = new CGTStructure(header,records);
				content = new CGTContent(structure);
				dfaStates = CreateDFAStates(content);
				parserStates = CreateParserStates(content);
			}
			finally
			{
				stream.Close();
			}
		}
コード例 #2
0
ファイル: Entry.cs プロジェクト: langpavel/LPS-old
 public StringEntry(CalithaBinReader reader)
 {
     value = reader.ReadUnicodeString();
 }