public static string GreenInnerType(this Antlr4ParserRuleElement elem)
 {
     if (elem.IsBlock)
     {
         if (elem.IsFixedTokenAltBlock)
         {
             return("InternalSyntaxToken");
         }
         else
         {
             return("GreenNode");
         }
     }
     else if (elem.IsToken)
     {
         return("InternalSyntaxToken");
     }
     else if (elem.IsList)
     {
         return(elem.Type.ToPascalCase() + "Green");
     }
     else
     {
         return(elem.Type.ToPascalCase() + "Green");
     }
 }
        public static string SyntaxKind(this Antlr4ParserRuleElement elem)
        {
            string result = elem.Type;

            if (result == "EOF")
            {
                return("Eof");
            }
            return(result);
        }
 public static string RedName(this Antlr4ParserRuleElement elem)
 {
     if (elem.Name == "EOF")
     {
         return("EndOfFileToken");
     }
     else
     {
         return(elem.Name.ToPascalCase());
     }
 }
 public static string Antlr4Name(this Antlr4ParserRuleElement elem)
 {
     if (elem.Name != elem.Type)
     {
         return(elem.Name);
     }
     else
     {
         if (elem.Type == "EOF")
         {
             return("Eof()");
         }
         return(elem.Name + "()");
     }
 }
        public static string PlainType(this Antlr4ParserRuleElement elem, bool simplified = true)
        {
            string typeName = elem.Type;

            if (!simplified && elem.IsSimplified)
            {
                typeName = elem.OriginalType;
            }
            if (elem.IsToken)
            {
                StringBuilder builder = new StringBuilder();
                string        name    = typeName;
                for (int i = 0; i < name.Length; i++)
                {
                    if (i == 0)
                    {
                        builder.Append(char.ToUpper(name[i]));
                    }
                    else if (name[i] == '_')
                    {
                        ++i;
                        if (i < name.Length)
                        {
                            builder.Append(char.ToUpper(name[i]));
                        }
                    }
                    else
                    {
                        builder.Append(char.ToLower(name[i]));
                    }
                }
                return(builder.ToString());
            }
            else
            {
                return(typeName.ToPascalCase());
            }
        }
 public static string RedType(this Antlr4ParserRuleElement elem)
 {
     if (elem.IsBlock)
     {
         if (elem.IsFixedTokenAltBlock)
         {
             return("SyntaxToken");
         }
         else
         {
             return("SyntaxNode");
         }
     }
     else if (elem.IsList)
     {
         if (elem.IsSeparated)
         {
             return("SeparatedSyntaxList<" + elem.Type.ToPascalCase() + "Syntax>");
         }
         else if (elem.IsToken)
         {
             return("SyntaxTokenList");
         }
         else
         {
             return("SyntaxList<" + elem.Type.ToPascalCase() + "Syntax>");
         }
     }
     else if (elem.IsToken)
     {
         return("SyntaxToken");
     }
     else
     {
         return(elem.Type.ToPascalCase() + "Syntax");
     }
 }
 public static bool IsEof(this Antlr4ParserRuleElement elem)
 {
     return(elem.Type == "EOF");
 }
        public static string FieldName(this Antlr4ParserRuleElement elem)
        {
            string result = elem.Name.ToCamelCase();

            return(result);
        }
 public static string RedInnerType(this Antlr4ParserRuleElement elem)
 {
     return(elem.Type.ToPascalCase() + "Syntax");
 }
Exemplo n.º 10
0
 public static string GreenType(this Antlr4ParserRuleElement elem, TypeKind kind, bool simplified = true)
 {
     if (!simplified && elem.IsSimplified)
     {
         return(elem.OriginalType.ToPascalCase() + "Green");
     }
     if (kind == TypeKind.Public)
     {
         if (elem.IsBlock)
         {
             if (elem.IsFixedTokenAltBlock)
             {
                 return("InternalSyntaxToken");
             }
             else
             {
                 return("GreenNode");
             }
         }
         else if (elem.IsList)
         {
             if (elem.IsToken)
             {
                 return("Microsoft.CodeAnalysis.Syntax.InternalSyntax.SyntaxList<" + elem.Type.ToPascalCase() + "Green>");
             }
             else if (elem.IsSeparated)
             {
                 return("Microsoft.CodeAnalysis.Syntax.InternalSyntax.SeparatedSyntaxList<" + elem.Type.ToPascalCase() + "Green>");
             }
             else
             {
                 return("Microsoft.CodeAnalysis.Syntax.InternalSyntax.SyntaxList<" + elem.Type.ToPascalCase() + "Green>");
             }
         }
         else if (elem.IsToken)
         {
             return("InternalSyntaxToken");
         }
         else
         {
             return(elem.Type.ToPascalCase() + "Green");
         }
     }
     else if (kind == TypeKind.Field)
     {
         if (elem.IsBlock)
         {
             if (elem.IsFixedTokenAltBlock)
             {
                 return("InternalSyntaxToken");
             }
             else
             {
                 return("GreenNode");
             }
         }
         else if (elem.IsList)
         {
             if (elem.IsToken)
             {
                 return("GreenNode");
             }
             else if (elem.IsSeparated)
             {
                 return("GreenNode");
             }
             else
             {
                 return("GreenNode");
             }
         }
         else if (elem.IsToken)
         {
             return("InternalSyntaxToken");
         }
         else
         {
             return(elem.Type.ToPascalCase() + "Green");
         }
     }
     throw new NotSupportedException("Invalid type kind.");
 }
Exemplo n.º 11
0
 public static int IndexOf(this Antlr4ParserRule rule, Antlr4ParserRuleElement elem)
 {
     return(rule.AllElements.IndexOf(elem));
 }