private GenCompactProfileParser(GenDataDef genDataDef, CompactProfileScanner scan) : base(new GenProfileParams(genDataDef)) { Scan = scan; try { _compactPrimaryBodyParser = new CompactPrimaryBodyParser(this); _compactSecondaryBodyParser = new CompactSecondaryBodyParser(this); ScanBody(ClassId, Body, this, Profile); } finally { Scan.Dispose(); } _parameterSeparator = new CharSet(" " + Scan.Delimiter); }
private void ScanBody(int classId, GenSegBody body, GenContainerFragmentBase parentContainer, ContainerFragment containerFragment) { var saveClassId = GenDataDef.CurrentClassId; GenDataDef.CurrentClassId = classId; if (!Scan.Eof) { TokenType t; CompactPrimaryBodyParser.ScanPartialBody(classId, body, parentContainer, containerFragment, out t); if (t == TokenType.Secondary) { Scan.SkipChar(); CompactSecondaryBodyParser.ScanPartialBody(classId, body, parentContainer, containerFragment, out t); } if (t != TokenType.Close) { if (Scan.Eof && classId != 0) { //throw new Exception("<<<<Missing Segment end bracket>>>>"); OutputText(parentContainer, true, "<<<<Missing Segment end bracket>>>>"); } if (!Scan.Eof) { //throw new Exception("<<<<Unknown text in profile>>>>"); OutputText(parentContainer, true, "<<<<Unknown text in profile>>>>"); } } else { if (Scan.CheckChar(']')) { Scan.SkipChar(); } } } else if (classId != 0) { //throw new Exception("<<<<<Missing Segment end bracket>>>>>"); OutputText(parentContainer, true, "<<<<Unknown text in profile>>>>"); } GenDataDef.CurrentClassId = saveClassId; }