private TypeIdParserScanData.SubsetEntry ParseSubset(TokenTransition expected, bool advance = true, bool error = true) { var subsetScan = currentScanner.NextToken(expected); if (subsetScan.Count == 1) { if (advance) { currentScanner.Accept(subsetScan[0]); } return((TypeIdParserScanData.SubsetEntry)subsetScan[0]); } else if (error) { throw new SyntaxErrorException(); } return(null); }
private TypeIdParserScanData.CaptureEntry ParseCaptureInternal(TokenTransition expected, bool error = true, bool advance = true) { var captureScan = currentScanner.NextToken(expected & (TypeIdParserTokens.CultureIdentifier | TypeIdParserTokens.HexByte | TypeIdParserTokens.HexQWord | TypeIdParserTokens.NestedQualifiedAssemblyIdentifier | TypeIdParserTokens.Number | TypeIdParserTokens.QualifiedAssemblyIdentifier | TypeIdParserTokens.QualifiedIdentifier | TypeIdParserTokens.Whitespace)); if (captureScan.Count == 1) { var capture = (TypeIdParserScanData.CaptureEntry)captureScan[0]; if (advance) { currentScanner.Accept(captureScan[0]); } return(capture); } else if (error) { throw new SyntaxErrorException(); } return(null); }
private string ParseCapture(TokenTransition expected, bool error = true, bool advance = true) { return(ParseCaptureInternal(expected, error, advance).Capture); }
private Tuple <string, TypeIdParserScanData.SubsetEntry, bool> ParseCaptureOrSubset(TokenTransition expected, bool advance = true, bool error = true) { var capture = ParseCaptureInternal(expected, false, advance); TypeIdParserScanData.SubsetEntry subset = null; if (capture == null) { subset = ParseSubset(expected, advance, error); } else { return(new Tuple <string, TypeIdParserScanData.SubsetEntry, bool>(capture.Capture, null, true)); } return(new Tuple <string, TypeIdParserScanData.SubsetEntry, bool>(null, subset, false)); }