本文整理汇总了C#中Boo.Lang.Compiler.Ast.ArrayLiteralExpression类的典型用法代码示例。如果您正苦于以下问题:C# ArrayLiteralExpression类的具体用法?C# ArrayLiteralExpression怎么用?C# ArrayLiteralExpression使用的例子?那么恭喜您, 这里精选的类代码示例或许可以为您提供帮助。
ArrayLiteralExpression类属于Boo.Lang.Compiler.Ast命名空间,在下文中一共展示了ArrayLiteralExpression类的20个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于我们的系统推荐出更棒的C#代码示例。
示例1: LeaveArrayLiteralExpression
public override void LeaveArrayLiteralExpression(ArrayLiteralExpression node)
{
if (LookingFor(node))
{
Found(node.Type);
}
}
开发者ID:paveltimofeev,项目名称:documentation,代码行数:7,代码来源:ArrayLiteralFinder.cs
示例2: typesOf
public static Expression typesOf(params Expression[] args)
{
var result = new ArrayLiteralExpression();
foreach (var arg in args)
result.Items.Add(CodeBuilder.CreateTypeofExpression(arg.ExpressionType));
return result;
}
开发者ID:Rfvgyhn,项目名称:boo,代码行数:7,代码来源:MetaMethodsTest.cs
示例3: AddDependency
protected virtual void AddDependency(ArrayLiteralExpression dependencies, BinaryExpression binaryExpression)
{
StringLiteralExpression dependency;
//HACK: replace with proper AST method invocation
if (binaryExpression.Left is StringLiteralExpression)
{
dependency = new StringLiteralExpression(string.Format("{0}|{1}",
binaryExpression.Left.ToString().Trim('\''),
binaryExpression.Right.ToString().Trim('\'')));
}
else if(binaryExpression.Left is BinaryExpression)
{
var left = (BinaryExpression) binaryExpression.Left;
var package = left.Left.ToString().Trim('\'');
var version = left.Right.ToString().Trim('\'');
var dll = binaryExpression.Right.ToString().Trim('\'');
dependency = new StringLiteralExpression(string.Format("{0}|{1}|{2}",
package,
dll,
version));
}
else
throw new ArgumentOutOfRangeException(string.Format("Unknown Expression type {0} passed to RightShiftToMethodCompilerStep.AddDependency", binaryExpression.Left.GetType().Name));
dependencies.Items.Add(dependency);
}
开发者ID:emmekappa,项目名称:horn_src,代码行数:30,代码来源:RightShiftToMethodCompilerStep.cs
示例4: OnMethodInvocationExpression
protected virtual void OnMethodInvocationExpression(ArrayLiteralExpression dependencies, MethodInvocationExpression expression)
{
foreach (var arg in expression.Arguments)
{
var binaryExpression = arg as BinaryExpression;
if (binaryExpression == null || binaryExpression.Operator != BinaryOperatorType.ShiftRight)
continue;
AddDependency(dependencies, binaryExpression);
}
}
开发者ID:emmekappa,项目名称:horn_src,代码行数:11,代码来源:RightShiftToMethodCompilerStep.cs
示例5: LeaveArrayLiteralExpression
public override void LeaveArrayLiteralExpression(ArrayLiteralExpression node)
{
IType elementType = GetExpressionType(node).ElementType;
for (int i = 0; i < node.Items.Count; ++i)
{
Expression converted = Convert(elementType, node.Items[i]);
if (null != converted)
{
node.Items.ReplaceAt(i, converted);
}
}
}
开发者ID:rmartinho,项目名称:boo,代码行数:12,代码来源:InjectCallableConversions.cs
示例6: data
public static Expression data(params StringLiteralExpression[] expressions)
{
var arrayExpression = new ArrayLiteralExpression();
for (var i = 0; i < expressions.Length; i++)
arrayExpression.Items.Add(expressions[i]);
return new MethodInvocationExpression(
new ReferenceExpression("SetData"),
arrayExpression
);
}
开发者ID:emmekappa,项目名称:horn_src,代码行数:12,代码来源:BooConfigReader.cs
示例7: ExpandComplexArraySlicing
void ExpandComplexArraySlicing(SlicingExpression node)
{
if (node.Indices.Count > 1)
{
MethodInvocationExpression mie = null;
var computeEnd = new ArrayLiteralExpression();
var collapse = new ArrayLiteralExpression();
var ranges = new ArrayLiteralExpression();
for (int i = 0; i < node.Indices.Count; i++)
{
ranges.Items.Add(node.Indices[i].Begin);
if (node.Indices[i].End == null )
{
var end = new BinaryExpression(BinaryOperatorType.Addition, node.Indices[i].Begin, new IntegerLiteralExpression(1));
ranges.Items.Add(end);
BindExpressionType(end, GetExpressionType(node.Indices[i].Begin));
computeEnd.Items.Add(new BoolLiteralExpression(false));
collapse.Items.Add(new BoolLiteralExpression(true));
}
else if (node.Indices[i].End == OmittedExpression.Default)
{
var end = new IntegerLiteralExpression(0);
ranges.Items.Add(end);
BindExpressionType(end, GetExpressionType(node.Indices[i].Begin));
computeEnd.Items.Add(new BoolLiteralExpression(true));
collapse.Items.Add(new BoolLiteralExpression(false));
}
else
{
ranges.Items.Add(node.Indices[i].End);
computeEnd.Items.Add(new BoolLiteralExpression(false));
collapse.Items.Add(new BoolLiteralExpression(false));
}
}
mie = CodeBuilder.CreateMethodInvocation(MethodCache.RuntimeServices_GetMultiDimensionalRange1, node.Target, ranges);
mie.Arguments.Add(computeEnd);
mie.Arguments.Add(collapse);
BindExpressionType(ranges, TypeSystemServices.Map(typeof(int[])));
BindExpressionType(computeEnd, TypeSystemServices.Map(typeof(bool[])));
BindExpressionType(collapse, TypeSystemServices.Map(typeof(bool[])));
node.ParentNode.Replace(node, mie);
}
else
{
var slice = node.Indices[0];
var mie = IsNullOrOmitted(slice.End)
? CodeBuilder.CreateMethodInvocation(MethodCache.RuntimeServices_GetRange1, node.Target, slice.Begin)
: CodeBuilder.CreateMethodInvocation(MethodCache.RuntimeServices_GetRange2, node.Target, slice.Begin, slice.End);
node.ParentNode.Replace(node, mie);
}
}
开发者ID:0xb1dd1e,项目名称:boo,代码行数:52,代码来源:ExpandComplexSlicingExpressions.cs
示例8: DoExpand
/// <summary>
/// Perform the actual expansion of the macro
/// </summary>
/// <param name="macro">The macro.</param>
/// <returns></returns>
protected override Statement DoExpand(MacroStatement macro)
{
Block body = (Block)macro.GetAncestor(NodeType.Block);
MacroStatement macroParent = (MacroStatement)macro.GetAncestor(NodeType.MacroStatement);
if (macro.Body.Statements.Count < 1 && parent.Name=="join")
{
Errors.Add(CompilerErrorFactory.CustomError(macro.LexicalInfo, "Join " + name + " section must contain at least a single expression statement"));
return null;
}
if (macro.Arguments.Count == 0 && parent.Name!="join")
{
Errors.Add(CompilerErrorFactory.CustomError(macro.LexicalInfo, "Join " + name + " section must contain at least one key column"));
return null;
}
if (macro.Arguments.Count > 0)
{
ArrayLiteralExpression ale = new ArrayLiteralExpression(macro.LexicalInfo);
ale.Type = new ArrayTypeReference(CodeBuilder.CreateTypeReference(typeof(string)));
foreach (Expression argument in macro.Arguments)
{
ReferenceExpression expr = argument as ReferenceExpression;
if (expr == null)
{
Errors.Add(CompilerErrorFactory.CustomError(macro.LexicalInfo,"Join " + name +" section arguments must be reference expressions. Example: " + name + " name, surname"));
return null;
}
ale.Items.Add(new StringLiteralExpression(expr.Name));
}
var keyExpr = new BinaryExpression(BinaryOperatorType.Assign, new ReferenceExpression(name+"KeyColumns"), ale);
macroParent.Arguments.Add(keyExpr);
}
foreach (Statement statement in macro.Body.Statements)
{
ExpressionStatement exprStmt = statement as ExpressionStatement;
if(exprStmt==null)
{
Errors.Add(CompilerErrorFactory.CustomError(macro.LexicalInfo, "Join " + name + " section can only contain expressions"));
return null;
}
Expression expr = exprStmt.Expression;
parent.Arguments.Add(new MethodInvocationExpression(new ReferenceExpression(name), expr));
}
return null;
}
开发者ID:f4i2u1,项目名称:rhino-etl,代码行数:55,代码来源:JoinSectionMacro.cs
示例9: IsCompoundAssignment
public static bool IsCompoundAssignment(Expression expression,
out ArrayLiteralExpression assignments)
{
assignments = expression as ArrayLiteralExpression;
if (assignments != null)
{
BinaryExpression assignment;
return (assignments.Items.Count > 1 &&
IsAssignment(assignments.Items[1], out assignment));
}
return false;
}
开发者ID:oz-systems,项目名称:rhino-commons,代码行数:14,代码来源:MacroHelper.cs
示例10: CreateGetColumnsToGroupByMethod
private Method CreateGetColumnsToGroupByMethod(MacroStatement macro, IEnumerable<string> columns)
{
Method method = new Method("GetColumnsToGroupBy");
method.Modifiers = TypeMemberModifiers.Override;
ArrayLiteralExpression ale = new ArrayLiteralExpression(macro.LexicalInfo);
ale.Type = new ArrayTypeReference(CodeBuilder.CreateTypeReference(typeof(string)));
foreach (string column in columns)
{
ale.Items.Add(new StringLiteralExpression(column));
}
method.Body.Statements.Add(new ReturnStatement(ale));
return method;
}
开发者ID:nkmajeti,项目名称:rhino-tools,代码行数:14,代码来源:GroupByMacro.cs
示例11: OnArrayLiteralExpression
public override void OnArrayLiteralExpression(ArrayLiteralExpression node)
{
var need_expansion = false;
if(node.Items.Count==2 && node.Items[0].ToCodeString().StartsWith("@_")){
need_expansion = true;
}
base.OnArrayLiteralExpression(node);
if(need_expansion){
if(node.Items[0] is NullLiteralExpression){
node.ParentNode.Replace(node, node.Items[1].CloneNode());
}
else{
node.ParentNode.Replace(node, node.Items[0].CloneNode());
}
}
}
开发者ID:Qorpent,项目名称:comdiv.oldcore,代码行数:16,代码来源:TemplateBindVisitor.cs
示例12: LeaveArrayLiteralExpression
public override void LeaveArrayLiteralExpression(ArrayLiteralExpression node)
{
IType expectedType = GetExpressionType(node).ElementType;
if (!TypeSystemServices.IsPrimitiveNumber(expectedType))
return;
foreach (Expression item in node.Items)
{
IType itemType = item.ExpressionType;
if (item is LiteralExpression)
{
if (item.NodeType == NodeType.IntegerLiteralExpression)
AssertLiteralInRange((IntegerLiteralExpression) item, expectedType);
if (expectedType != itemType)
BindExpressionType(item, expectedType);
}
}
}
开发者ID:neonux,项目名称:boo,代码行数:18,代码来源:CheckLiteralValues.cs
示例13: exclude
public static Expression exclude(BlockExpression action)
{
var arrayExpression = new ArrayLiteralExpression();
foreach (Statement statement in action.Body.Statements)
{
var stringLiteral =
new StringLiteralExpression(
((MethodInvocationExpression) (((ExpressionStatement) (statement)).Expression)).Arguments[0].ToString().Trim(new[]{'\''}));
arrayExpression.Items.Add(stringLiteral);
}
return new MethodInvocationExpression(
new ReferenceExpression("SetExcludeList"),
arrayExpression
);
}
开发者ID:emmekappa,项目名称:horn_src,代码行数:18,代码来源:BooConfigReader.cs
示例14: OnBlockExpression
public override void OnBlockExpression(BlockExpression node)
{
var dependencies = new ArrayLiteralExpression();
foreach (Statement statement in node.Body.Statements)
{
var expressionStatement = (ExpressionStatement)statement;
var expression = (MethodInvocationExpression)expressionStatement.Expression;
OnMethodInvocationExpression(dependencies, expression);
}
if (dependencies.Items.Count == 0)
return;
var referenceExpression = new ReferenceExpression("AddDependencies");
var replacementMethod = new MethodInvocationExpression(referenceExpression, dependencies);
ReplaceCurrentNode(replacementMethod);
}
开发者ID:emmekappa,项目名称:horn_src,代码行数:20,代码来源:RightShiftToMethodCompilerStep.cs
示例15: OnArrayLiteralExpression
override public void OnArrayLiteralExpression(ArrayLiteralExpression node)
{
if (!_checked)
return;
base.OnArrayLiteralExpression(node);
var expectedType = GetExpressionType(node).ElementType;
if (!TypeSystemServices.IsPrimitiveNumber(expectedType))
return;
foreach (var item in node.Items)
{
var integerLiteral = item as IntegerLiteralExpression;
if (integerLiteral != null)
{
AssertLiteralInRange(integerLiteral, expectedType);
continue;
}
}
}
开发者ID:0xb1dd1e,项目名称:boo,代码行数:21,代码来源:CheckLiteralValues.cs
示例16: OnArrayLiteralExpression
public override void OnArrayLiteralExpression(ArrayLiteralExpression node)
{
IArrayType type = (IArrayType)node.ExpressionType;
EmitArray(type.ElementType, node.Items);
PushType(type);
}
开发者ID:Bombadil77,项目名称:boo,代码行数:6,代码来源:EmitAssembly.cs
示例17: array_or_expression
//throws RecognitionException, TokenStreamException
protected Expression array_or_expression()
{
Expression e;
IToken c = null;
IToken t = null;
e = null;
ArrayLiteralExpression tle = null;
try { // for error handling
switch ( LA(1) )
{
case COMMA:
{
{
c = LT(1);
match(COMMA);
if (0==inputState.guessing)
{
e = new ArrayLiteralExpression(SourceLocationFactory.ToLexicalInfo(c));
}
}
break;
}
case ESEPARATOR:
case CAST:
case CHAR:
case FALSE:
case NOT:
case NULL:
case SELF:
case SUPER:
case TRUE:
case TYPEOF:
case ID:
case TRIPLE_QUOTED_STRING:
case LPAREN:
case DOUBLE_QUOTED_STRING:
case SINGLE_QUOTED_STRING:
case LBRACK:
case SUBTRACT:
case SPLICE_BEGIN:
case DOT:
case MULTIPLY:
case LBRACE:
case QQ_BEGIN:
case LONG:
case INCREMENT:
case DECREMENT:
case ONES_COMPLEMENT:
case INT:
case RE_LITERAL:
case DOUBLE:
case FLOAT:
case TIMESPAN:
{
{
e=expression();
{
switch ( LA(1) )
{
case COMMA:
{
t = LT(1);
match(COMMA);
if (0==inputState.guessing)
{
tle = new ArrayLiteralExpression(e.LexicalInfo);
tle.Items.Add(e);
}
{
switch ( LA(1) )
{
case ESEPARATOR:
case CAST:
case CHAR:
case FALSE:
case NOT:
case NULL:
case SELF:
case SUPER:
case TRUE:
case TYPEOF:
case ID:
case TRIPLE_QUOTED_STRING:
case LPAREN:
case DOUBLE_QUOTED_STRING:
case SINGLE_QUOTED_STRING:
case LBRACK:
case SUBTRACT:
case SPLICE_BEGIN:
case DOT:
case MULTIPLY:
case LBRACE:
case QQ_BEGIN:
case LONG:
//.........这里部分代码省略.........
开发者ID:0xb1dd1e,项目名称:boo,代码行数:101,代码来源:WSABooParserBase.cs
示例18: InferArrayType
private IArrayType InferArrayType(ArrayLiteralExpression node)
{
if (null != node.Type) return (IArrayType)node.Type.Entity;
if (0 == node.Items.Count) return EmptyArrayType.Default;
return GetMostGenericType(node.Items).MakeArrayType(1);
}
开发者ID:stuman08,项目名称:boo,代码行数:6,代码来源:ProcessMethodBodies.cs
示例19: LeaveArrayLiteralExpression
public override void LeaveArrayLiteralExpression(ArrayLiteralExpression node)
{
TypeSystemServices.MapToConcreteExpressionTypes(node.Items);
IArrayType type = InferArrayType(node);
BindExpressionType(node, type);
if (node.Type == null)
node.Type = (ArrayTypeReference)CodeBuilder.CreateTypeReference(type);
else
CheckItems(type.ElementType, node.Items);
}
开发者ID:stuman08,项目名称:boo,代码行数:12,代码来源:ProcessMethodBodies.cs
示例20: tasks
public static Expression tasks(params ReferenceExpression[] expressions)
{
var arrayExpression = new ArrayLiteralExpression();
for (var i = 0; i < expressions.Length; i++)
arrayExpression.Items.Add(new StringLiteralExpression(expressions[i].Name));
return new MethodInvocationExpression(
new ReferenceExpression("SetBuildTargets"),
arrayExpression
);
}
开发者ID:emmekappa,项目名称:horn_src,代码行数:12,代码来源:BooConfigReader.cs
注:本文中的Boo.Lang.Compiler.Ast.ArrayLiteralExpression类示例整理自Github/MSDocs等源码及文档管理平台,相关代码片段筛选自各路编程大神贡献的开源项目,源码版权归原作者所有,传播和使用请参考对应项目的License;未经允许,请勿转载。 |
请发表评论