/// <summary> /// Parse a <see cref="LineDirective"/>. /// </summary> public LineDirective(Parser parser, CodeObject parent) : base(parser, parent) { Token token = parser.NextTokenSameLine(false); // Move past the keyword if (token != null) { // Parse the directive type _directiveType = ParseLineDirectiveType(parser.TokenText); if (_directiveType != LineDirectiveType.Number) { parser.NextToken(); // Move past the directive type } else { // Parse the line number if (!int.TryParse(token.Text, out _number)) { _number = int.MaxValue; parser.AttachMessage(this, "Integer value expected", token); } token = parser.NextTokenSameLine(false); // Move past the number if (token != null) { // Get the filename _fileName = token.Text; parser.NextToken(); // Move past filename } } } MoveEOLComment(parser.LastToken); }
/// <summary> /// Format a <see cref="LineDirectiveType"/> as a string. /// </summary> public static string LineDirectiveTypeToString(LineDirectiveType directiveType) { switch (directiveType) { case LineDirectiveType.Default: return(ParseTokenDefault); case LineDirectiveType.Hidden: return(ParseTokenHidden); } return(""); }
/// <summary> /// Create a <see cref="LineDirective"/> with the specified type. /// </summary> public LineDirective(LineDirectiveType directiveType) { _directiveType = directiveType; }