internal void Render(LuaStatementListSyntax node) { foreach (var statement in node.Statements) { statement.Render(this); } }
private List <LuaStatementSyntax> BuildDocumentationComment(CSharpSyntaxNode node) { List <LuaStatementSyntax> comments = new List <LuaStatementSyntax>(); foreach (var trivia in node.GetLeadingTrivia()) { if (trivia.IsKind(SyntaxKind.SingleLineDocumentationCommentTrivia)) { string triviaText = trivia.ToString(); if (!string.IsNullOrWhiteSpace(triviaText)) { string shortComment = LuaSyntaxNode.Tokens.ShortComment; var array = triviaText.Replace("///", string.Empty).Split(new string[] { Environment.NewLine }, StringSplitOptions.RemoveEmptyEntries); LuaStatementListSyntax codes = new LuaStatementListSyntax(); foreach (string comment in array) { var commentExpression = new LuaIdentifierNameSyntax(shortComment + ' ' + comment.Trim()); codes.Statements.Add(new LuaExpressionStatementSyntax(commentExpression)); } comments.Add(codes); } } } return(comments); }
private LuaStatementSyntax BuildCheckReturnInvocationExpression(LuaInvocationExpressionSyntax invocationExpression, SyntaxNode node) { if (IsReturnExists(node)) { var curMethodInfo = CurMethodInfoOrNull; bool isReturnVoid = curMethodInfo != null && curMethodInfo.Symbol.ReturnsVoid; var temp1 = GetTempIdentifier(node); var temp2 = isReturnVoid ? null : GetTempIdentifier(node); LuaLocalVariablesStatementSyntax localVariables = new LuaLocalVariablesStatementSyntax(); localVariables.Variables.Add(temp1); if (temp2 != null) { localVariables.Variables.Add(temp2); } LuaEqualsValueClauseListSyntax initializer = new LuaEqualsValueClauseListSyntax(); initializer.Values.Add(invocationExpression); localVariables.Initializer = initializer; LuaIfStatementSyntax ifStatement = new LuaIfStatementSyntax(temp1); if (CurFunction is LuaCheckReturnFunctionExpressionSyntax) { LuaMultipleReturnStatementSyntax returnStatement = new LuaMultipleReturnStatementSyntax(); returnStatement.Expressions.Add(LuaIdentifierNameSyntax.True); if (temp2 != null) { returnStatement.Expressions.Add(temp2); } ifStatement.Body.Statements.Add(returnStatement); } else { if (curMethodInfo != null && curMethodInfo.RefOrOutParameters.Count > 0) { LuaMultipleReturnStatementSyntax returnStatement = new LuaMultipleReturnStatementSyntax(); if (temp2 != null) { returnStatement.Expressions.Add(temp2); } returnStatement.Expressions.AddRange(curMethodInfo.RefOrOutParameters); ifStatement.Body.Statements.Add(returnStatement); } else { ifStatement.Body.Statements.Add(new LuaReturnStatementSyntax(temp2)); } } LuaStatementListSyntax statements = new LuaStatementListSyntax(); statements.Statements.Add(localVariables); statements.Statements.Add(ifStatement); return(statements); } else { return(new LuaExpressionStatementSyntax(invocationExpression)); } }
public override LuaSyntaxNode VisitUnsafeStatement(UnsafeStatementSyntax node) { LuaStatementListSyntax statements = new LuaStatementListSyntax(); statements.Statements.Add(new LuaShortCommentStatement(" " + node.UnsafeKeyword)); var block = (LuaStatementSyntax)node.Block.Accept(this); statements.Statements.Add(block); return(statements); }
public override LuaSyntaxNode VisitLockStatement(LockStatementSyntax node) { LuaStatementListSyntax statements = new LuaStatementListSyntax(); statements.Statements.Add(new LuaShortCommentStatement($" {node.LockKeyword}({node.Expression})")); LuaBlockStatementSyntax block = new LuaBlockStatementSyntax(); WriteStatementOrBlock(node.Statement, block); statements.Statements.Add(block); return(statements); }
public override LuaSyntaxNode VisitFixedStatement(FixedStatementSyntax node) { LuaStatementListSyntax statements = new LuaStatementListSyntax(); statements.Statements.Add(new LuaShortCommentStatement(" " + node.FixedKeyword)); LuaBlockStatementSyntax block = new LuaBlockStatementSyntax(); var declaration = (LuaStatementSyntax)node.Declaration.Accept(this); block.Statements.Add(declaration); WriteStatementOrBlock(node.Statement, block); statements.Statements.Add(block); return(statements); }
internal void Render(LuaStatementListSyntax node) { WriteNodes(node.Statements); }