package org.whole.lang.grammars.codebase;
import org.whole.lang.builders.IBuilderOperation;
import org.whole.lang.templates.AbstractTemplateFactory;
public class ObjectiveCGrammar extends AbstractTemplateFactory<org.whole.lang.grammars.model.Grammar> {
public void apply(IBuilderOperation op) {
org.whole.lang.grammars.builders.IGrammarsBuilder b0 = (org.whole.lang.grammars.builders.IGrammarsBuilder) op.wGetBuilder(org.whole.lang.grammars.reflect.GrammarsLanguageKit.URI);
b0.Grammar_();
b0.Name("ObjectiveCGrammar");
b0.LanguageDescriptor_();
b0.URI("whole:org.whole.lang.objectivec:ObjectiveC:1.0.0");
b0.Namespace("org.whole.lang.objectivec");
b0.Name("ObjectiveC");
b0.Version("1.0.0");
b0._LanguageDescriptor();
b0.NonTerminal("CompilationUnit");
b0.LiteralTerminal_();
b0.RegExp("(?m)(\\p{javaWhitespace}|(/\\*([^*]*|\\*[^/])*\\*/)|(//.*$))*");
b0.Category("SEPARATOR");
b0.Literal("");
b0._LiteralTerminal();
b0.Productions_(0);
b0._Productions();
b0.Productions_(35);
b0.Production_();
b0.NonTerminal("CompilationUnit");
b0.Concatenate_(1);
b0.As_();
b0.Production_();
b0.NonTerminal("ToplevelDeclarations");
b0.Repeat_();
b0.Size(1);
b0.Unbounded();
org.whole.lang.commons.builders.ICommonsBuilder b1 = (org.whole.lang.commons.builders.ICommonsBuilder) op.wGetBuilder(org.whole.lang.commons.reflect.CommonsLanguageKit.URI);
b1.Resolver();
b0.Production_();
b0.NonTerminal("ToplevelDeclarationOrDirective");
b0.Choose_(3);
b0.Production_();
b0.NonTerminal("ToplevelDeclaration");
b0.Concatenate_(2);
b0.Choose_(9);
b0.Production_();
b0.NonTerminal("ForwardClassDeclaration");
b0.Concatenate_(4);
b0.LiteralTerminal_();
b0.RegExp("@class");
b0.Category("DELIMITER");
b0.Literal("@class");
b0._LiteralTerminal();
b0.Space();
b0.As_();
b0.NonTerminal("Names");
b0.Name("names");
b0._As();
b0.LiteralTerminal_();
b0.RegExp(";");
b0.Category("DELIMITER");
b0.Literal(";");
b0._LiteralTerminal();
b0._Concatenate();
b1.Resolver();
b0._Production();
b0.Production_();
b0.NonTerminal("ForwardProtocolDeclaration");
b0.Concatenate_(4);
b0.LiteralTerminal_();
b0.RegExp("@protocol");
b0.Category("DELIMITER");
b0.Literal("@protocol");
b0._LiteralTerminal();
b0.Space();
b0.As_();
b0.NonTerminal("Names");
b0.Name("names");
b0._As();
b0.LiteralTerminal_();
b0.RegExp(";");
b0.Category("DELIMITER");
b0.Literal(";");
b0._LiteralTerminal();
b0._Concatenate();
b1.Resolver();
b0._Production();
b0.NonTerminal("ClassInterface");
b0.NonTerminal("CategoryInterface");
b0.NonTerminal("ClassImplementation");
b0.NonTerminal("CategoryImplementation");
b0.NonTerminal("FormalProtocol");
b0.NonTerminal("FunctionDefinition");
b0.NonTerminal("Declaration");
b0._Choose();
b0.NewLine();
b0._Concatenate();
b1.Resolver();
b0._Production();
b0.NonTerminal("PreprocessorDirective");
b0.NonTerminal("Macro");
b0._Choose();
b1.Resolver();
b0._Production();
b0._Repeat();
b1.Resolver();
b0._Production();
b0.Name("declarations");
b0._As();
b0._Concatenate();
b1.Resolver();
b0._Production();
b0.Production_();
b0.NonTerminal("PreprocessorDirective");
b0.Concatenate_(2);
b0.Choose_(13);
b0.Production_();
b0.NonTerminal("Import");
b0.Concatenate_(4);
b0.LiteralTerminal_();
b0.RegExp("#");
b0.Category("DELIMITER");
b0.Literal("#");
b0._LiteralTerminal();
b0.LiteralTerminal_();
b0.RegExp("import");
b0.Category("DELIMITER");
b0.Literal("import");
b0._LiteralTerminal();
b0.Space();
b0.NonTerminal("Unit");
b0._Concatenate();
b1.Resolver();
b0._Production();
b0.Production_();
b0.NonTerminal("Include");
b0.Concatenate_(4);
b0.LiteralTerminal_();
b0.RegExp("#");
b0.Category("DELIMITER");
b0.Literal("#");
b0._LiteralTerminal();
b0.LiteralTerminal_();
b0.RegExp("include");
b0.Category("DELIMITER");
b0.Literal("include");
b0._LiteralTerminal();
b0.Space();
b0.NonTerminal("Unit");
b0._Concatenate();
b1.Resolver();
b0._Production();
b0.Production_();
b0.NonTerminal("Define");
b0.Concatenate_(7);
b0.LiteralTerminal_();
b0.RegExp("#");
b0.Category("DELIMITER");
b0.Literal("#");
b0._LiteralTerminal();
b0.LiteralTerminal_();
b0.RegExp("define");
b0.Category("DELIMITER");
b0.Literal("define");
b0._LiteralTerminal();
b0.Space();
b0.As_();
b0.NonTerminal("Identifier");
b0.Name("name");
b0._As();
b0.Optional_();
b0.As_();
b0.Concatenate_(3);
b0.LiteralTerminal_();
b0.RegExp("\\Q(\\E");
b0.Category("DELIMITER");
b0.Literal("(");
b0._LiteralTerminal();
b0.Repeat_();
b0.Size(0);
b0.Unbounded();
b0.Concatenate_(2);
b0.LiteralTerminal_();
b0.RegExp(",");
b0.Category("DELIMITER");
b0.Literal(",");
b0._LiteralTerminal();
b0.Space();
b0._Concatenate();
b0.Production_();
b0.NonTerminal("MacroParameter");
b0.Choose_(2);
b0.NonTerminal("Identifier");
b0.Production_();
b0.NonTerminal("VA_ARGS");
b0.LiteralTerminal_();
b0.RegExp("\\Q...\\E");
b0.Category("DELIMITER");
b0.Literal("...");
b0._LiteralTerminal();
b1.Resolver();
b0._Production();
b0._Choose();
b1.Resolver();
b0._Production();
b0._Repeat();
b0.LiteralTerminal_();
b0.RegExp("\\Q)\\E");
b0.Category("DELIMITER");
b0.Literal(")");
b0._LiteralTerminal();
b0._Concatenate();
b0.Name("macroParameters");
b0._As();
b0._Optional();
b0.Space();
b0.As_();
b0.Split_();
b0.ByDelimiter_();
b0.RegExp("(?m:[^\\\\]($))");
b0._ByDelimiter();
b0.Production_();
b0.NonTerminal("MacroReplacement");
b0.DataTerminal_();
b0.RegExp("(?s:.*)");
b0.Category("LITERAL");
b0.Format("%s");
b0._DataTerminal();
b1.Resolver();
b0._Production();
b0._Split();
b0.Name("replacement");
b0._As();
b0._Concatenate();
b1.Resolver();
b0._Production();
b0.Production_();
b0.NonTerminal("Ifdef");
b0.Concatenate_(4);
b0.LiteralTerminal_();
b0.RegExp("#");
b0.Category("DELIMITER");
b0.Literal("#");
b0._LiteralTerminal();
b0.LiteralTerminal_();
b0.RegExp("ifdef");
b0.Category("DELIMITER");
b0.Literal("ifdef");
b0._LiteralTerminal();
b0.Space();
b0.As_();
b0.NonTerminal("Identifier");
b0.Name("name");
b0._As();
b0._Concatenate();
b1.Resolver();
b0._Production();
b0.Production_();
b0.NonTerminal("Ifndef");
b0.Concatenate_(4);
b0.LiteralTerminal_();
b0.RegExp("#");
b0.Category("DELIMITER");
b0.Literal("#");
b0._LiteralTerminal();
b0.LiteralTerminal_();
b0.RegExp("ifndef");
b0.Category("DELIMITER");
b0.Literal("ifndef");
b0._LiteralTerminal();
b0.Space();
b0.As_();
b0.NonTerminal("Identifier");
b0.Name("name");
b0._As();
b0._Concatenate();
b1.Resolver();
b0._Production();
b0.Production_();
b0.NonTerminal("Undef");
b0.Concatenate_(4);
b0.LiteralTerminal_();
b0.RegExp("#");
b0.Category("DELIMITER");
b0.Literal("#");
b0._LiteralTerminal();
b0.LiteralTerminal_();
b0.RegExp("undef");
b0.Category("DELIMITER");
b0.Literal("undef");
b0._LiteralTerminal();
b0.Space();
b0.As_();
b0.NonTerminal("Identifier");
b0.Name("name");
b0._As();
b0._Concatenate();
b1.Resolver();
b0._Production();
b0.Production_();
b0.NonTerminal("If");
b0.Concatenate_(4);
b0.LiteralTerminal_();
b0.RegExp("#");
b0.Category("DELIMITER");
b0.Literal("#");
b0._LiteralTerminal();
b0.LiteralTerminal_();
b0.RegExp("if");
b0.Category("DELIMITER");
b0.Literal("if");
b0._LiteralTerminal();
b0.Space();
b0.As_();
b0.Production_();
b0.NonTerminal("MacroCondition");
b0.Split_();
b0.ByDelimiter_();
b0.RegExp("(?m:[^\\\\]($))");
b0._ByDelimiter();
b0.DataTerminal_();
b0.RegExp("(?s:.+)");
b0.Category("LITERAL");
b0.Format("%s");
b0._DataTerminal();
b0._Split();
b1.Resolver();
b0._Production();
b0.Name("condition");
b0._As();
b0._Concatenate();
b1.Resolver();
b0._Production();
b0.Production_();
b0.NonTerminal("Elif");
b0.Concatenate_(4);
b0.LiteralTerminal_();
b0.RegExp("#");
b0.Category("DELIMITER");
b0.Literal("#");
b0._LiteralTerminal();
b0.LiteralTerminal_();
b0.RegExp("elif");
b0.Category("DELIMITER");
b0.Literal("elif");
b0._LiteralTerminal();
b0.Space();
b0.As_();
b0.NonTerminal("MacroCondition");
b0.Name("condition");
b0._As();
b0._Concatenate();
b1.Resolver();
b0._Production();
b0.Production_();
b0.NonTerminal("Else");
b0.Concatenate_(2);
b0.LiteralTerminal_();
b0.RegExp("#");
b0.Category("DELIMITER");
b0.Literal("#");
b0._LiteralTerminal();
b0.LiteralTerminal_();
b0.RegExp("else");
b0.Category("DELIMITER");
b0.Literal("else");
b0._LiteralTerminal();
b0._Concatenate();
b1.Resolver();
b0._Production();
b0.Production_();
b0.NonTerminal("Endif");
b0.Concatenate_(2);
b0.LiteralTerminal_();
b0.RegExp("#");
b0.Category("DELIMITER");
b0.Literal("#");
b0._LiteralTerminal();
b0.LiteralTerminal_();
b0.RegExp("endif");
b0.Category("DELIMITER");
b0.Literal("endif");
b0._LiteralTerminal();
b0._Concatenate();
b1.Resolver();
b0._Production();
b0.Production_();
b0.NonTerminal("Warning");
b0.Concatenate_(4);
b0.LiteralTerminal_();
b0.RegExp("#");
b0.Category("DELIMITER");
b0.Literal("#");
b0._LiteralTerminal();
b0.LiteralTerminal_();
b0.RegExp("warning");
b0.Category("DELIMITER");
b0.Literal("warning");
b0._LiteralTerminal();
b0.Space();
b0.As_();
b0.Production_();
b0.NonTerminal("MacroMessage");
b0.Split_();
b0.ByDelimiter_();
b0.RegExp("(?m:[^\\\\]($))");
b0._ByDelimiter();
b0.DataTerminal_();
b0.RegExp("(?s:.+)");
b0.Category("LITERAL");
b0.Format("%s");
b0._DataTerminal();
b0._Split();
b1.Resolver();
b0._Production();
b0.Name("message");
b0._As();
b0._Concatenate();
b1.Resolver();
b0._Production();
b0.Production_();
b0.NonTerminal("Error");
b0.Concatenate_(4);
b0.LiteralTerminal_();
b0.RegExp("#");
b0.Category("DELIMITER");
b0.Literal("#");
b0._LiteralTerminal();
b0.LiteralTerminal_();
b0.RegExp("error");
b0.Category("DELIMITER");
b0.Literal("error");
b0._LiteralTerminal();
b0.Space();
b0.As_();
b0.NonTerminal("MacroMessage");
b0.Name("message");
b0._As();
b0._Concatenate();
b1.Resolver();
b0._Production();
b0.Production_();
b0.NonTerminal("Pragma");
b0.Concatenate_(4);
b0.LiteralTerminal_();
b0.RegExp("#");
b0.Category("DELIMITER");
b0.Literal("#");
b0._LiteralTerminal();
b0.LiteralTerminal_();
b0.RegExp("pragma");
b0.Category("DELIMITER");
b0.Literal("pragma");
b0._LiteralTerminal();
b0.Space();
b0.As_();
b0.NonTerminal("MacroMessage");
b0.Name("message");
b0._As();
b0._Concatenate();
b1.Resolver();
b0._Production();
b0._Choose();
b0.NewLine();
b0._Concatenate();
b1.Resolver();
b0._Production();
b0.Production_();
b0.NonTerminal("Unit");
b0.Choose_(2);
b0.Production_();
b0.NonTerminal("SystemUnit");
b0.Concatenate_(3);
b0.LiteralTerminal_();
b0.RegExp("<");
b0.Category("DELIMITER");
b0.Literal("<");
b0._LiteralTerminal();
b0.As_();
b0.Split_();
b0.ByDelimiter_();
b0.RegExp(">");
b0._ByDelimiter();
b0.NonTerminal("UnitName");
b0._Split();
b0.Name("unitName");
b0._As();
b0.LiteralTerminal_();
b0.RegExp(">");
b0.Category("DELIMITER");
b0.Literal(">");
b0._LiteralTerminal();
b0._Concatenate();
b1.Resolver();
b0._Production();
b0.Production_();
b0.NonTerminal("UserUnit");
b0.Concatenate_(3);
b0.LiteralTerminal_();
b0.RegExp("\"");
b0.Category("DELIMITER");
b0.Literal("\"");
b0._LiteralTerminal();
b0.As_();
b0.Split_();
b0.ByDelimiter_();
b0.RegExp("\"");
b0._ByDelimiter();
b0.NonTerminal("UnitName");
b0._Split();
b0.Name("unitName");
b0._As();
b0.LiteralTerminal_();
b0.RegExp("\"");
b0.Category("DELIMITER");
b0.Literal("\"");
b0._LiteralTerminal();
b0._Concatenate();
b1.Resolver();
b0._Production();
b0._Choose();
b1.Resolver();
b0._Production();
b0.Production_();
b0.NonTerminal("UnitName");
b0.DataTerminal_();
b0.RegExp("(?s:.+)");
b0.Category("LITERAL");
b0.Format("%s");
b0._DataTerminal();
b1.Resolver();
b0._Production();
b0.Production_();
b0.NonTerminal("ClassInterface");
b0.Concatenate_(13);
b0.LiteralTerminal_();
b0.RegExp("@interface");
b0.Category("DELIMITER");
b0.Literal("@interface");
b0._LiteralTerminal();
b0.Space();
b0.As_();
b0.NonTerminal("Identifier");
b0.Name("className");
b0._As();
b0.Optional_();
b0.As_();
b0.Concatenate_(4);
b0.Space();
b0.LiteralTerminal_();
b0.RegExp(":");
b0.Category("DELIMITER");
b0.Literal(":");
b0._LiteralTerminal();
b0.Space();
b0.NonTerminal("Identifier");
b0._Concatenate();
b0.Name("superclassName");
b0._As();
b0._Optional();
b0.Optional_();
b0.As_();
b0.Concatenate_(2);
b0.LiteralTerminal_();
b0.RegExp("\\Q(\\E");
b0.Category("DELIMITER");
b0.Literal("(");
b0._LiteralTerminal();
b0.LiteralTerminal_();
b0.RegExp("\\Q)\\E");
b0.Category("DELIMITER");
b0.Literal(")");
b0._LiteralTerminal();
b0._Concatenate();
b0.Name("extension");
b0._As();
b0._Optional();
b0.Optional_();
b0.As_();
b0.Concatenate_(4);
b0.Space();
b0.LiteralTerminal_();
b0.RegExp("<");
b0.Category("DELIMITER");
b0.Literal("<");
b0._LiteralTerminal();
b0.NonTerminal("Names");
b0.LiteralTerminal_();
b0.RegExp(">");
b0.Category("DELIMITER");
b0.Literal(">");
b0._LiteralTerminal();
b0._Concatenate();
b0.Name("protocolsNames");
b0._As();
b0._Optional();
b0.Optional_();
b0.As_();
b0.Production_();
b0.NonTerminal("InstanceVariableDeclarations");
b0.Concatenate_(5);
b0.Space();
b0.LiteralTerminal_();
b0.RegExp("\\Q{\\E");
b0.Category("DELIMITER");
b0.Literal("{");
b0._LiteralTerminal();
b0.NewLine();
b0.Repeat_();
b0.Size(0);
b0.Unbounded();
b1.Resolver();
b0.NonTerminal("VariableOrVisibilityDeclaration");
b0._Repeat();
b0.LiteralTerminal_();
b0.RegExp("}");
b0.Category("DELIMITER");
b0.Literal("}");
b0._LiteralTerminal();
b0._Concatenate();
b1.Resolver();
b0._Production();
b0.Name("instanceVariableDeclarations");
b0._As();
b0._Optional();
b0.NewLine();
b0.NewLine();
b0.As_();
b0.Production_();
b0.NonTerminal("MethodDeclarations");
b0.Repeat_();
b0.Size(0);
b0.Unbounded();
b1.Resolver();
b0.Production_();
b0.NonTerminal("MethodOrPropertyDeclaration");
b0.Choose_(4);
b0.NonTerminal("MethodDeclaration");
b0.NonTerminal("PropertyDeclaration");
b0.NonTerminal("TypeDeclaration");
b0.NonTerminal("PreprocessorDirective");
b0._Choose();
b1.Resolver();
b0._Production();
b0._Repeat();
b1.Resolver();
b0._Production();
b0.Name("methodDeclarations");
b0._As();
b0.NewLine();
b0.LiteralTerminal_();
b0.RegExp("@end");
b0.Category("DELIMITER");
b0.Literal("@end");
b0._LiteralTerminal();
b0.NewLine();
b0._Concatenate();
b1.Resolver();
b0._Production();
b0.Production_();
b0.NonTerminal("ClassImplementation");
b0.Concatenate_(11);
b0.LiteralTerminal_();
b0.RegExp("@implementation");
b0.Category("DELIMITER");
b0.Literal("@implementation");
b0._LiteralTerminal();
b0.Space();
b0.As_();
b0.NonTerminal("Identifier");
b0.Name("className");
b0._As();
b0.Optional_();
b0.As_();
b0.Concatenate_(4);
b0.Space();
b0.LiteralTerminal_();
b0.RegExp(":");
b0.Category("DELIMITER");
b0.Literal(":");
b0._LiteralTerminal();
b0.Space();
b0.NonTerminal("Identifier");
b0._Concatenate();
b0.Name("superclassName");
b0._As();
b0._Optional();
b0.Optional_();
b0.As_();
b0.NonTerminal("InstanceVariableDeclarations");
b0.Name("instanceVariableDeclarations");
b0._As();
b0._Optional();
b0.NewLine();
b0.NewLine();
b0.As_();
b0.Production_();
b0.NonTerminal("MethodImplementations");
b0.Repeat_();
b0.Size(0);
b0.Unbounded();
b1.Resolver();
b0.Production_();
b0.NonTerminal("MethodOrPropertyImplementation");
b0.Choose_(3);
b0.Concatenate_(2);
b0.NonTerminal("MethodImplementation");
b0.NewLine();
b0._Concatenate();
b0.NonTerminal("PropertyImplementation");
b0.NonTerminal("PreprocessorDirective");
b0._Choose();
b1.Resolver();
b0._Production();
b0._Repeat();
b1.Resolver();
b0._Production();
b0.Name("methodImplementations");
b0._As();
b0.NewLine();
b0.LiteralTerminal_();
b0.RegExp("@end");
b0.Category("DELIMITER");
b0.Literal("@end");
b0._LiteralTerminal();
b0.NewLine();
b0._Concatenate();
b1.Resolver();
b0._Production();
b0.Production_();
b0.NonTerminal("CategoryInterface");
b0.Concatenate_(11);
b0.LiteralTerminal_();
b0.RegExp("@interface");
b0.Category("DELIMITER");
b0.Literal("@interface");
b0._LiteralTerminal();
b0.Space();
b0.As_();
b0.NonTerminal("Identifier");
b0.Name("className");
b0._As();
b0.As_();
b0.Concatenate_(3);
b0.LiteralTerminal_();
b0.RegExp("\\Q(\\E");
b0.Category("DELIMITER");
b0.Literal("(");
b0._LiteralTerminal();
b0.NonTerminal("Identifier");
b0.LiteralTerminal_();
b0.RegExp("\\Q)\\E");
b0.Category("DELIMITER");
b0.Literal(")");
b0._LiteralTerminal();
b0._Concatenate();
b0.Name("categoryName");
b0._As();
b0.Optional_();
b0.As_();
b0.Concatenate_(4);
b0.Space();
b0.LiteralTerminal_();
b0.RegExp("<");
b0.Category("DELIMITER");
b0.Literal("<");
b0._LiteralTerminal();
b0.NonTerminal("Names");
b0.LiteralTerminal_();
b0.RegExp(">");
b0.Category("DELIMITER");
b0.Literal(">");
b0._LiteralTerminal();
b0._Concatenate();
b0.Name("protocolsNames");
b0._As();
b0._Optional();
b0.NewLine();
b0.NewLine();
b0.As_();
b0.NonTerminal("MethodDeclarations");
b0.Name("methodDeclarations");
b0._As();
b0.NewLine();
b0.LiteralTerminal_();
b0.RegExp("@end");
b0.Category("DELIMITER");
b0.Literal("@end");
b0._LiteralTerminal();
b0.NewLine();
b0._Concatenate();
b1.Resolver();
b0._Production();
b0.Production_();
b0.NonTerminal("CategoryImplementation");
b0.Concatenate_(10);
b0.LiteralTerminal_();
b0.RegExp("@implementation");
b0.Category("DELIMITER");
b0.Literal("@implementation");
b0._LiteralTerminal();
b0.Space();
b0.As_();
b0.NonTerminal("Identifier");
b0.Name("className");
b0._As();
b0.Optional_();
b0.As_();
b0.Concatenate_(3);
b0.LiteralTerminal_();
b0.RegExp("\\Q(\\E");
b0.Category("DELIMITER");
b0.Literal("(");
b0._LiteralTerminal();
b0.NonTerminal("Identifier");
b0.LiteralTerminal_();
b0.RegExp("\\Q)\\E");
b0.Category("DELIMITER");
b0.Literal(")");
b0._LiteralTerminal();
b0._Concatenate();
b0.Name("categoryName");
b0._As();
b0._Optional();
b0.NewLine();
b0.NewLine();
b0.As_();
b0.NonTerminal("MethodImplementations");
b0.Name("methodImplementations");
b0._As();
b0.NewLine();
b0.LiteralTerminal_();
b0.RegExp("@end");
b0.Category("DELIMITER");
b0.Literal("@end");
b0._LiteralTerminal();
b0.NewLine();
b0._Concatenate();
b1.Resolver();
b0._Production();
b0.Production_();
b0.NonTerminal("FunctionDefinition");
b0.Concatenate_(6);
b0.As_();
b0.NonTerminal("DeclarationQualifiers");
b0.Name("qualifiers");
b0._As();
b0.As_();
b0.NonTerminal("TypeSpecifier");
b0.Name("specifier");
b0._As();
b0.Space();
b0.NonTerminal("Declarator");
b0.NonTerminal("CompoundStatement");
b0.NewLine();
b0._Concatenate();
b1.Resolver();
b0._Production();
b0.Production_();
b0.NonTerminal("Declaration");
b0.Concatenate_(6);
b0.As_();
b0.NonTerminal("DeclarationQualifiers");
b0.Name("qualifiers");
b0._As();
b0.As_();
b0.NonTerminal("TypeSpecifier");
b0.Name("specifier");
b0._As();
b0.As_();
b0.Repeat_();
b0.Size(0);
b0.Unbounded();
b0.Concatenate_(2);
b0.LiteralTerminal_();
b0.RegExp(",");
b0.Category("DELIMITER");
b0.Literal(",");
b0._LiteralTerminal();
b0.Space();
b0._Concatenate();
b0.Production_();
b0.NonTerminal("DeclaratorWithInitializer");
b0.Concatenate_(2);
b0.NonTerminal("Declarator");
b0.Optional_();
b0.Production_();
b0.NonTerminal("Initializer");
b0.Concatenate_(4);
b0.Space();
b0.LiteralTerminal_();
b0.RegExp("=");
b0.Category("DELIMITER");
b0.Literal("=");
b0._LiteralTerminal();
b0.Space();
b0.Choose_(2);
b0.NonTerminal("Expression");
b0.Production_();
b0.NonTerminal("Initializers");
b0.Concatenate_(3);
b0.LiteralTerminal_();
b0.RegExp("\\Q{\\E");
b0.Category("DELIMITER");
b0.Literal("{");
b0._LiteralTerminal();
b0.Repeat_();
b0.Size(1);
b0.Unbounded();
b0.Concatenate_(2);
b0.LiteralTerminal_();
b0.RegExp(",");
b0.Category("DELIMITER");
b0.Literal(",");
b0._LiteralTerminal();
b0.Space();
b0._Concatenate();
b0.NonTerminal("Initializer");
b0._Repeat();
b0.LiteralTerminal_();
b0.RegExp("}");
b0.Category("DELIMITER");
b0.Literal("}");
b0._LiteralTerminal();
b0._Concatenate();
b1.Resolver();
b0._Production();
b0._Choose();
b0._Concatenate();
b1.Resolver();
b0._Production();
b0._Optional();
b0._Concatenate();
b1.Resolver();
b0._Production();
b0._Repeat();
b0.Name("declarators");
b0._As();
b0.Optional_();
b0.As_();
b0.Split_();
b0.ByDelimiter_();
b0.RegExp(";");
b0._ByDelimiter();
b0.Concatenate_(2);
b0.Space();
b0.NonTerminal("Macro");
b0._Concatenate();
b0._Split();
b0.Name("macro");
b0._As();
b0._Optional();
b0.LiteralTerminal_();
b0.RegExp(";");
b0.Category("DELIMITER");
b0.Literal(";");
b0._LiteralTerminal();
b0.NewLine();
b0._Concatenate();
b1.Resolver();
b0._Production();
b0.Production_();
b0.NonTerminal("TypeDeclaration");
b0.Concatenate_(5);
b0.As_();
b0.NonTerminal("DeclarationQualifiers");
b0.Name("qualifiers");
b0._As();
b0.As_();
b0.NonTerminal("TypeSpecifier");
b0.Name("specifier");
b0._As();
b0.Optional_();
b0.As_();
b0.NonTerminal("Identifier");
b0.Name("declarator");
b0._As();
b0._Optional();
b0.LiteralTerminal_();
b0.RegExp(";");
b0.Category("DELIMITER");
b0.Literal(";");
b0._LiteralTerminal();
b0.NewLine();
b0._Concatenate();
b1.Resolver();
b0._Production();
b0.Production_();
b0.NonTerminal("VariableOrVisibilityDeclaration");
b0.Choose_(4);
b0.Concatenate_(2);
b0.Production_();
b0.NonTerminal("VisibilitySpecification");
b0.Choose_(4);
b0.As_();
b0.LiteralTerminal_();
b0.RegExp("@private");
b0.Category("DELIMITER");
b0.Literal("@private");
b0._LiteralTerminal();
b0.Name("private");
b0._As();
b0.As_();
b0.LiteralTerminal_();
b0.RegExp("@protected");
b0.Category("DELIMITER");
b0.Literal("@protected");
b0._LiteralTerminal();
b0.Name("protected");
b0._As();
b0.As_();
b0.LiteralTerminal_();
b0.RegExp("@public");
b0.Category("DELIMITER");
b0.Literal("@public");
b0._LiteralTerminal();
b0.Name("public");
b0._As();
b0.As_();
b0.LiteralTerminal_();
b0.RegExp("@package");
b0.Category("DELIMITER");
b0.Literal("@package");
b0._LiteralTerminal();
b0.Name("package");
b0._As();
b0._Choose();
b1.Resolver();
b0._Production();
b0.NewLine();
b0._Concatenate();
b0.Concatenate_(2);
b0.Indent();
b0.NonTerminal("StructField");
b0._Concatenate();
b0.NonTerminal("PreprocessorDirective");
b0.NonTerminal("Macro");
b0._Choose();
b1.Resolver();
b0._Production();
b0.Production_();
b0.NonTerminal("FormalProtocol");
b0.Concatenate_(9);
b0.LiteralTerminal_();
b0.RegExp("@protocol");
b0.Category("DELIMITER");
b0.Literal("@protocol");
b0._LiteralTerminal();
b0.Space();
b0.As_();
b0.NonTerminal("Identifier");
b0.Name("protocolName");
b0._As();
b0.Optional_();
b0.As_();
b0.Concatenate_(4);
b0.Space();
b0.LiteralTerminal_();
b0.RegExp("<");
b0.Category("DELIMITER");
b0.Literal("<");
b0._LiteralTerminal();
b0.NonTerminal("Names");
b0.LiteralTerminal_();
b0.RegExp(">");
b0.Category("DELIMITER");
b0.Literal(">");
b0._LiteralTerminal();
b0._Concatenate();
b0.Name("protocolsNames");
b0._As();
b0._Optional();
b0.NewLine();
b0.As_();
b0.Production_();
b0.NonTerminal("ProtocolMethodDeclarations");
b0.Repeat_();
b0.Size(0);
b0.Unbounded();
b1.Resolver();
b0.Production_();
b0.NonTerminal("ProtocolMethodDeclaration");
b0.Choose_(5);
b0.NonTerminal("MethodDeclaration");
b0.NonTerminal("PropertyDeclaration");
b0.NonTerminal("TypeDeclaration");
b0.Concatenate_(2);
b0.Production_();
b0.NonTerminal("OptionalOrRequiredSpecification");
b0.Choose_(2);
b0.As_();
b0.LiteralTerminal_();
b0.RegExp("@optional");
b0.Category("DELIMITER");
b0.Literal("@optional");
b0._LiteralTerminal();
b0.Name("optional");
b0._As();
b0.As_();
b0.LiteralTerminal_();
b0.RegExp("@required");
b0.Category("DELIMITER");
b0.Literal("@required");
b0._LiteralTerminal();
b0.Name("required");
b0._As();
b0._Choose();
b1.Resolver();
b0._Production();
b0.NewLine();
b0._Concatenate();
b0.NonTerminal("PreprocessorDirective");
b0._Choose();
b1.Resolver();
b0._Production();
b0._Repeat();
b1.Resolver();
b0._Production();
b0.Name("methodDeclarations");
b0._As();
b0.NewLine();
b0.LiteralTerminal_();
b0.RegExp("@end");
b0.Category("DELIMITER");
b0.Literal("@end");
b0._LiteralTerminal();
b0.NewLine();
b0._Concatenate();
b1.Resolver();
b0._Production();
b0.Production_();
b0.NonTerminal("MethodDeclaration");
b0.Concatenate_(10);
b0.NonTerminal("ClassOrInstance");
b0.Space();
b0.LiteralTerminal_();
b0.RegExp("\\Q(\\E");
b0.Category("DELIMITER");
b0.Literal("(");
b0._LiteralTerminal();
b0.As_();
b0.NonTerminal("Type");
b0.Name("type");
b0._As();
b0.LiteralTerminal_();
b0.RegExp("\\Q)\\E");
b0.Category("DELIMITER");
b0.Literal(")");
b0._LiteralTerminal();
b0.As_();
b0.NonTerminal("Identifier");
b0.Name("name");
b0._As();
b0.As_();
b0.NonTerminal("Arguments");
b0.Name("arguments");
b0._As();
b0.Optional_();
b0.As_();
b0.Split_();
b0.ByDelimiter_();
b0.RegExp(";");
b0._ByDelimiter();
b0.Concatenate_(2);
b0.Space();
b0.NonTerminal("Macro");
b0._Concatenate();
b0._Split();
b0.Name("macro");
b0._As();
b0._Optional();
b0.LiteralTerminal_();
b0.RegExp(";");
b0.Category("DELIMITER");
b0.Literal(";");
b0._LiteralTerminal();
b0.NewLine();
b0._Concatenate();
b1.Resolver();
b0._Production();
b0.Production_();
b0.NonTerminal("MethodImplementation");
b0.Concatenate_(10);
b0.NonTerminal("ClassOrInstance");
b0.Space();
b0.LiteralTerminal_();
b0.RegExp("\\Q(\\E");
b0.Category("DELIMITER");
b0.Literal("(");
b0._LiteralTerminal();
b0.As_();
b0.NonTerminal("Type");
b0.Name("type");
b0._As();
b0.LiteralTerminal_();
b0.RegExp("\\Q)\\E");
b0.Category("DELIMITER");
b0.Literal(")");
b0._LiteralTerminal();
b0.As_();
b0.NonTerminal("Identifier");
b0.Name("name");
b0._As();
b0.As_();
b0.NonTerminal("Arguments");
b0.Name("arguments");
b0._As();
b0.NewLine();
b0.As_();
b0.NonTerminal("CompoundStatement");
b0.Name("definition");
b0._As();
b0.NewLine();
b0._Concatenate();
b1.Resolver();
b0._Production();
b0.Production_();
b0.NonTerminal("ClassOrInstance");
b0.Choose_(2);
b0.As_();
b0.LiteralTerminal_();
b0.RegExp("\\Q+\\E");
b0.Category("DELIMITER");
b0.Literal("+");
b0._LiteralTerminal();
b0.Name("class");
b0._As();
b0.As_();
b0.LiteralTerminal_();
b0.RegExp("-");
b0.Category("DELIMITER");
b0.Literal("-");
b0._LiteralTerminal();
b0.Name("instance");
b0._As();
b0._Choose();
b1.Resolver();
b0._Production();
b0.Production_();
b0.NonTerminal("Arguments");
b0.Repeat_();
b0.Size(0);
b0.Unbounded();
b1.Resolver();
b0.Production_();
b0.NonTerminal("Argument");
b0.Concatenate_(7);
b0.Optional_();
b0.As_();
b0.NonTerminal("Identifier");
b0.Name("keyword");
b0._As();
b0._Optional();
b0.LiteralTerminal_();
b0.RegExp(":");
b0.Category("DELIMITER");
b0.Literal(":");
b0._LiteralTerminal();
b0.LiteralTerminal_();
b0.RegExp("\\Q(\\E");
b0.Category("DELIMITER");
b0.Literal("(");
b0._LiteralTerminal();
b0.As_();
b0.NonTerminal("Type");
b0.Name("type");
b0._As();
b0.LiteralTerminal_();
b0.RegExp("\\Q)\\E");
b0.Category("DELIMITER");
b0.Literal(")");
b0._LiteralTerminal();
b0.As_();
b0.NonTerminal("Identifier");
b0.Name("name");
b0._As();
b0.Optional_();
b0.Production_();
b0.NonTerminal("Vararg");
b0.Concatenate_(2);
b0.LiteralTerminal_();
b0.RegExp(",");
b0.Category("DELIMITER");
b0.Literal(",");
b0._LiteralTerminal();
b0.LiteralTerminal_();
b0.RegExp("\\Q...\\E");
b0.Category("DELIMITER");
b0.Literal("...");
b0._LiteralTerminal();
b0._Concatenate();
b1.Resolver();
b0._Production();
b0._Optional();
b0._Concatenate();
b1.Resolver();
b0._Production();
b0._Repeat();
b1.Resolver();
b0._Production();
b0.Production_();
b0.NonTerminal("PropertyDeclaration");
b0.Concatenate_(12);
b0.LiteralTerminal_();
b0.RegExp("@property");
b0.Category("DELIMITER");
b0.Literal("@property");
b0._LiteralTerminal();
b0.LiteralTerminal_();
b0.RegExp("\\Q(\\E");
b0.Category("DELIMITER");
b0.Literal("(");
b0._LiteralTerminal();
b0.As_();
b0.Repeat_();
b0.Size(0);
b0.Unbounded();
b0.LiteralTerminal_();
b0.RegExp(",");
b0.Category("DELIMITER");
b0.Literal(",");
b0._LiteralTerminal();
b0.Production_();
b0.NonTerminal("Attribute");
b0.Choose_(3);
b0.Production_();
b0.NonTerminal("KeywordAttribute");
b0.Choose_(6);
b0.As_();
b0.LiteralTerminal_();
b0.RegExp("nonatomic");
b0.Category("DELIMITER");
b0.Literal("nonatomic");
b0._LiteralTerminal();
b0.Name("nonatomic");
b0._As();
b0.As_();
b0.LiteralTerminal_();
b0.RegExp("readwrite");
b0.Category("DELIMITER");
b0.Literal("readwrite");
b0._LiteralTerminal();
b0.Name("readwrite");
b0._As();
b0.As_();
b0.LiteralTerminal_();
b0.RegExp("readonly");
b0.Category("DELIMITER");
b0.Literal("readonly");
b0._LiteralTerminal();
b0.Name("readonly");
b0._As();
b0.As_();
b0.LiteralTerminal_();
b0.RegExp("assign");
b0.Category("DELIMITER");
b0.Literal("assign");
b0._LiteralTerminal();
b0.Name("assign");
b0._As();
b0.As_();
b0.LiteralTerminal_();
b0.RegExp("retain");
b0.Category("DELIMITER");
b0.Literal("retain");
b0._LiteralTerminal();
b0.Name("retain");
b0._As();
b0.As_();
b0.LiteralTerminal_();
b0.RegExp("copy");
b0.Category("DELIMITER");
b0.Literal("copy");
b0._LiteralTerminal();
b0.Name("copy");
b0._As();
b0._Choose();
b1.Resolver();
b0._Production();
b0.Production_();
b0.NonTerminal("GetterAttribute");
b0.Concatenate_(3);
b0.LiteralTerminal_();
b0.RegExp("getter");
b0.Category("DELIMITER");
b0.Literal("getter");
b0._LiteralTerminal();
b0.LiteralTerminal_();
b0.RegExp("=");
b0.Category("DELIMITER");
b0.Literal("=");
b0._LiteralTerminal();
b0.As_();
b0.NonTerminal("Identifier");
b0.Name("name");
b0._As();
b0._Concatenate();
b1.Resolver();
b0._Production();
b0.Production_();
b0.NonTerminal("SetterAttribute");
b0.Concatenate_(3);
b0.LiteralTerminal_();
b0.RegExp("setter");
b0.Category("DELIMITER");
b0.Literal("setter");
b0._LiteralTerminal();
b0.LiteralTerminal_();
b0.RegExp("=");
b0.Category("DELIMITER");
b0.Literal("=");
b0._LiteralTerminal();
b0.As_();
b0.NonTerminal("Identifier");
b0.Name("name");
b0._As();
b0._Concatenate();
b1.Resolver();
b0._Production();
b0._Choose();
b1.Resolver();
b0._Production();
b0._Repeat();
b0.Name("attributes");
b0._As();
b0.LiteralTerminal_();
b0.RegExp("\\Q)\\E");
b0.Category("DELIMITER");
b0.Literal(")");
b0._LiteralTerminal();
b0.Space();
b0.Optional_();
b0.When_();
b0.Concatenate_(5);
b0.NonTerminal("Macro");
b0.NonTerminal("TypeSpecifier");
b0.LiteralTerminal_();
b0.RegExp(" ");
b0.Category("DELIMITER");
b0.Literal(" ");
b0._LiteralTerminal();
b0.NonTerminal("Identifier");
b0.LiteralTerminal_();
b0.RegExp(";");
b0.Category("DELIMITER");
b0.Literal(";");
b0._LiteralTerminal();
b0._Concatenate();
b0.As_();
b0.Concatenate_(2);
b0.NonTerminal("Macro");
b0.Space();
b0._Concatenate();
b0.Name("typeMacro");
b0._As();
b0._When();
b0._Optional();
b0.As_();
b0.NonTerminal("Type");
b0.Name("type");
b0._As();
b0.Space();
b0.As_();
b0.NonTerminal("Identifier");
b0.Name("name");
b0._As();
b0.Optional_();
b0.As_();
b0.Split_();
b0.ByDelimiter_();
b0.RegExp(";");
b0._ByDelimiter();
b0.Concatenate_(2);
b0.Space();
b0.NonTerminal("Macro");
b0._Concatenate();
b0._Split();
b0.Name("macro");
b0._As();
b0._Optional();
b0.LiteralTerminal_();
b0.RegExp(";");
b0.Category("DELIMITER");
b0.Literal(";");
b0._LiteralTerminal();
b0.NewLine();
b0._Concatenate();
b1.Resolver();
b0._Production();
b0.Production_();
b0.NonTerminal("PropertyImplementation");
b0.Choose_(2);
b0.Production_();
b0.NonTerminal("SynthesizeImplementation");
b0.Concatenate_(5);
b0.LiteralTerminal_();
b0.RegExp("@synthesize");
b0.Category("DELIMITER");
b0.Literal("@synthesize");
b0._LiteralTerminal();
b0.Space();
b0.As_();
b0.Repeat_();
b0.Size(1);
b0.Unbounded();
b0.LiteralTerminal_();
b0.RegExp(",");
b0.Category("DELIMITER");
b0.Literal(",");
b0._LiteralTerminal();
b0.Production_();
b0.NonTerminal("PropertyWithVariable");
b0.Concatenate_(2);
b0.As_();
b0.NonTerminal("Identifier");
b0.Name("name");
b0._As();
b0.Optional_();
b0.As_();
b0.Concatenate_(4);
b0.Space();
b0.LiteralTerminal_();
b0.RegExp("=");
b0.Category("DELIMITER");
b0.Literal("=");
b0._LiteralTerminal();
b0.Space();
b0.NonTerminal("Identifier");
b0._Concatenate();
b0.Name("variableName");
b0._As();
b0._Optional();
b0._Concatenate();
b1.Resolver();
b0._Production();
b0._Repeat();
b0.Name("properties");
b0._As();
b0.LiteralTerminal_();
b0.RegExp(";");
b0.Category("DELIMITER");
b0.Literal(";");
b0._LiteralTerminal();
b0.NewLine();
b0._Concatenate();
b1.Resolver();
b0._Production();
b0.Production_();
b0.NonTerminal("DynamicImplementation");
b0.Concatenate_(5);
b0.LiteralTerminal_();
b0.RegExp("@dynamic");
b0.Category("DELIMITER");
b0.Literal("@dynamic");
b0._LiteralTerminal();
b0.Space();
b0.As_();
b0.NonTerminal("Names");
b0.Name("properties");
b0._As();
b0.LiteralTerminal_();
b0.RegExp(";");
b0.Category("DELIMITER");
b0.Literal(";");
b0._LiteralTerminal();
b0.NewLine();
b0._Concatenate();
b1.Resolver();
b0._Production();
b0._Choose();
b1.Resolver();
b0._Production();
b0.Production_();
b0.NonTerminal("EnumValues");
b0.Repeat_();
b0.Size(1);
b0.Unbounded();
b1.Resolver();
b0.Production_();
b0.NonTerminal("EnumValueOrDirective");
b0.Choose_(2);
b0.Production_();
b0.NonTerminal("EnumValue");
b0.Concatenate_(5);
b0.Indent();
b0.As_();
b0.NonTerminal("Identifier");
b0.Name("name");
b0._As();
b0.Optional_();
b0.As_();
b0.Concatenate_(4);
b0.Space();
b0.LiteralTerminal_();
b0.RegExp("=");
b0.Category("DELIMITER");
b0.Literal("=");
b0._LiteralTerminal();
b0.Space();
b0.Split_();
b0.ByDelimiter_();
b0.RegExp("(?m:[,}]|$)");
b0._ByDelimiter();
b0.NonTerminal("Expression");
b0._Split();
b0._Concatenate();
b0.Name("value");
b0._As();
b0._Optional();
b0.Optional_();
b0.LiteralTerminal_();
b0.RegExp(",");
b0.Category("DELIMITER");
b0.Literal(",");
b0._LiteralTerminal();
b0._Optional();
b0.NewLine();
b0._Concatenate();
b1.Resolver();
b0._Production();
b0.NonTerminal("PreprocessorDirective");
b0._Choose();
b1.Resolver();
b0._Production();
b0._Repeat();
b1.Resolver();
b0._Production();
b0.Production_();
b0.NonTerminal("StructFields");
b0.Repeat_();
b0.Size(1);
b0.Unbounded();
b1.Resolver();
b0.Production_();
b0.NonTerminal("StructFieldOrDirective");
b0.Choose_(2);
b0.Production_();
b0.NonTerminal("StructField");
b0.Concatenate_(7);
b0.Indent();
b0.As_();
b0.NonTerminal("TypeQualifiers");
b0.Name("qualifiers");
b0._As();
b0.As_();
b0.NonTerminal("TypeSpecifier");
b0.Name("specifier");
b0._As();
b0.Space();
b0.As_();
b0.Production_();
b0.NonTerminal("StructDeclarators");
b0.Repeat_();
b0.Size(0);
b0.Unbounded();
b0.Concatenate_(2);
b0.LiteralTerminal_();
b0.RegExp(",");
b0.Category("DELIMITER");
b0.Literal(",");
b0._LiteralTerminal();
b0.Space();
b0._Concatenate();
b0.Production_();
b0.NonTerminal("StructDeclarator");
b0.Choose_(2);
b0.Production_();
b0.NonTerminal("BitfieldDeclarator");
b0.Concatenate_(2);
b0.NonTerminal("Declarator");
b0.As_();
b0.Concatenate_(4);
b0.Space();
b0.LiteralTerminal_();
b0.RegExp(":");
b0.Category("DELIMITER");
b0.Literal(":");
b0._LiteralTerminal();
b0.Space();
b0.Split_();
b0.ByDelimiter_();
b0.RegExp("[,;]");
b0._ByDelimiter();
b0.NonTerminal("Expression");
b0._Split();
b0._Concatenate();
b0.Name("bitfield");
b0._As();
b0._Concatenate();
b1.Resolver();
b0._Production();
b0.NonTerminal("Declarator");
b0._Choose();
b1.Resolver();
b0._Production();
b0._Repeat();
b1.Resolver();
b0._Production();
b0.Name("declarators");
b0._As();
b0.LiteralTerminal_();
b0.RegExp(";");
b0.Category("DELIMITER");
b0.Literal(";");
b0._LiteralTerminal();
b0.NewLine();
b0._Concatenate();
b1.Resolver();
b0._Production();
b0.NonTerminal("PreprocessorDirective");
b0._Choose();
b1.Resolver();
b0._Production();
b0._Repeat();
b1.Resolver();
b0._Production();
b0.Production_();
b0.NonTerminal("Type");
b0.Concatenate_(3);
b0.As_();
b0.NonTerminal("TypeQualifiers");
b0.Name("qualifiers");
b0._As();
b0.As_();
b0.NonTerminal("TypeSpecifier");
b0.Name("specifier");
b0._As();
b0.Optional_();
b0.As_();
b0.NonTerminal("AbstractDeclarator");
b0.Name("declarator");
b0._As();
b0._Optional();
b0._Concatenate();
b1.Resolver();
b0._Production();
b0.Production_();
b0.NonTerminal("AbstractDeclarator");
b0.Choose_(5);
b0.Production_();
b0.NonTerminal("AbstractPointer");
b0.Concatenate_(4);
b0.Space();
b0.LiteralTerminal_();
b0.RegExp("\\Q*\\E");
b0.Category("DELIMITER");
b0.Literal("*");
b0._LiteralTerminal();
b0.As_();
b0.NonTerminal("TypeQualifiers");
b0.Name("qualifiers");
b0._As();
b0.Optional_();
b0.As_();
b0.NonTerminal("AbstractDeclarator");
b0.Name("declarator");
b0._As();
b0._Optional();
b0._Concatenate();
b1.Resolver();
b0._Production();
b0.Production_();
b0.NonTerminal("AbstractConforms");
b0.Concatenate_(5);
b0.Space();
b0.LiteralTerminal_();
b0.RegExp("<");
b0.Category("DELIMITER");
b0.Literal("<");
b0._LiteralTerminal();
b0.As_();
b0.NonTerminal("Names");
b0.Name("protocolsNames");
b0._As();
b0.LiteralTerminal_();
b0.RegExp(">");
b0.Category("DELIMITER");
b0.Literal(">");
b0._LiteralTerminal();
b0.Optional_();
b0.As_();
b0.NonTerminal("AbstractDeclarator");
b0.Name("declarator");
b0._As();
b0._Optional();
b0._Concatenate();
b1.Resolver();
b0._Production();
b0.Production_();
b0.NonTerminal("AbstractDerivedFunction");
b0.Concatenate_(7);
b0.LiteralTerminal_();
b0.RegExp("\\Q(\\E");
b0.Category("DELIMITER");
b0.Literal("(");
b0._LiteralTerminal();
b0.As_();
b0.NonTerminal("AbstractDeclarator");
b0.Name("declarator");
b0._As();
b0.LiteralTerminal_();
b0.RegExp("\\Q)\\E");
b0.Category("DELIMITER");
b0.Literal(")");
b0._LiteralTerminal();
b0.Space();
b0.LiteralTerminal_();
b0.RegExp("\\Q(\\E");
b0.Category("DELIMITER");
b0.Literal("(");
b0._LiteralTerminal();
b0.NonTerminal("Parameters");
b0.LiteralTerminal_();
b0.RegExp("\\Q)\\E");
b0.Category("DELIMITER");
b0.Literal(")");
b0._LiteralTerminal();
b0._Concatenate();
b1.Resolver();
b0._Production();
b0.Production_();
b0.NonTerminal("Block");
b0.Concatenate_(8);
b0.LiteralTerminal_();
b0.RegExp("\\Q(\\E");
b0.Category("DELIMITER");
b0.Literal("(");
b0._LiteralTerminal();
b0.LiteralTerminal_();
b0.RegExp("\\Q^\\E");
b0.Category("DELIMITER");
b0.Literal("^");
b0._LiteralTerminal();
b0.As_();
b0.NonTerminal("Identifier");
b0.Name("name");
b0._As();
b0.LiteralTerminal_();
b0.RegExp("\\Q)\\E");
b0.Category("DELIMITER");
b0.Literal(")");
b0._LiteralTerminal();
b0.Space();
b0.LiteralTerminal_();
b0.RegExp("\\Q(\\E");
b0.Category("DELIMITER");
b0.Literal("(");
b0._LiteralTerminal();
b0.NonTerminal("Parameters");
b0.LiteralTerminal_();
b0.RegExp("\\Q)\\E");
b0.Category("DELIMITER");
b0.Literal(")");
b0._LiteralTerminal();
b0._Concatenate();
b1.Resolver();
b0._Production();
b0.Production_();
b0.NonTerminal("AbstractArray");
b0.Repeat_();
b0.Size(1);
b0.Unbounded();
b1.Resolver();
b0.Production_();
b0.NonTerminal("Dimension");
b0.Concatenate_(3);
b0.LiteralTerminal_();
b0.RegExp("\\Q[\\E");
b0.Category("DELIMITER");
b0.Literal("[");
b0._LiteralTerminal();
b0.Optional_();
b0.As_();
b0.Split_();
b0.ByDelimiter_();
b0.RegExp("]");
b0._ByDelimiter();
b0.NonTerminal("Expression");
b0._Split();
b0.Name("size");
b0._As();
b0._Optional();
b0.LiteralTerminal_();
b0.RegExp("]");
b0.Category("DELIMITER");
b0.Literal("]");
b0._LiteralTerminal();
b0._Concatenate();
b1.Resolver();
b0._Production();
b0._Repeat();
b1.Resolver();
b0._Production();
b0._Choose();
b1.Resolver();
b0._Production();
b0.Production_();
b0.NonTerminal("Declarator");
b0.Choose_(8);
b0.Production_();
b0.NonTerminal("Pointer");
b0.Concatenate_(4);
b0.Space();
b0.LiteralTerminal_();
b0.RegExp("\\Q*\\E");
b0.Category("DELIMITER");
b0.Literal("*");
b0._LiteralTerminal();
b0.As_();
b0.NonTerminal("TypeQualifiers");
b0.Name("qualifiers");
b0._As();
b0.As_();
b0.NonTerminal("Declarator");
b0.Name("declarator");
b0._As();
b0._Concatenate();
b1.Resolver();
b0._Production();
b0.Production_();
b0.NonTerminal("Conforms");
b0.Concatenate_(5);
b0.Space();
b0.LiteralTerminal_();
b0.RegExp("<");
b0.Category("DELIMITER");
b0.Literal("<");
b0._LiteralTerminal();
b0.As_();
b0.NonTerminal("Names");
b0.Name("protocolsNames");
b0._As();
b0.LiteralTerminal_();
b0.RegExp(">");
b0.Category("DELIMITER");
b0.Literal(">");
b0._LiteralTerminal();
b0.Optional_();
b0.As_();
b0.NonTerminal("Declarator");
b0.Name("declarator");
b0._As();
b0._Optional();
b0._Concatenate();
b1.Resolver();
b0._Production();
b0.Production_();
b0.NonTerminal("DerivedFunction");
b0.Concatenate_(7);
b0.LiteralTerminal_();
b0.RegExp("\\Q(\\E");
b0.Category("DELIMITER");
b0.Literal("(");
b0._LiteralTerminal();
b0.As_();
b0.NonTerminal("Declarator");
b0.Name("declarator");
b0._As();
b0.LiteralTerminal_();
b0.RegExp("\\Q)\\E");
b0.Category("DELIMITER");
b0.Literal(")");
b0._LiteralTerminal();
b0.Space();
b0.LiteralTerminal_();
b0.RegExp("\\Q(\\E");
b0.Category("DELIMITER");
b0.Literal("(");
b0._LiteralTerminal();
b0.NonTerminal("Parameters");
b0.LiteralTerminal_();
b0.RegExp("\\Q)\\E");
b0.Category("DELIMITER");
b0.Literal(")");
b0._LiteralTerminal();
b0._Concatenate();
b1.Resolver();
b0._Production();
b0.Production_();
b0.NonTerminal("DerivedArray");
b0.Concatenate_(4);
b0.LiteralTerminal_();
b0.RegExp("\\Q(\\E");
b0.Category("DELIMITER");
b0.Literal("(");
b0._LiteralTerminal();
b0.As_();
b0.NonTerminal("Declarator");
b0.Name("declarator");
b0._As();
b0.LiteralTerminal_();
b0.RegExp("\\Q)\\E");
b0.Category("DELIMITER");
b0.Literal(")");
b0._LiteralTerminal();
b0.As_();
b0.NonTerminal("AbstractArray");
b0.Name("dimensions");
b0._As();
b0._Concatenate();
b1.Resolver();
b0._Production();
b0.NonTerminal("Block");
b0.Production_();
b0.NonTerminal("Function");
b0.Concatenate_(5);
b0.NonTerminal("Identifier");
b0.Space();
b0.LiteralTerminal_();
b0.RegExp("\\Q(\\E");
b0.Category("DELIMITER");
b0.Literal("(");
b0._LiteralTerminal();
b0.NonTerminal("Parameters");
b0.LiteralTerminal_();
b0.RegExp("\\Q)\\E");
b0.Category("DELIMITER");
b0.Literal(")");
b0._LiteralTerminal();
b0._Concatenate();
b1.Resolver();
b0._Production();
b0.Production_();
b0.NonTerminal("Array");
b0.Concatenate_(2);
b0.NonTerminal("Identifier");
b0.As_();
b0.NonTerminal("AbstractArray");
b0.Name("dimensions");
b0._As();
b0._Concatenate();
b1.Resolver();
b0._Production();
b0.NonTerminal("Identifier");
b0._Choose();
b1.Resolver();
b0._Production();
b0.Production_();
b0.NonTerminal("Parameters");
b0.Repeat_();
b0.Size(0);
b0.Unbounded();
b0.Concatenate_(2);
b0.LiteralTerminal_();
b0.RegExp(",");
b0.Category("DELIMITER");
b0.Literal(",");
b0._LiteralTerminal();
b0.Space();
b0._Concatenate();
b0.Production_();
b0.NonTerminal("Parameter");
b0.Concatenate_(3);
b0.As_();
b0.NonTerminal("DeclarationQualifiers");
b0.Name("qualifiers");
b0._As();
b0.As_();
b0.NonTerminal("TypeSpecifier");
b0.Name("specifier");
b0._As();
b0.Optional_();
b0.As_();
b0.Production_();
b0.NonTerminal("ParameterDeclarator");
b0.Choose_(2);
b0.NonTerminal("Declarator");
b0.NonTerminal("AbstractDeclarator");
b0._Choose();
b1.Resolver();
b0._Production();
b0.Name("declarator");
b0._As();
b0._Optional();
b0._Concatenate();
b1.Resolver();
b0._Production();
b0._Repeat();
b1.Resolver();
b0._Production();
b0.Production_();
b0.NonTerminal("DeclarationQualifiers");
b0.Repeat_();
b0.Size(0);
b0.Unbounded();
b1.Resolver();
b0.Concatenate_(2);
b0.Production_();
b0.NonTerminal("DeclarationQualifier");
b0.Choose_(2);
b0.Production_();
b0.NonTerminal("StorageClass");
b0.Choose_(5);
b0.As_();
b0.LiteralTerminal_();
b0.RegExp("typedef");
b0.Category("DELIMITER");
b0.Literal("typedef");
b0._LiteralTerminal();
b0.Name("typedef");
b0._As();
b0.As_();
b0.LiteralTerminal_();
b0.RegExp("extern");
b0.Category("DELIMITER");
b0.Literal("extern");
b0._LiteralTerminal();
b0.Name("extern");
b0._As();
b0.As_();
b0.LiteralTerminal_();
b0.RegExp("static");
b0.Category("DELIMITER");
b0.Literal("static");
b0._LiteralTerminal();
b0.Name("static");
b0._As();
b0.As_();
b0.LiteralTerminal_();
b0.RegExp("register");
b0.Category("DELIMITER");
b0.Literal("register");
b0._LiteralTerminal();
b0.Name("register");
b0._As();
b0.As_();
b0.LiteralTerminal_();
b0.RegExp("auto");
b0.Category("DELIMITER");
b0.Literal("auto");
b0._LiteralTerminal();
b0.Name("auto");
b0._As();
b0._Choose();
b1.Resolver();
b0._Production();
b0.NonTerminal("TypeQualifier");
b0._Choose();
b1.Resolver();
b0._Production();
b0.Space();
b0._Concatenate();
b0._Repeat();
b1.Resolver();
b0._Production();
b0.Production_();
b0.NonTerminal("TypeQualifiers");
b0.Repeat_();
b0.Size(0);
b0.Unbounded();
b1.Resolver();
b0.Concatenate_(2);
b0.NonTerminal("TypeQualifier");
b0.Space();
b0._Concatenate();
b0._Repeat();
b1.Resolver();
b0._Production();
b0.Production_();
b0.NonTerminal("TypeQualifier");
b0.Choose_(8);
b0.As_();
b0.LiteralTerminal_();
b0.RegExp("const");
b0.Category("DELIMITER");
b0.Literal("const");
b0._LiteralTerminal();
b0.Name("const");
b0._As();
b0.As_();
b0.LiteralTerminal_();
b0.RegExp("volatile");
b0.Category("DELIMITER");
b0.Literal("volatile");
b0._LiteralTerminal();
b0.Name("volatile");
b0._As();
b0.As_();
b0.LiteralTerminal_();
b0.RegExp("inout");
b0.Category("DELIMITER");
b0.Literal("inout");
b0._LiteralTerminal();
b0.Name("inout");
b0._As();
b0.As_();
b0.LiteralTerminal_();
b0.RegExp("in ");
b0.Category("DELIMITER");
b0.Literal("in");
b0._LiteralTerminal();
b0.Name("in");
b0._As();
b0.As_();
b0.LiteralTerminal_();
b0.RegExp("out");
b0.Category("DELIMITER");
b0.Literal("out");
b0._LiteralTerminal();
b0.Name("out");
b0._As();
b0.As_();
b0.LiteralTerminal_();
b0.RegExp("bycopy");
b0.Category("DELIMITER");
b0.Literal("bycopy");
b0._LiteralTerminal();
b0.Name("bycopy");
b0._As();
b0.As_();
b0.LiteralTerminal_();
b0.RegExp("byref");
b0.Category("DELIMITER");
b0.Literal("byref");
b0._LiteralTerminal();
b0.Name("byref");
b0._As();
b0.As_();
b0.LiteralTerminal_();
b0.RegExp("oneway");
b0.Category("DELIMITER");
b0.Literal("oneway");
b0._LiteralTerminal();
b0.Name("oneway");
b0._As();
b0._Choose();
b1.Resolver();
b0._Production();
b0.Production_();
b0.NonTerminal("TypeSpecifier");
b0.Choose_(14);
b0.Production_();
b0.NonTerminal("DataType");
b0.Choose_(8);
b0.As_();
b0.LiteralTerminal_();
b0.RegExp("void");
b0.Category("DELIMITER");
b0.Literal("void");
b0._LiteralTerminal();
b0.Name("void");
b0._As();
b0.As_();
b0.LiteralTerminal_();
b0.RegExp("char");
b0.Category("DELIMITER");
b0.Literal("char");
b0._LiteralTerminal();
b0.Name("char");
b0._As();
b0.As_();
b0.LiteralTerminal_();
b0.RegExp("short");
b0.Category("DELIMITER");
b0.Literal("short");
b0._LiteralTerminal();
b0.Name("short");
b0._As();
b0.As_();
b0.LiteralTerminal_();
b0.RegExp("int");
b0.Category("DELIMITER");
b0.Literal("int");
b0._LiteralTerminal();
b0.Name("int");
b0._As();
b0.As_();
b0.LiteralTerminal_();
b0.RegExp("long");
b0.Category("DELIMITER");
b0.Literal("long");
b0._LiteralTerminal();
b0.Name("long");
b0._As();
b0.As_();
b0.LiteralTerminal_();
b0.RegExp("float");
b0.Category("DELIMITER");
b0.Literal("float");
b0._LiteralTerminal();
b0.Name("float");
b0._As();
b0.As_();
b0.LiteralTerminal_();
b0.RegExp("double");
b0.Category("DELIMITER");
b0.Literal("double");
b0._LiteralTerminal();
b0.Name("double");
b0._As();
b0.As_();
b0.LiteralTerminal_();
b0.RegExp("BOOL");
b0.Category("DELIMITER");
b0.Literal("BOOL");
b0._LiteralTerminal();
b0.Name("BOOL");
b0._As();
b0._Choose();
b1.Resolver();
b0._Production();
b0.Production_();
b0.NonTerminal("Signed");
b0.When_();
b0.LiteralTerminal_();
b0.RegExp("signed\\W");
b0.Category("DELIMITER");
b0.Literal("signed");
b0._LiteralTerminal();
b0.Concatenate_(2);
b0.LiteralTerminal_();
b0.RegExp("signed");
b0.Category("DELIMITER");
b0.Literal("signed");
b0._LiteralTerminal();
b0.Optional_();
b0.As_();
b0.NonTerminal("DataType");
b0.Name("dataType");
b0._As();
b0._Optional();
b0._Concatenate();
b0._When();
b1.Resolver();
b0._Production();
b0.Production_();
b0.NonTerminal("Unsigned");
b0.When_();
b0.LiteralTerminal_();
b0.RegExp("unsigned\\W");
b0.Category("DELIMITER");
b0.Literal("unsigned");
b0._LiteralTerminal();
b0.Concatenate_(2);
b0.LiteralTerminal_();
b0.RegExp("unsigned");
b0.Category("DELIMITER");
b0.Literal("unsigned");
b0._LiteralTerminal();
b0.Optional_();
b0.As_();
b0.NonTerminal("DataType");
b0.Name("dataType");
b0._As();
b0._Optional();
b0._Concatenate();
b0._When();
b1.Resolver();
b0._Production();
b0.Production_();
b0.NonTerminal("EnumDeclaration");
b0.Concatenate_(7);
b0.LiteralTerminal_();
b0.RegExp("enum");
b0.Category("DELIMITER");
b0.Literal("enum");
b0._LiteralTerminal();
b0.Space();
b0.Optional_();
b0.As_();
b0.NonTerminal("Identifier");
b0.Name("enumTag");
b0._As();
b0._Optional();
b0.LiteralTerminal_();
b0.RegExp("\\Q{\\E");
b0.Category("DELIMITER");
b0.Literal("{");
b0._LiteralTerminal();
b0.NewLine();
b0.As_();
b0.NonTerminal("EnumValues");
b0.Name("values");
b0._As();
b0.LiteralTerminal_();
b0.RegExp("}");
b0.Category("DELIMITER");
b0.Literal("}");
b0._LiteralTerminal();
b0._Concatenate();
b1.Resolver();
b0._Production();
b0.Production_();
b0.NonTerminal("StructDeclaration");
b0.Concatenate_(7);
b0.LiteralTerminal_();
b0.RegExp("struct");
b0.Category("DELIMITER");
b0.Literal("struct");
b0._LiteralTerminal();
b0.Space();
b0.Optional_();
b0.As_();
b0.NonTerminal("Identifier");
b0.Name("structTag");
b0._As();
b0._Optional();
b0.LiteralTerminal_();
b0.RegExp("\\Q{\\E");
b0.Category("DELIMITER");
b0.Literal("{");
b0._LiteralTerminal();
b0.NewLine();
b0.As_();
b0.NonTerminal("StructFields");
b0.Name("fields");
b0._As();
b0.LiteralTerminal_();
b0.RegExp("}");
b0.Category("DELIMITER");
b0.Literal("}");
b0._LiteralTerminal();
b0._Concatenate();
b1.Resolver();
b0._Production();
b0.Production_();
b0.NonTerminal("UnionDeclaration");
b0.Concatenate_(7);
b0.LiteralTerminal_();
b0.RegExp("union");
b0.Category("DELIMITER");
b0.Literal("union");
b0._LiteralTerminal();
b0.Space();
b0.Optional_();
b0.As_();
b0.NonTerminal("Identifier");
b0.Name("unionTag");
b0._As();
b0._Optional();
b0.LiteralTerminal_();
b0.RegExp("\\Q{\\E");
b0.Category("DELIMITER");
b0.Literal("{");
b0._LiteralTerminal();
b0.NewLine();
b0.As_();
b0.NonTerminal("StructFields");
b0.Name("fields");
b0._As();
b0.LiteralTerminal_();
b0.RegExp("}");
b0.Category("DELIMITER");
b0.Literal("}");
b0._LiteralTerminal();
b0._Concatenate();
b1.Resolver();
b0._Production();
b0.Production_();
b0.NonTerminal("Enum");
b0.Concatenate_(3);
b0.LiteralTerminal_();
b0.RegExp("enum");
b0.Category("DELIMITER");
b0.Literal("enum");
b0._LiteralTerminal();
b0.Space();
b0.As_();
b0.NonTerminal("Identifier");
b0.Name("enumTag");
b0._As();
b0._Concatenate();
b1.Resolver();
b0._Production();
b0.Production_();
b0.NonTerminal("Struct");
b0.Concatenate_(3);
b0.LiteralTerminal_();
b0.RegExp("struct");
b0.Category("DELIMITER");
b0.Literal("struct");
b0._LiteralTerminal();
b0.Space();
b0.As_();
b0.NonTerminal("Identifier");
b0.Name("structTag");
b0._As();
b0._Concatenate();
b1.Resolver();
b0._Production();
b0.Production_();
b0.NonTerminal("Union");
b0.Concatenate_(3);
b0.LiteralTerminal_();
b0.RegExp("union");
b0.Category("DELIMITER");
b0.Literal("union");
b0._LiteralTerminal();
b0.Space();
b0.As_();
b0.NonTerminal("Identifier");
b0.Name("unionTag");
b0._As();
b0._Concatenate();
b1.Resolver();
b0._Production();
b0.Production_();
b0.NonTerminal("Id");
b0.When_();
b0.Concatenate_(1);
b0.LiteralTerminal_();
b0.RegExp("id\\W");
b0.Category("DELIMITER");
b0.Literal("id");
b0._LiteralTerminal();
b0._Concatenate();
b0.Concatenate_(2);
b0.LiteralTerminal_();
b0.RegExp("id");
b0.Category("DELIMITER");
b0.Literal("id");
b0._LiteralTerminal();
b0.Optional_();
b0.As_();
b0.Concatenate_(4);
b0.Space();
b0.LiteralTerminal_();
b0.RegExp("<");
b0.Category("DELIMITER");
b0.Literal("<");
b0._LiteralTerminal();
b0.NonTerminal("Names");
b0.LiteralTerminal_();
b0.RegExp(">");
b0.Category("DELIMITER");
b0.Literal(">");
b0._LiteralTerminal();
b0._Concatenate();
b0.Name("protocolsNames");
b0._As();
b0._Optional();
b0._Concatenate();
b0._When();
b1.Resolver();
b0._Production();
b0.Production_();
b0.NonTerminal("Class");
b0.When_();
b0.LiteralTerminal_();
b0.RegExp("Class\\W");
b0.Category("DELIMITER");
b0.Literal("Class");
b0._LiteralTerminal();
b0.LiteralTerminal_();
b0.RegExp("Class");
b0.Category("DELIMITER");
b0.Literal("Class");
b0._LiteralTerminal();
b0._When();
b1.Resolver();
b0._Production();
b0.Production_();
b0.NonTerminal("SEL");
b0.When_();
b0.LiteralTerminal_();
b0.RegExp("SEL\\W");
b0.Category("DELIMITER");
b0.Literal("SEL");
b0._LiteralTerminal();
b0.LiteralTerminal_();
b0.RegExp("SEL");
b0.Category("DELIMITER");
b0.Literal("SEL");
b0._LiteralTerminal();
b0._When();
b1.Resolver();
b0._Production();
b0.Production_();
b0.NonTerminal("IMP");
b0.When_();
b0.LiteralTerminal_();
b0.RegExp("IMP\\W");
b0.Category("DELIMITER");
b0.Literal("IMP");
b0._LiteralTerminal();
b0.LiteralTerminal_();
b0.RegExp("IMP");
b0.Category("DELIMITER");
b0.Literal("IMP");
b0._LiteralTerminal();
b0._When();
b1.Resolver();
b0._Production();
b0.NonTerminal("Identifier");
b0._Choose();
b1.Resolver();
b0._Production();
b0.Production_();
b0.NonTerminal("Statement");
b0.Choose_(17);
b0.Concatenate_(2);
b0.Production_();
b0.NonTerminal("CompoundStatement");
b0.Concatenate_(4);
b0.LiteralTerminal_();
b0.RegExp("\\Q{\\E");
b0.Category("DELIMITER");
b0.Literal("{");
b0._LiteralTerminal();
b0.NewLine();
b0.As_();
b0.Production_();
b0.NonTerminal("Statements");
b0.Repeat_();
b0.Size(0);
b0.Unbounded();
b1.Resolver();
b0.Production_();
b0.NonTerminal("StatementOrDeclaration");
b0.Choose_(2);
b0.NonTerminal("Statement");
b0.NonTerminal("Declaration");
b0._Choose();
b1.Resolver();
b0._Production();
b0._Repeat();
b1.Resolver();
b0._Production();
b0.Name("statements");
b0._As();
b0.LiteralTerminal_();
b0.RegExp("}");
b0.Category("DELIMITER");
b0.Literal("}");
b0._LiteralTerminal();
b0._Concatenate();
b1.Resolver();
b0._Production();
b0.NewLine();
b0._Concatenate();
b0.Production_();
b0.NonTerminal("IfStatement");
b0.Concatenate_(7);
b0.LiteralTerminal_();
b0.RegExp("if");
b0.Category("DELIMITER");
b0.Literal("if");
b0._LiteralTerminal();
b0.Space();
b0.LiteralTerminal_();
b0.RegExp("\\Q(\\E");
b0.Category("DELIMITER");
b0.Literal("(");
b0._LiteralTerminal();
b0.As_();
b0.NonTerminal("Expression");
b0.Name("condition");
b0._As();
b0.LiteralTerminal_();
b0.RegExp("\\Q)\\E");
b0.Category("DELIMITER");
b0.Literal(")");
b0._LiteralTerminal();
b0.As_();
b0.NonTerminal("NestedStatement");
b0.Name("thenStatement");
b0._As();
b0.Optional_();
b0.As_();
b0.Concatenate_(2);
b0.LiteralTerminal_();
b0.RegExp("else");
b0.Category("DELIMITER");
b0.Literal("else");
b0._LiteralTerminal();
b0.NonTerminal("NestedStatement");
b0._Concatenate();
b0.Name("elseStatement");
b0._As();
b0._Optional();
b0._Concatenate();
b1.Resolver();
b0._Production();
b0.Production_();
b0.NonTerminal("SwitchStatement");
b0.Concatenate_(11);
b0.LiteralTerminal_();
b0.RegExp("switch");
b0.Category("DELIMITER");
b0.Literal("switch");
b0._LiteralTerminal();
b0.Space();
b0.LiteralTerminal_();
b0.RegExp("\\Q(\\E");
b0.Category("DELIMITER");
b0.Literal("(");
b0._LiteralTerminal();
b0.As_();
b0.NonTerminal("Expression");
b0.Name("condition");
b0._As();
b0.LiteralTerminal_();
b0.RegExp("\\Q)\\E");
b0.Category("DELIMITER");
b0.Literal(")");
b0._LiteralTerminal();
b0.Space();
b0.LiteralTerminal_();
b0.RegExp("\\Q{\\E");
b0.Category("DELIMITER");
b0.Literal("{");
b0._LiteralTerminal();
b0.NewLine();
b0.As_();
b0.Repeat_();
b0.Size(0);
b0.Unbounded();
b1.Resolver();
b0.Production_();
b0.NonTerminal("SwitchCase");
b0.Choose_(3);
b0.Production_();
b0.NonTerminal("CaseStatement");
b0.Concatenate_(5);
b0.LiteralTerminal_();
b0.RegExp("case");
b0.Category("DELIMITER");
b0.Literal("case");
b0._LiteralTerminal();
b0.As_();
b0.NonTerminal("Expression");
b0.Name("case");
b0._As();
b0.LiteralTerminal_();
b0.RegExp(":");
b0.Category("DELIMITER");
b0.Literal(":");
b0._LiteralTerminal();
b0.Space();
b0.As_();
b0.NonTerminal("Statement");
b0.Name("statement");
b0._As();
b0._Concatenate();
b1.Resolver();
b0._Production();
b0.Production_();
b0.NonTerminal("DefaultStatement");
b0.Concatenate_(4);
b0.LiteralTerminal_();
b0.RegExp("default");
b0.Category("DELIMITER");
b0.Literal("default");
b0._LiteralTerminal();
b0.LiteralTerminal_();
b0.RegExp(":");
b0.Category("DELIMITER");
b0.Literal(":");
b0._LiteralTerminal();
b0.Space();
b0.As_();
b0.NonTerminal("Statement");
b0.Name("statement");
b0._As();
b0._Concatenate();
b1.Resolver();
b0._Production();
b0.NonTerminal("Statement");
b0._Choose();
b1.Resolver();
b0._Production();
b0._Repeat();
b0.Name("cases");
b0._As();
b0.LiteralTerminal_();
b0.RegExp("}");
b0.Category("DELIMITER");
b0.Literal("}");
b0._LiteralTerminal();
b0.NewLine();
b0._Concatenate();
b1.Resolver();
b0._Production();
b0.Production_();
b0.NonTerminal("WhileStatement");
b0.Concatenate_(6);
b0.LiteralTerminal_();
b0.RegExp("while");
b0.Category("DELIMITER");
b0.Literal("while");
b0._LiteralTerminal();
b0.Space();
b0.LiteralTerminal_();
b0.RegExp("\\Q(\\E");
b0.Category("DELIMITER");
b0.Literal("(");
b0._LiteralTerminal();
b0.As_();
b0.NonTerminal("Expression");
b0.Name("condition");
b0._As();
b0.LiteralTerminal_();
b0.RegExp("\\Q)\\E");
b0.Category("DELIMITER");
b0.Literal(")");
b0._LiteralTerminal();
b0.As_();
b0.NonTerminal("NestedStatement");
b0.Name("statement");
b0._As();
b0._Concatenate();
b1.Resolver();
b0._Production();
b0.Production_();
b0.NonTerminal("DoWhileStatement");
b0.Concatenate_(10);
b0.LiteralTerminal_();
b0.RegExp("do");
b0.Category("DELIMITER");
b0.Literal("do");
b0._LiteralTerminal();
b0.As_();
b0.NonTerminal("NestedStatement");
b0.Name("statement");
b0._As();
b0.Space();
b0.LiteralTerminal_();
b0.RegExp("while");
b0.Category("DELIMITER");
b0.Literal("while");
b0._LiteralTerminal();
b0.Space();
b0.LiteralTerminal_();
b0.RegExp("\\Q(\\E");
b0.Category("DELIMITER");
b0.Literal("(");
b0._LiteralTerminal();
b0.As_();
b0.NonTerminal("Expression");
b0.Name("condition");
b0._As();
b0.LiteralTerminal_();
b0.RegExp("\\Q)\\E");
b0.Category("DELIMITER");
b0.Literal(")");
b0._LiteralTerminal();
b0.LiteralTerminal_();
b0.RegExp(";");
b0.Category("DELIMITER");
b0.Literal(";");
b0._LiteralTerminal();
b0.NewLine();
b0._Concatenate();
b1.Resolver();
b0._Production();
b0.Production_();
b0.NonTerminal("ForStatement");
b0.Concatenate_(10);
b0.LiteralTerminal_();
b0.RegExp("for");
b0.Category("DELIMITER");
b0.Literal("for");
b0._LiteralTerminal();
b0.Space();
b0.LiteralTerminal_();
b0.RegExp("\\Q(\\E");
b0.Category("DELIMITER");
b0.Literal("(");
b0._LiteralTerminal();
b0.Optional_();
b0.As_();
b0.NonTerminal("Expression");
b0.Name("initializer");
b0._As();
b0._Optional();
b0.LiteralTerminal_();
b0.RegExp(";");
b0.Category("DELIMITER");
b0.Literal(";");
b0._LiteralTerminal();
b0.Optional_();
b0.As_();
b0.NonTerminal("Expression");
b0.Name("condition");
b0._As();
b0._Optional();
b0.LiteralTerminal_();
b0.RegExp(";");
b0.Category("DELIMITER");
b0.Literal(";");
b0._LiteralTerminal();
b0.Optional_();
b0.As_();
b0.NonTerminal("Expression");
b0.Name("increment");
b0._As();
b0._Optional();
b0.LiteralTerminal_();
b0.RegExp("\\Q)\\E");
b0.Category("DELIMITER");
b0.Literal(")");
b0._LiteralTerminal();
b0.As_();
b0.NonTerminal("NestedStatement");
b0.Name("statement");
b0._As();
b0._Concatenate();
b1.Resolver();
b0._Production();
b0.Production_();
b0.NonTerminal("ForInStatement");
b0.Concatenate_(9);
b0.LiteralTerminal_();
b0.RegExp("for");
b0.Category("DELIMITER");
b0.Literal("for");
b0._LiteralTerminal();
b0.Space();
b0.LiteralTerminal_();
b0.RegExp("\\Q(\\E");
b0.Category("DELIMITER");
b0.Literal("(");
b0._LiteralTerminal();
b0.Optional_();
b0.As_();
b0.NonTerminal("Type");
b0.Name("type");
b0._As();
b0._Optional();
b0.As_();
b0.NonTerminal("Identifier");
b0.Name("name");
b0._As();
b0.LiteralTerminal_();
b0.RegExp("in");
b0.Category("DELIMITER");
b0.Literal("in");
b0._LiteralTerminal();
b0.As_();
b0.NonTerminal("Expression");
b0.Name("condition");
b0._As();
b0.LiteralTerminal_();
b0.RegExp("\\Q)\\E");
b0.Category("DELIMITER");
b0.Literal(")");
b0._LiteralTerminal();
b0.As_();
b0.NonTerminal("NestedStatement");
b0.Name("statement");
b0._As();
b0._Concatenate();
b1.Resolver();
b0._Production();
b0.Production_();
b0.NonTerminal("LabeledStatement");
b0.Concatenate_(4);
b0.As_();
b0.NonTerminal("Identifier");
b0.Name("label");
b0._As();
b0.LiteralTerminal_();
b0.RegExp(":");
b0.Category("DELIMITER");
b0.Literal(":");
b0._LiteralTerminal();
b0.Space();
b0.As_();
b0.NonTerminal("Statement");
b0.Name("statement");
b0._As();
b0._Concatenate();
b1.Resolver();
b0._Production();
b0.Production_();
b0.NonTerminal("GotoStatement");
b0.Concatenate_(5);
b0.LiteralTerminal_();
b0.RegExp("goto");
b0.Category("DELIMITER");
b0.Literal("goto");
b0._LiteralTerminal();
b0.Space();
b0.As_();
b0.NonTerminal("Identifier");
b0.Name("label");
b0._As();
b0.LiteralTerminal_();
b0.RegExp(";");
b0.Category("DELIMITER");
b0.Literal(";");
b0._LiteralTerminal();
b0.NewLine();
b0._Concatenate();
b1.Resolver();
b0._Production();
b0.Production_();
b0.NonTerminal("ContinueStatement");
b0.Concatenate_(3);
b0.LiteralTerminal_();
b0.RegExp("continue");
b0.Category("DELIMITER");
b0.Literal("continue");
b0._LiteralTerminal();
b0.LiteralTerminal_();
b0.RegExp(";");
b0.Category("DELIMITER");
b0.Literal(";");
b0._LiteralTerminal();
b0.NewLine();
b0._Concatenate();
b1.Resolver();
b0._Production();
b0.Production_();
b0.NonTerminal("BreakStatement");
b0.Concatenate_(3);
b0.LiteralTerminal_();
b0.RegExp("break");
b0.Category("DELIMITER");
b0.Literal("break");
b0._LiteralTerminal();
b0.LiteralTerminal_();
b0.RegExp(";");
b0.Category("DELIMITER");
b0.Literal(";");
b0._LiteralTerminal();
b0.NewLine();
b0._Concatenate();
b1.Resolver();
b0._Production();
b0.Production_();
b0.NonTerminal("ReturnStatement");
b0.Concatenate_(4);
b0.LiteralTerminal_();
b0.RegExp("return");
b0.Category("DELIMITER");
b0.Literal("return");
b0._LiteralTerminal();
b0.Optional_();
b0.As_();
b0.Concatenate_(2);
b0.Space();
b0.NonTerminal("Expression");
b0._Concatenate();
b0.Name("expression");
b0._As();
b0._Optional();
b0.LiteralTerminal_();
b0.RegExp(";");
b0.Category("DELIMITER");
b0.Literal(";");
b0._LiteralTerminal();
b0.NewLine();
b0._Concatenate();
b1.Resolver();
b0._Production();
b0.Production_();
b0.NonTerminal("TryStatement");
b0.Concatenate_(9);
b0.LiteralTerminal_();
b0.RegExp("@try");
b0.Category("DELIMITER");
b0.Literal("@try");
b0._LiteralTerminal();
b0.Space();
b0.LiteralTerminal_();
b0.RegExp("\\Q{\\E");
b0.Category("DELIMITER");
b0.Literal("{");
b0._LiteralTerminal();
b0.NewLine();
b0.NonTerminal("Statements");
b0.LiteralTerminal_();
b0.RegExp("}");
b0.Category("DELIMITER");
b0.Literal("}");
b0._LiteralTerminal();
b0.NewLine();
b0.As_();
b0.Repeat_();
b0.Size(0);
b0.Unbounded();
b1.Resolver();
b0.Production_();
b0.NonTerminal("CatchBlock");
b0.Concatenate_(11);
b0.LiteralTerminal_();
b0.RegExp("@catch");
b0.Category("DELIMITER");
b0.Literal("@catch");
b0._LiteralTerminal();
b0.Space();
b0.LiteralTerminal_();
b0.RegExp("\\Q(\\E");
b0.Category("DELIMITER");
b0.Literal("(");
b0._LiteralTerminal();
b0.NonTerminal("Expression");
b0.LiteralTerminal_();
b0.RegExp("\\Q)\\E");
b0.Category("DELIMITER");
b0.Literal(")");
b0._LiteralTerminal();
b0.Space();
b0.LiteralTerminal_();
b0.RegExp("\\Q{\\E");
b0.Category("DELIMITER");
b0.Literal("{");
b0._LiteralTerminal();
b0.NewLine();
b0.NonTerminal("Statements");
b0.LiteralTerminal_();
b0.RegExp("}");
b0.Category("DELIMITER");
b0.Literal("}");
b0._LiteralTerminal();
b0.NewLine();
b0._Concatenate();
b1.Resolver();
b0._Production();
b0._Repeat();
b0.Name("catchBlocks");
b0._As();
b0.Optional_();
b0.As_();
b0.Concatenate_(7);
b0.LiteralTerminal_();
b0.RegExp("@finally");
b0.Category("DELIMITER");
b0.Literal("@finally");
b0._LiteralTerminal();
b0.Space();
b0.LiteralTerminal_();
b0.RegExp("\\Q{\\E");
b0.Category("DELIMITER");
b0.Literal("{");
b0._LiteralTerminal();
b0.NewLine();
b0.NonTerminal("Statements");
b0.LiteralTerminal_();
b0.RegExp("}");
b0.Category("DELIMITER");
b0.Literal("}");
b0._LiteralTerminal();
b0.NewLine();
b0._Concatenate();
b0.Name("finallyBlock");
b0._As();
b0._Optional();
b0._Concatenate();
b1.Resolver();
b0._Production();
b0.Production_();
b0.NonTerminal("SynchronizedStatement");
b0.Concatenate_(10);
b0.LiteralTerminal_();
b0.RegExp("@synchronized");
b0.Category("DELIMITER");
b0.Literal("@synchronized");
b0._LiteralTerminal();
b0.LiteralTerminal_();
b0.RegExp("\\Q(\\E");
b0.Category("DELIMITER");
b0.Literal("(");
b0._LiteralTerminal();
b0.NonTerminal("Expression");
b0.LiteralTerminal_();
b0.RegExp("\\Q)\\E");
b0.Category("DELIMITER");
b0.Literal(")");
b0._LiteralTerminal();
b0.Space();
b0.LiteralTerminal_();
b0.RegExp("\\Q{\\E");
b0.Category("DELIMITER");
b0.Literal("{");
b0._LiteralTerminal();
b0.NewLine();
b0.NonTerminal("Statements");
b0.LiteralTerminal_();
b0.RegExp("}");
b0.Category("DELIMITER");
b0.Literal("}");
b0._LiteralTerminal();
b0.NewLine();
b0._Concatenate();
b1.Resolver();
b0._Production();
b0.Production_();
b0.NonTerminal("ExpressionStatement");
b0.Concatenate_(3);
b0.NonTerminal("Expression");
b0.LiteralTerminal_();
b0.RegExp(";");
b0.Category("DELIMITER");
b0.Literal(";");
b0._LiteralTerminal();
b0.NewLine();
b0._Concatenate();
b1.Resolver();
b0._Production();
b0.Production_();
b0.NonTerminal("EmptyStatement");
b0.Concatenate_(2);
b0.LiteralTerminal_();
b0.RegExp(";");
b0.Category("DELIMITER");
b0.Literal(";");
b0._LiteralTerminal();
b0.NewLine();
b0._Concatenate();
b1.Resolver();
b0._Production();
b0.NonTerminal("PreprocessorDirective");
b0._Choose();
b1.Resolver();
b0._Production();
b0.Production_();
b0.NonTerminal("NestedStatement");
b0.Choose_(2);
b0.Concatenate_(2);
b0.Space();
b0.NonTerminal("CompoundStatement");
b0._Concatenate();
b0.Concatenate_(2);
b0.NewLine();
b0.NonTerminal("Statement");
b0._Concatenate();
b0._Choose();
b1.Resolver();
b0._Production();
b0.Production_();
b0.NonTerminal("Expression");
b0.Choose_(6);
b0.Production_();
b0.NonTerminal("MessageExpression");
b0.Concatenate_(5);
b0.LiteralTerminal_();
b0.RegExp("\\Q[\\E");
b0.Category("DELIMITER");
b0.Literal("[");
b0._LiteralTerminal();
b0.As_();
b0.Production_();
b0.NonTerminal("Receiver");
b0.Choose_(4);
b0.Production_();
b0.NonTerminal("Self");
b0.LiteralTerminal_();
b0.RegExp("self");
b0.Category("DELIMITER");
b0.Literal("self");
b0._LiteralTerminal();
b1.Resolver();
b0._Production();
b0.Production_();
b0.NonTerminal("Super");
b0.LiteralTerminal_();
b0.RegExp("super");
b0.Category("DELIMITER");
b0.Literal("super");
b0._LiteralTerminal();
b1.Resolver();
b0._Production();
b0.NonTerminal("Identifier");
b0.NonTerminal("Expression");
b0._Choose();
b1.Resolver();
b0._Production();
b0.Name("receiver");
b0._As();
b0.Space();
b0.As_();
b0.Concatenate_(2);
b0.NonTerminal("Identifier");
b0.Production_();
b0.NonTerminal("ActualArguments");
b0.Repeat_();
b0.Size(0);
b0.Unbounded();
b1.Resolver();
b0.Production_();
b0.NonTerminal("ActualArgument");
b0.Concatenate_(3);
b0.Optional_();
b0.As_();
b0.NonTerminal("Identifier");
b0.Name("keyword");
b0._As();
b0._Optional();
b0.LiteralTerminal_();
b0.RegExp(":");
b0.Category("DELIMITER");
b0.Literal(":");
b0._LiteralTerminal();
b0.As_();
b0.NonTerminal("Expression");
b0.Name("value");
b0._As();
b0._Concatenate();
b1.Resolver();
b0._Production();
b0._Repeat();
b1.Resolver();
b0._Production();
b0._Concatenate();
b0.Name("message");
b0._As();
b0.LiteralTerminal_();
b0.RegExp("]");
b0.Category("DELIMITER");
b0.Literal("]");
b0._LiteralTerminal();
b0._Concatenate();
b1.Resolver();
b0._Production();
b0.Production_();
b0.NonTerminal("YES");
b0.LiteralTerminal_();
b0.RegExp("YES");
b0.Category("DELIMITER");
b0.Literal("YES");
b0._LiteralTerminal();
b1.Resolver();
b0._Production();
b0.Production_();
b0.NonTerminal("NO");
b0.LiteralTerminal_();
b0.RegExp("NO");
b0.Category("DELIMITER");
b0.Literal("NO");
b0._LiteralTerminal();
b1.Resolver();
b0._Production();
b0.Production_();
b0.NonTerminal("Nil");
b0.LiteralTerminal_();
b0.RegExp("nil");
b0.Category("DELIMITER");
b0.Literal("nil");
b0._LiteralTerminal();
b1.Resolver();
b0._Production();
b0.Production_();
b0.NonTerminal("UnparsedExpression");
b0.DataTerminal_();
b0.RegExp("[^;{}]+(?:\\{[^}]*\\})?[^;}]*");
b0.Category("LITERAL");
b0.Format("%s");
b0._DataTerminal();
b0.DataType("STRING");
b0._Production();
b0.NonTerminal("Identifier");
b0._Choose();
b1.Resolver();
b0._Production();
b0.Production_();
b0.NonTerminal("Names");
b0.Repeat_();
b0.Size(1);
b0.Unbounded();
b0.LiteralTerminal_();
b0.RegExp(",");
b0.Category("DELIMITER");
b0.Literal(",");
b0._LiteralTerminal();
b0.NonTerminal("Identifier");
b0._Repeat();
b1.Resolver();
b0._Production();
b0.Production_();
b0.NonTerminal("Identifier");
b0.DataTerminal_();
b0.RegExp("[_a-zA-Z][_a-zA-Z0-9]*");
b0.Category("LITERAL");
b0.Format("%s");
b0._DataTerminal();
b0.DataType("STRING");
b0._Production();
b0.Production_();
b0.NonTerminal("Macro");
b0.Concatenate_(2);
b0.As_();
b0.NonTerminal("Identifier");
b0.Name("name");
b0._As();
b0.Optional_();
b0.As_();
b0.Production_();
b0.NonTerminal("ReplacementParameters");
b0.Concatenate_(3);
b0.LiteralTerminal_();
b0.RegExp("\\Q(\\E");
b0.Category("DELIMITER");
b0.Literal("(");
b0._LiteralTerminal();
b0.Repeat_();
b0.Size(0);
b0.Unbounded();
b0.Concatenate_(2);
b0.LiteralTerminal_();
b0.RegExp(",");
b0.Category("DELIMITER");
b0.Literal(",");
b0._LiteralTerminal();
b0.Space();
b0._Concatenate();
b0.Split_();
b0.ByDelimiter_();
b0.RegExp("[,)]");
b0._ByDelimiter();
b0.NonTerminal("MacroReplacement");
b0._Split();
b0._Repeat();
b0.LiteralTerminal_();
b0.RegExp("\\Q)\\E");
b0.Category("DELIMITER");
b0.Literal(")");
b0._LiteralTerminal();
b0._Concatenate();
b1.Resolver();
b0._Production();
b0.Name("replacementParameters");
b0._As();
b0._Optional();
b0._Concatenate();
b1.Resolver();
b0._Production();
b0._Productions();
b0.URI("whole:org.whole.lang.objectivec.grammars:ObjectiveCGrammar:1.0.0");
b0.Namespace("org.whole.lang.objectivec.grammars");
b0.Version("1.0.0");
b1.Resolver();
b1.Resolver();
b1.Resolver();
b0._Grammar();
}
}