public static Argument Evaluate(CompilerState state, SyntaxNode node) { if (state is null) { throw new ArgumentNullException(nameof(state)); } if (node is null) { throw new ArgumentNullException(nameof(node)); } var result = node switch { TextSyntax text => textInstruction.Evaluate(state, text), QuoteSyntax quote => quoteInstruction.Evaluate(state, quote), StringLiteralSyntax stringLiteral => stringInstruction.Evaluate(state, stringLiteral), ArgumentSyntax argumentSyntax => argumentInstruction.Evaluate(state, argumentSyntax), CommandSyntax command => commandInstruction.Evaluate(state, command), ObjectSyntax objectSyntax => objectCreationInstruction.Evaluate(state, objectSyntax), FieldSyntax fieldSyntax => fieldInstruction.Evaluate(state, fieldSyntax), ArraySyntax arraySyntax => arrayInstruction.Evaluate(state, arraySyntax), PercentSyntax percentSyntax => percentInstruction.Evaluate(state, percentSyntax), ListSyntax list => blockInstruction.Evaluate(state, list), CommentSyntax _ => null, _ => throw new ArgumentException($"Evaluation of node type {node.GetType().Name} not implemented.", nameof(node)), }; return(new Argument(node, result)); }
private static SyntaxNode ParseMultilineComment(ParserContext context) { var token = context.Tokens.Dequeue(); var span = token.Span; var sb = new StringBuilder(); while (token.Type != TokenType.None) { sb.Append(token.Content); if (token.Type == TokenType.AsteriskSlash) { context.Tokens.Dequeue(); break; } token = context.Tokens.Dequeue(); } var comment = new CommentSyntax { Span = span.WithEnd(token.Span.End), Multiline = true, Comment = sb.ToString() }; if (token.Type == TokenType.None) { var endSpan = token.Span; context.Issues.Add(new TextSpan(endSpan.End - 1, 1, endSpan.Line), ParserIssueType.Error, "Expected end of multiline comment */"); } return(comment); }
public void Render(CommentSyntax comment) { if (_comments) { Render(comment.DoubleForwardSlashToken); if (comment.EmptyCommentNode is null) { Render(comment.CommentNode); } } WriteNewline(); }
public UxComment(CommentSyntax syntax) { Syntax = syntax ?? throw new ArgumentNullException(nameof(syntax)); }