本文整理汇总了C#中Unicoen.Processor.VisitorArgument类的典型用法代码示例。如果您正苦于以下问题:C# VisitorArgument类的具体用法?C# VisitorArgument怎么用?C# VisitorArgument使用的例子?那么恭喜您, 这里精选的类代码示例或许可以为您提供帮助。
VisitorArgument类属于Unicoen.Processor命名空间,在下文中一共展示了VisitorArgument类的11个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C#代码示例。
示例1: Visit
public override bool Visit(
UnifiedReferenceType element, VisitorArgument arg)
{
Writer.Write("/* & */");
element.Type.TryAccept(this, arg);
return false;
}
示例2: Visit
public override bool Visit(UnifiedImport element, VisitorArgument arg)
{
Writer.Write("import ");
element.Modifiers.TryAccept(this, arg);
element.Name.TryAccept(this, arg);
return false;
}
示例3: Visit
public override bool Visit(UnifiedProgram element, VisitorArgument arg)
{
element.MagicComment.TryAccept(this, arg);
Writer.WriteLine();
element.Body.TryAccept(this, arg);
return false;
}
示例4: Visit
// ブロック(UnifiedBlock)
public override bool Visit(UnifiedBlock element, VisitorArgument arg)
{
// 要素の左端に記述すべきものがある場合はそれを出力する
// プログラム全体の場合は何も出力しないが、関数の場合には中括弧が必要になるなど
if (!string.IsNullOrEmpty(arg.Decoration.MostLeft)) {
Writer.WriteLine(arg.Decoration.MostLeft);
arg = arg.IncrementDepth();
}
// ブロック内の要素を列挙する
// セミコロンが必要な要素の場合にはセミコロンを出力する
foreach (var stmt in element) {
WriteIndent(arg);
if (stmt.TryAccept(this, arg)) {
Writer.Write(";");
}
Writer.Write(arg.Decoration.EachRight);
}
// 要素の右端に記述すべきものがある場合はインデントを元に戻しそれを出力する
if (!string.IsNullOrEmpty(arg.Decoration.MostRight)) {
arg = arg.DecrementDepth();
WriteIndent(arg);
Writer.Write(arg.Decoration.MostRight);
}
return false;
}
示例5: Visit
public override bool Visit(UnifiedImport element, VisitorArgument arg)
{
Writer.Write(ImportKeyword);
element.Modifiers.TryAccept(this, arg);
element.Name.TryAccept(this, arg);
return true;
}
示例6: Visit
public override bool Visit(UnifiedLambda element, VisitorArgument arg)
{
element.Parameters.TryAccept(this, arg);
Writer.Write(" => ");
element.Body.Accept(this, arg);
return true;
}
示例7: Visit
//単項演算子
public override bool Visit(
UnifiedUnaryOperator element, VisitorArgument arg)
{
var kind = element.Kind;
switch (kind) {
case (UnifiedUnaryOperatorKind.Negate):
Writer.Write("-");
break;
case (UnifiedUnaryOperatorKind.Not):
Writer.Write("!");
break;
case (UnifiedUnaryOperatorKind.PostDecrementAssign):
case (UnifiedUnaryOperatorKind.PreDecrementAssign):
Writer.Write("--");
break;
case (UnifiedUnaryOperatorKind.PostIncrementAssign):
case (UnifiedUnaryOperatorKind.PreIncrementAssign):
Writer.Write("++");
break;
case (UnifiedUnaryOperatorKind.UnaryPlus):
Writer.Write("+");
break;
case (UnifiedUnaryOperatorKind.OnesComplement):
Writer.Write("~");
break;
case (UnifiedUnaryOperatorKind.Unknown):
Writer.Write(element.Sign);
break;
default:
throw new InvalidOperationException();
}
return false;
}
示例8: Visit
//goto文
public override bool Visit(UnifiedGoto element, VisitorArgument arg)
{
//JavaScriptではgoto文はサポートされていない
Writer.Write("/* goto ");
element.Target.TryAccept(this, arg);
Writer.Write("*/");
return true;
}
示例9: Visit
public override bool Visit(
UnifiedNamespaceDefinition element, VisitorArgument arg)
{
Writer.Write("package ");
element.Name.TryAccept(this, arg);
Writer.WriteLine(";");
element.Body.TryAccept(this, arg);
return false;
}
示例10: Visit
public override bool Visit(
UnifiedSet<UnifiedCase> element, VisitorArgument arg)
{
arg = arg.IncrementDepth();
foreach (var caseElement in element) {
WriteIndent(arg.IndentDepth);
caseElement.TryAccept(this, arg);
}
return false;
}
示例11: Visit
// enum定義(UnifiedEnumDefinition)
public override bool Visit(
UnifiedEnumDefinition element, VisitorArgument arg)
{
// enum COLOR {RED, BLUE, YELLOW};
element.Modifiers.TryAccept(this, arg);
Writer.Write("enum ");
element.Name.TryAccept(this, arg);
Writer.Write(" ");
element.Body.TryAccept(this, arg.Set(ForBlock));
return true;
}