using Microsoft.Iris.Asm.Models; using Sprache; using System.Linq; namespace Microsoft.Iris.Asm; public static partial class Lexer { public static readonly Parser AlphanumericText = Parse.LetterOrDigit.AtLeastOnce().Text(); public static readonly Parser WordText = Parse.Letter.AtLeastOnce().Text(); public static readonly Parser WholeNumber = Parse.Digit.AtLeastOnce().Text(); public static readonly Parser Uri = Parse.LetterOrDigit.Or(Parse.Chars(":/!._-")).AtLeastOnce().Text(); public static readonly Parser StatementEnd = Parse.Char(';').Return(";").Or(Parse.LineTerminator); public static readonly Parser Import = ParseImport; public static readonly Parser Directive = ParseDirective; public static readonly Parser BodyItem = ParseBodyItem; public static readonly Parser Program = from directives in Directive.Many() from body in BodyItem.Many() select new Program(directives, body); private static IInput ConsumeWhitespace(IInput input) => Parse.WhiteSpace.Many()(input).Remainder; }