本文整理匯總了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;
}