Ejemplo n.º 1
0
        public virtual Token Peek()
        {
            while (token == null)
            {
                token = GetToken();
                Filter();
            }

            return token;
        }
Ejemplo n.º 2
0
        protected virtual void Unread(Token token)
        {
            String text = token.Text;
            int length = text.Length;

            for (int i = length - 1; i >= 0; i--)
            {
                eof = false;

                input.Unread(text[i]);
            }

            pos = token.Pos - 1;
            line = token.Line - 1;
        }
 private void CheckPropertyAccessibility(APropertyDecl property, bool needSetter, Token token)
 {
     ErrorCollection.Error subError = new ErrorCollection.Error(property.GetName(), Util.GetAncestor<AASourceFile>(property), LocRM.GetString("ErrorText62"));
     if (!needSetter && property.GetGetter() == null)
         errors.Add(new ErrorCollection.Error(token, Util.GetAncestor<AASourceFile>(token), LocRM.GetString("ErrorText75"), false, subError));
     if (needSetter && property.GetSetter() == null)
         errors.Add(new ErrorCollection.Error(token, Util.GetAncestor<AASourceFile>(token), LocRM.GetString("ErrorText75"), false, subError));
 }
Ejemplo n.º 4
0
        public virtual Token Next()
        {
            while (token == null)
            {
                token = GetToken();
                Filter();
            }

            Token result = token;
            token = null;
            return result;
        }
        public static void GetTargets(string name,
            Token node,
            Node reciever, //Either null, AAName, or PExp
            PType returnType, //Either null, or Some type the method return type must be assignable to
            List<PType> argTypes,
            List<AMethodDecl> candidates,
            out bool matchArrayResize,
            List<AMethodDecl> implicitCandidates,
            List<AMethodDecl> matchingNames,
            out PExp baseExp,
            List<AMethodDecl> matchingDelegates,
            SharedData data,
            ErrorCollection errors
            )
        {
            baseExp = null;
            matchArrayResize = false;
            if (reciever == null)
            {//A simple invoke
                //Look in current struct
                //Look in all visible namespaces
                //Look in library methods
                AStructDecl currentStruct = Util.GetAncestor<AStructDecl>(node);
                if (currentStruct != null)
                {
                    foreach (AMethodDecl methodDecl in data.StructMethods[currentStruct])
                    {
                        if (methodDecl.GetName().Text == name &&
                            methodDecl.GetFormals().Count == argTypes.Count &&
                            methodDecl.GetDelegate() == null)
                        {
                            matchingNames.Add(methodDecl);

                            //Visibility
                            if (methodDecl.GetVisibilityModifier() is APrivateVisibilityModifier &&
                                Util.GetAncestor<AStructDecl>(methodDecl) != currentStruct)
                                continue;
                            if (methodDecl.GetVisibilityModifier() is AProtectedVisibilityModifier &&
                                !Util.Extends(Util.GetAncestor<AStructDecl>(methodDecl), currentStruct, data))
                                continue;
                            if (methodDecl.GetStatic() == null &&
                                Util.IsStaticContext(node))
                                continue;

                            //Check return type
                            if (returnType != null && !(returnType is AVoidType) &&
                                !Assignable(methodDecl.GetReturnType(), returnType))
                                continue;

                            //Check that parameters are assignable
                            bool add = true;
                            bool matchImplicit = false;
                            for (int i = 0; i < argTypes.Count; i++)
                            {
                                PType argType = argTypes[i];
                                AALocalDecl formal = (AALocalDecl) methodDecl.GetFormals()[i];
                                PType formalType = formal.GetType();
                                if (formal.GetOut() != null && !Assignable(formalType, argType)
                                    ||
                                    formal.GetRef() != null &&
                                    !(Assignable(argType, formalType) && Assignable(formalType, argType))
                                    ||
                                    formal.GetOut() == null && formal.GetRef() == null &&
                                    !Assignable(argType, formalType))
                                {
                                    add = false;
                                    if (formal.GetOut() == null && formal.GetRef() == null &&
                                        ImplicitAssignable(argType, formalType))
                                    {
                                        matchImplicit = true;
                                    }
                                    else
                                    {
                                        matchImplicit = false;
                                        break;
                                    }
                                }
                            }
                            if (!add && !matchImplicit)
                                continue;
                            if (candidates.Count == 0)
                            {//Set base exp
                                if (methodDecl.GetStatic() != null)
                                {
                                    //Calling static method
                                    baseExp = null;
                                }
                                else if (currentStruct.GetClassToken() != null || Util.HasAncestor<AConstructorDecl>(node) || Util.HasAncestor<ADeconstructorDecl>(node))
                                {//Dynamic context
                                    baseExp = new ALvalueExp(new APointerLvalue(new TStar("*"),
                                                                 new ALvalueExp(new AThisLvalue(new TThis("this")))));
                                }
                                else
                                {//Struct method to struct method
                                    baseExp = null;
                                }
                            }
                            if (add)
                                candidates.Add(methodDecl);
                            if (matchImplicit)
                                implicitCandidates.Add(methodDecl);
                        }
                    }
                }
                if (candidates.Count + implicitCandidates.Count == 0)
                {
                    //Global methods
                    List<IList> visibleDecls = Util.GetVisibleDecls(node, true);
                    AASourceFile currentFile = Util.GetAncestor<AASourceFile>(node);
                    List<string> currentNamespace = Util.GetFullNamespace(node);
                    foreach (IList declList in visibleDecls)
                    {
                        bool isSameFile = false;
                        bool isSameNamespace = false;
                        if (declList.Count > 0)
                        {
                            isSameFile = currentFile == Util.GetAncestor<AASourceFile>((PDecl) declList[0]);
                            isSameNamespace = Util.NamespacesEquals(currentNamespace,
                                                                    Util.GetFullNamespace((PDecl) declList[0]));
                        }
                        foreach (PDecl decl in declList)
                        {
                            if (decl is AMethodDecl)
                            {
                                AMethodDecl methodDecl = (AMethodDecl) decl;
                                if (methodDecl.GetName().Text == name &&
                                    methodDecl.GetFormals().Count == argTypes.Count &&
                                    methodDecl.GetDelegate() == null)
                                {
                                    matchingNames.Add(methodDecl);

                                    //Visibility
                                    if (methodDecl.GetVisibilityModifier() is APrivateVisibilityModifier &&
                                        !isSameNamespace)
                                        continue;
                                    if (methodDecl.GetStatic() != null &&
                                        !isSameFile)
                                        continue;
                                    //Check return type
                                    if (returnType != null && !(returnType is AVoidType) &&
                                        !Assignable(methodDecl.GetReturnType(), returnType))
                                        continue;

                                    //Check that parameters are assignable
                                    bool add = true;
                                    bool matchImplicit = false;
                                    for (int i = 0; i < argTypes.Count; i++)
                                    {
                                        PType argType = argTypes[i];
                                        AALocalDecl formal = (AALocalDecl)methodDecl.GetFormals()[i];
                                        PType formalType = formal.GetType();
                                        if (formal.GetOut() != null && !Assignable(formalType, argType)
                                            ||
                                            formal.GetRef() != null &&
                                            !(Assignable(argType, formalType) && Assignable(formalType, argType))
                                            ||
                                            formal.GetOut() == null && formal.GetRef() == null &&
                                            !Assignable(argType, formalType))
                                        {
                                            add = false;
                                            if (formal.GetOut() == null && formal.GetRef() == null &&
                                                ImplicitAssignable(argType, formalType))
                                            {
                                                matchImplicit = true;
                                            }
                                            else
                                            {
                                                matchImplicit = false;
                                                break;
                                            }
                                        }
                                    }
                                    if (!add && !matchImplicit)
                                        continue;
                                    if (add)
                                        candidates.Add(methodDecl);
                                    if (matchImplicit)
                                        implicitCandidates.Add(methodDecl);
                                }
                            }
                        }
                    }
                    //Library methods
                    foreach (AMethodDecl methodDecl in data.Libraries.Methods)
                    {
                        if (methodDecl.GetName().Text == name &&
                            methodDecl.GetFormals().Count == argTypes.Count &&
                            methodDecl.GetDelegate() == null)
                        {
                            matchingNames.Add(methodDecl);

                            //Visibility
                            //Okay, the library doesn't have any private methods. But hey.
                            if (methodDecl.GetVisibilityModifier() is APrivateVisibilityModifier &&
                                currentNamespace.Count > 0)
                                continue;
                            if (methodDecl.GetStatic() != null)
                                continue;
                            //Check return type
                            if (returnType != null && !(returnType is AVoidType) &&
                                !Assignable(methodDecl.GetReturnType(), returnType))
                                continue;

                            //Check that parameters are assignable
                            bool add = true;
                            bool matchImplicit = false;
                            for (int i = 0; i < argTypes.Count; i++)
                            {
                                PType argType = argTypes[i];
                                AALocalDecl formal = (AALocalDecl)methodDecl.GetFormals()[i];
                                PType formalType = formal.GetType();
                                if (formal.GetOut() != null && !Assignable(formalType, argType)
                                    ||
                                    formal.GetRef() != null &&
                                    !(Assignable(argType, formalType) && Assignable(formalType, argType))
                                    ||
                                    formal.GetOut() == null && formal.GetRef() == null &&
                                    !Assignable(argType, formalType))
                                {
                                    add = false;
                                    if (formal.GetOut() == null && formal.GetRef() == null &&
                                        ImplicitAssignable(argType, formalType))
                                    {
                                        matchImplicit = true;
                                    }
                                    else
                                    {
                                        matchImplicit = false;
                                        break;
                                    }
                                }
                            }
                            if (!add && !matchImplicit)
                                continue;
                            if (add)
                                candidates.Add(methodDecl);
                            if (matchImplicit)
                                implicitCandidates.Add(methodDecl);
                        }
                    }
                }
            }
            else if (reciever is AAName)
            {//Lookup possibilities for reciever
                List<List<Node>>[] targets;
                List<ANamespaceDecl> namespaces = new List<ANamespaceDecl>();
                bool reportedError;

                TypeLinking.GetTargets((AAName)reciever, out targets, namespaces, data, errors, out reportedError);

                if (reportedError)
                    throw new ParserException(node, "TypeChecking.GetTargets");

                AStructDecl currentStruct = Util.GetAncestor<AStructDecl>(node);
                int iteration;
                for (iteration = 0; iteration < targets.Length; iteration++)
                {
                    List<Node> matchingList = null;
                    foreach (List<Node> list in targets[iteration])
                    {
                        Node last = list[list.Count - 1];
                        PType type = null;
                        if (last is AALocalDecl)
                        {
                            type = ((AALocalDecl) last).GetType();
                        }
                        else if (last is APropertyDecl)
                        {
                            type = ((APropertyDecl) last).GetType();
                        }
                        else if (last is AFieldDecl)
                        {
                            type = ((AFieldDecl) last).GetType();
                        }
                        else if (last is TIdentifier)
                        {
                            type = new ANamedType(new TIdentifier("int"), null);
                        }
                        if (last is AStructDecl)
                        {
                            //Special. Static only
                            AStructDecl structDecl = ((AStructDecl)last);
                            foreach (AMethodDecl methodDecl in data.StructMethods[structDecl])
                            {
                                if (methodDecl.GetName().Text == name &&
                                    methodDecl.GetFormals().Count == argTypes.Count &&
                                    methodDecl.GetDelegate() == null)
                                {
                                    matchingNames.Add(methodDecl);

                                    //Visibility
                                    if (methodDecl.GetVisibilityModifier() is APrivateVisibilityModifier &&
                                        Util.GetAncestor<AStructDecl>(methodDecl) != currentStruct)
                                        continue;
                                    if (methodDecl.GetVisibilityModifier() is AProtectedVisibilityModifier &&
                                        !Util.Extends(Util.GetAncestor<AStructDecl>(methodDecl), currentStruct, data))
                                        continue;
                                    if (methodDecl.GetStatic() == null)
                                        continue;
                                    //Check return type
                                    if (returnType != null && !(returnType is AVoidType) &&
                                        !Assignable(methodDecl.GetReturnType(), returnType))
                                        continue;
                                    //Check that parameters are assignable
                                    bool add = true;
                                    bool matchImplicit = false;
                                    for (int j = 0; j < argTypes.Count; j++)
                                    {
                                        PType argType = argTypes[j];
                                        AALocalDecl formal = (AALocalDecl)methodDecl.GetFormals()[j];
                                        PType formalType = formal.GetType();
                                        if (formal.GetOut() != null && !Assignable(formalType, argType)
                                            ||
                                            formal.GetRef() != null &&
                                            !(Assignable(argType, formalType) && Assignable(formalType, argType))
                                            ||
                                            formal.GetOut() == null && formal.GetRef() == null &&
                                            !Assignable(argType, formalType))
                                        {
                                            add = false;
                                            if (formal.GetOut() == null && formal.GetRef() == null &&
                                                ImplicitAssignable(argType, formalType))
                                            {
                                                matchImplicit = true;
                                            }
                                            else
                                            {
                                                matchImplicit = false;
                                                break;
                                            }
                                        }
                                    }
                                    if (!add && !matchImplicit)
                                        continue;
                                    if (candidates.Count == 0)
                                    {//Set base exp
                                        //Calling static method
                                        baseExp = null;
                                    }
                                    if (add)
                                        candidates.Add(methodDecl);
                                    if (matchImplicit)
                                        implicitCandidates.Add(methodDecl);

                                }
                            }
                        }
                        else
                        {
                            //Find methods based on baseType
                            if (type is ANamedType && data.StructTypeLinks.ContainsKey((ANamedType) type) && !(data.Enums.ContainsKey(data.StructTypeLinks[(ANamedType) type])))
                            {
                                //Non static only
                                AStructDecl structDecl = data.StructTypeLinks[(ANamedType) type];
                                foreach (AMethodDecl methodDecl in data.StructMethods[structDecl])
                                {
                                    if (methodDecl.GetName().Text == name &&
                                        methodDecl.GetFormals().Count == argTypes.Count &&
                                        methodDecl.GetDelegate() == null)
                                    {
                                        matchingNames.Add(methodDecl);

                                        //Visibility
                                        if (methodDecl.GetVisibilityModifier() is APrivateVisibilityModifier &&
                                            Util.GetAncestor<AStructDecl>(methodDecl) != currentStruct)
                                            continue;
                                        if (methodDecl.GetVisibilityModifier() is AProtectedVisibilityModifier &&
                                            !Util.Extends(Util.GetAncestor<AStructDecl>(methodDecl), currentStruct, data))
                                            continue;
                                        if (methodDecl.GetStatic() != null)
                                            continue;
                                        //Check return type
                                        if (returnType != null && !(returnType is AVoidType) &&
                                            !Assignable(methodDecl.GetReturnType(), returnType))
                                            continue;
                                        //Check that parameters are assignable
                                        bool add = true;
                                        bool matchImplicit = false;
                                        for (int j = 0; j < argTypes.Count; j++)
                                        {
                                            PType argType = argTypes[j];
                                            AALocalDecl formal = (AALocalDecl)methodDecl.GetFormals()[j];
                                            PType formalType = formal.GetType();
                                            if (formal.GetOut() != null && !Assignable(formalType, argType)
                                                ||
                                                formal.GetRef() != null &&
                                                !(Assignable(argType, formalType) && Assignable(formalType, argType))
                                                ||
                                                formal.GetOut() == null && formal.GetRef() == null &&
                                                !Assignable(argType, formalType))
                                            {
                                                add = false;
                                                if (formal.GetOut() == null && formal.GetRef() == null &&
                                                    ImplicitAssignable(argType, formalType))
                                                {
                                                    matchImplicit = true;
                                                }
                                                else
                                                {
                                                    matchImplicit = false;
                                                    break;
                                                }
                                            }
                                        }
                                        if (!add && !matchImplicit)
                                            continue;
                                        if (candidates.Count == 0 && implicitCandidates.Count == 0)
                                        {//Set base exp
                                            baseExp = new ALvalueExp(TypeLinking.Link((AAName) reciever, node, list, data));
                                        }
                                        if (add)
                                            candidates.Add(methodDecl);
                                        if (matchImplicit)
                                            implicitCandidates.Add(methodDecl);
                                    }
                                }
                            }
                            else if (type is ANamedType && data.DelegateTypeLinks.ContainsKey((ANamedType)type))
                            {
                                if (matchingDelegates != null && name == "Invoke")
                                {
                                    AMethodDecl delegateDecl = data.DelegateTypeLinks[(ANamedType) type];
                                    if (delegateDecl.GetFormals().Count == argTypes.Count)
                                    {
                                        matchingNames.Add(delegateDecl);

                                        //Check return type
                                        if (returnType != null && !(returnType is AVoidType) &&
                                            !Assignable(delegateDecl.GetReturnType(), returnType))
                                            continue;
                                        //Check that parameters are assignable
                                        bool add = true;
                                        bool matchImplicit = false;
                                        for (int j = 0; j < argTypes.Count; j++)
                                        {
                                            PType argType = argTypes[j];
                                            AALocalDecl formal = (AALocalDecl)delegateDecl.GetFormals()[j];
                                            PType formalType = formal.GetType();
                                            if (formal.GetOut() != null && !Assignable(formalType, argType)
                                                ||
                                                formal.GetRef() != null &&
                                                !(Assignable(argType, formalType) && Assignable(formalType, argType))
                                                ||
                                                formal.GetOut() == null && formal.GetRef() == null &&
                                                !Assignable(argType, formalType))
                                            {
                                                add = false;
                                                if (formal.GetOut() == null && formal.GetRef() == null &&
                                                    ImplicitAssignable(argType, formalType))
                                                {
                                                    matchImplicit = true;
                                                }
                                                else
                                                {
                                                    matchImplicit = false;
                                                    break;
                                                }
                                            }
                                        }
                                        if (!add && !matchImplicit)
                                            continue;
                                        matchingDelegates.Add(delegateDecl);
                                        if (candidates.Count == 0 && implicitCandidates.Count == 0)
                                        {//Set base exp
                                            baseExp = new ALvalueExp(TypeLinking.Link((AAName)reciever, node, list, data));
                                        }
                                        if (add)
                                            candidates.Add(delegateDecl);
                                        if (matchImplicit)
                                            implicitCandidates.Add(delegateDecl);

                                    }
                                }
                            }
                            else
                            {
                                //Look for enrichments
                                List<IList> visibleDecls = Util.GetVisibleDecls(node, true);
                                AEnrichmentDecl currentEnrichment = Util.GetAncestor<AEnrichmentDecl>(node);
                                foreach (IList declList in visibleDecls)
                                {
                                    foreach (PDecl decl in declList)
                                    {
                                        if (decl is AEnrichmentDecl)
                                        {
                                            AEnrichmentDecl enrichment = (AEnrichmentDecl) decl;
                                            if (!Util.TypesEqual(type, enrichment.GetType(), data))
                                                continue;
                                            foreach (PDecl enrichmentDecl in enrichment.GetDecl())
                                            {
                                                if (enrichmentDecl is AMethodDecl)
                                                {
                                                    AMethodDecl methodDecl = (AMethodDecl) enrichmentDecl;

                                                    if (methodDecl.GetName().Text == name &&
                                                        methodDecl.GetFormals().Count == argTypes.Count &&
                                                        methodDecl.GetDelegate() == null)
                                                    {
                                                        matchingNames.Add(methodDecl);

                                                        //Visibility
                                                        if (methodDecl.GetVisibilityModifier() is APrivateVisibilityModifier &&
                                                            enrichment != currentEnrichment)
                                                            continue;
                                                        if (methodDecl.GetStatic() != null)
                                                            continue;
                                                        //Check return type
                                                        if (returnType != null && !(returnType is AVoidType) &&
                                                            !Assignable(methodDecl.GetReturnType(), returnType))
                                                            continue;
                                                        //Check that parameters are assignable
                                                        bool add = true;
                                                        bool matchImplicit = false;
                                                        for (int j = 0; j < argTypes.Count; j++)
                                                        {
                                                            PType argType = argTypes[j];
                                                            AALocalDecl formal = (AALocalDecl)methodDecl.GetFormals()[j];
                                                            PType formalType = formal.GetType();
                                                            if (formal.GetOut() != null && !Assignable(formalType, argType)
                                                                ||
                                                                formal.GetRef() != null &&
                                                                !(Assignable(argType, formalType) && Assignable(formalType, argType))
                                                                ||
                                                                formal.GetOut() == null && formal.GetRef() == null &&
                                                                !Assignable(argType, formalType))
                                                            {
                                                                add = false;
                                                                if (formal.GetOut() == null && formal.GetRef() == null &&
                                                                    ImplicitAssignable(argType, formalType))
                                                                {
                                                                    matchImplicit = true;
                                                                }
                                                                else
                                                                {
                                                                    matchImplicit = false;
                                                                    break;
                                                                }
                                                            }
                                                        }
                                                        if (!add && !matchImplicit)
                                                            continue;
                                                        if (candidates.Count == 0 && implicitCandidates.Count == 0)
                                                        {//Set base exp
                                                            baseExp = new ALvalueExp(TypeLinking.Link((AAName)reciever, node, list, data));
                                                        }
                                                        if (add)
                                                            candidates.Add(methodDecl);
                                                        if (matchImplicit)
                                                            implicitCandidates.Add(methodDecl);
                                                    }
                                                }
                                            }
                                        }
                                    }
                                }
                            }
                        }
                    }
                    if (candidates.Count + implicitCandidates.Count > 0)
                        break;
                }
                if (iteration >= 2)
                {//The search continued to global variables. Look in namespaces as well
                    AASourceFile currentFile = Util.GetAncestor<AASourceFile>(node);
                    List<string> currentNamespace = Util.GetFullNamespace(node);
                    foreach (ANamespaceDecl namespaceDecl in namespaces)
                    {
                        bool isSameFile = Util.GetAncestor<AASourceFile>(namespaceDecl) == currentFile;
                        bool isSameNamespace = Util.NamespacesEquals(currentNamespace,
                                                                     Util.GetFullNamespace(namespaceDecl));
                        foreach (PDecl decl in namespaceDecl.GetDecl())
                        {
                            if (decl is AMethodDecl)
                            {
                                AMethodDecl methodDecl = (AMethodDecl) decl;
                                if (methodDecl.GetName().Text == name &&
                                    methodDecl.GetFormals().Count == argTypes.Count &&
                                    methodDecl.GetDelegate() == null)
                                {
                                    matchingNames.Add(methodDecl);

                                    //Visibility
                                    if (methodDecl.GetVisibilityModifier() is APrivateVisibilityModifier &&
                                        !isSameNamespace)
                                        continue;
                                    if (methodDecl.GetStatic() != null &&
                                        !isSameFile)
                                        continue;
                                    //Check return type
                                    if (returnType != null && !(returnType is AVoidType) &&
                                        !Assignable(methodDecl.GetReturnType(), returnType))
                                        continue;

                                    //Check that parameters are assignable
                                    bool add = true;
                                    bool matchImplicit = false;
                                    for (int i = 0; i < argTypes.Count; i++)
                                    {
                                        PType argType = argTypes[i];
                                        AALocalDecl formal = (AALocalDecl)methodDecl.GetFormals()[i];
                                        PType formalType = formal.GetType();
                                        if (formal.GetOut() != null && !Assignable(formalType, argType)
                                            ||
                                            formal.GetRef() != null &&
                                            !(Assignable(argType, formalType) && Assignable(formalType, argType))
                                            ||
                                            formal.GetOut() == null && formal.GetRef() == null &&
                                            !Assignable(argType, formalType))
                                        {
                                            add = false;
                                            if (formal.GetOut() == null && formal.GetRef() == null &&
                                                ImplicitAssignable(argType, formalType))
                                            {
                                                matchImplicit = true;
                                            }
                                            else
                                            {
                                                matchImplicit = false;
                                                break;
                                            }
                                        }
                                    }
                                    if (!add && !matchImplicit)
                                        continue;
                                    if (add)
                                        candidates.Add(methodDecl);
                                    if (matchImplicit)
                                        implicitCandidates.Add(methodDecl);
                                }
                            }
                        }
                    }
                }
            }
            else
            {//Get base type from exp, and find matching enrichment/struct
                PType type = data.ExpTypes[(PExp) reciever];

                if (type is ADynamicArrayType && name == "Resize" && argTypes.Count == 1 && Assignable(argTypes[0], new ANamedType(new TIdentifier("int"), null)))
                {
                    matchArrayResize = true;
                    baseExp = (PExp) reciever;
                }

                AStructDecl currentStruct = Util.GetAncestor<AStructDecl>(node);
                if (type is ANamedType && data.StructTypeLinks.ContainsKey((ANamedType)type))
                {
                    //Non static only
                    AStructDecl structDecl = data.StructTypeLinks[(ANamedType)type];
                    foreach (AMethodDecl methodDecl in data.StructMethods[structDecl])
                    {
                        if (methodDecl.GetName().Text == name &&
                            methodDecl.GetFormals().Count == argTypes.Count &&
                            methodDecl.GetDelegate() == null)
                        {
                            matchingNames.Add(methodDecl);

                            //Visibility
                            if (methodDecl.GetVisibilityModifier() is APrivateVisibilityModifier &&
                                Util.GetAncestor<AStructDecl>(methodDecl) != currentStruct)
                                continue;
                            if (methodDecl.GetVisibilityModifier() is AProtectedVisibilityModifier &&
                                !Util.Extends(Util.GetAncestor<AStructDecl>(methodDecl), currentStruct, data))
                                continue;
                            if (methodDecl.GetStatic() != null)
                                continue;
                            //Check return type
                            if (returnType != null && !(returnType is AVoidType) &&
                                !Assignable(methodDecl.GetReturnType(), returnType))
                                continue;
                            //Check that parameters are assignable
                            bool add = true;
                            bool matchImplicit = false;
                            for (int j = 0; j < argTypes.Count; j++)
                            {
                                PType argType = argTypes[j];
                                AALocalDecl formal = (AALocalDecl)methodDecl.GetFormals()[j];
                                PType formalType = formal.GetType();
                                if (formal.GetOut() != null && !Assignable(formalType, argType)
                                    ||
                                    formal.GetRef() != null &&
                                    !(Assignable(argType, formalType) && Assignable(formalType, argType))
                                    ||
                                    formal.GetOut() == null && formal.GetRef() == null &&
                                    !Assignable(argType, formalType))
                                {
                                    add = false;
                                    if (formal.GetOut() == null && formal.GetRef() == null &&
                                        ImplicitAssignable(argType, formalType))
                                    {
                                        matchImplicit = true;
                                    }
                                    else
                                    {
                                        matchImplicit = false;
                                        break;
                                    }
                                }
                            }
                            if (!add && !matchImplicit)
                                continue;
                            if (candidates.Count == 0 && implicitCandidates.Count == 0)
                            {//Set base exp
                                baseExp = (PExp)reciever;
                            }
                            if (add)
                                candidates.Add(methodDecl);
                            if (matchImplicit)
                                implicitCandidates.Add(methodDecl);
                        }
                    }
                }

                else if (type is ANamedType && data.DelegateTypeLinks.ContainsKey((ANamedType)type))
                {
                    if (matchingDelegates != null && name == "Invoke")
                    {
                        AMethodDecl delegateDecl = data.DelegateTypeLinks[(ANamedType)type];
                        if (delegateDecl.GetFormals().Count == argTypes.Count)
                        {
                            matchingNames.Add(delegateDecl);

                            //Check return type
                            if (!(returnType != null && !(returnType is AVoidType) &&
                                !Assignable(delegateDecl.GetReturnType(), returnType)))
                            {
                                //Check that parameters are assignable
                                bool add = true;
                                bool matchImplicit = false;
                                for (int j = 0; j < argTypes.Count; j++)
                                {
                                    PType argType = argTypes[j];
                                    AALocalDecl formal = (AALocalDecl) delegateDecl.GetFormals()[j];
                                    PType formalType = formal.GetType();
                                    if (formal.GetOut() != null && !Assignable(formalType, argType)
                                        ||
                                        formal.GetRef() != null &&
                                        !(Assignable(argType, formalType) && Assignable(formalType, argType))
                                        ||
                                        formal.GetOut() == null && formal.GetRef() == null &&
                                        !Assignable(argType, formalType))
                                    {
                                        add = false;
                                        if (formal.GetOut() == null && formal.GetRef() == null &&
                                            ImplicitAssignable(argType, formalType))
                                        {
                                            matchImplicit = true;
                                        }
                                        else
                                        {
                                            matchImplicit = false;
                                            break;
                                        }
                                    }
                                }
                                if (add || matchImplicit)
                                {
                                    matchingDelegates.Add(delegateDecl);
                                    if (candidates.Count == 0 && implicitCandidates.Count == 0)
                                    {
                                        //Set base exp
                                        baseExp = (PExp)reciever;
                                    }
                                    if (add)
                                        candidates.Add(delegateDecl);
                                    if (matchImplicit)
                                        implicitCandidates.Add(delegateDecl);
                                }
                            }
                        }
                    }
                }
                else
                {
                    //Look for enrichments
                    List<IList> visibleDecls = Util.GetVisibleDecls(node, true);
                    AEnrichmentDecl currentEnrichment = Util.GetAncestor<AEnrichmentDecl>(node);
                    foreach (IList declList in visibleDecls)
                    {
                        foreach (PDecl decl in declList)
                        {
                            if (decl is AEnrichmentDecl)
                            {
                                AEnrichmentDecl enrichment = (AEnrichmentDecl)decl;
                                if (!Util.TypesEqual(type, enrichment.GetType(), data))
                                    continue;
                                foreach (PDecl enrichmentDecl in enrichment.GetDecl())
                                {
                                    if (enrichmentDecl is AMethodDecl)
                                    {
                                        AMethodDecl methodDecl = (AMethodDecl)enrichmentDecl;

                                        if (methodDecl.GetName().Text == name &&
                                            methodDecl.GetFormals().Count == argTypes.Count &&
                                            methodDecl.GetDelegate() == null)
                                        {
                                            matchingNames.Add(methodDecl);

                                            //Visibility
                                            if (methodDecl.GetVisibilityModifier() is APrivateVisibilityModifier &&
                                                enrichment != currentEnrichment)
                                                continue;
                                            if (methodDecl.GetStatic() != null)
                                                continue;
                                            //Check return type
                                            if (returnType != null && !(returnType is AVoidType) &&
                                                !Assignable(methodDecl.GetReturnType(), returnType))
                                                continue;
                                            //Check that parameters are assignable
                                            bool add = true;
                                            bool matchImplicit = false;
                                            for (int j = 0; j < argTypes.Count; j++)
                                            {
                                                PType argType = argTypes[j];
                                                AALocalDecl formal = (AALocalDecl)methodDecl.GetFormals()[j];
                                                PType formalType = formal.GetType();
                                                if (formal.GetOut() != null && !Assignable(formalType, argType)
                                                    ||
                                                    formal.GetRef() != null &&
                                                    !(Assignable(argType, formalType) && Assignable(formalType, argType))
                                                    ||
                                                    formal.GetOut() == null && formal.GetRef() == null &&
                                                    !Assignable(argType, formalType))
                                                {
                                                    add = false;
                                                    if (formal.GetOut() == null && formal.GetRef() == null &&
                                                        ImplicitAssignable(argType, formalType))
                                                    {
                                                        matchImplicit = true;
                                                    }
                                                    else
                                                    {
                                                        matchImplicit = false;
                                                        break;
                                                    }
                                                }
                                            }
                                            if (!add && !matchImplicit)
                                                continue;
                                            if (candidates.Count == 0 && implicitCandidates.Count == 0)
                                            {//Set base exp
                                                baseExp = (PExp)reciever;
                                            }
                                            if (add)
                                                candidates.Add(methodDecl);
                                            if (matchImplicit)
                                                implicitCandidates.Add(methodDecl);
                                        }
                                    }
                                }
                            }
                        }
                    }
                }
            }
            int candidateCount = candidates.Count + (matchArrayResize ? 1 : 0);
            if (candidateCount + implicitCandidates.Count == 0 && !matchArrayResize)
            {
                List<ErrorCollection.Error> subErrors = new List<ErrorCollection.Error>();
                foreach (AMethodDecl matchingName in matchingNames)
                {
                    subErrors.Add(new ErrorCollection.Error(matchingName.GetName(), LocRM.GetString("ErrorText124")));
                }
                errors.Add(new ErrorCollection.Error(node, LocRM.GetString("ErrorText125"), false, subErrors.ToArray()));
                throw new ParserException(node, "TypeChecking.GetTargets");
            }
            if (candidateCount > 1)
            {
                List<ErrorCollection.Error> subErrors = new List<ErrorCollection.Error>();
                foreach (AMethodDecl matchingName in candidates)
                {
                    subErrors.Add(new ErrorCollection.Error(matchingName.GetName(), LocRM.GetString("ErrorText38")));
                }
                if (matchArrayResize)
                    subErrors.Add(new ErrorCollection.Error(node, LocRM.GetString("ErrorText126")));
                errors.Add(new ErrorCollection.Error(node, LocRM.GetString("ErrorText127"), false, subErrors.ToArray()));
                throw new ParserException(node, "TypeChecking.GetTargets");
            }
            if (candidateCount == 0 && implicitCandidates.Count > 1)
            {
                List<ErrorCollection.Error> subErrors = new List<ErrorCollection.Error>();
                foreach (AMethodDecl matchingName in implicitCandidates)
                {
                    subErrors.Add(new ErrorCollection.Error(matchingName.GetName(), LocRM.GetString("ErrorText38")));
                }
                errors.Add(new ErrorCollection.Error(node, LocRM.GetString("ErrorText128"), false, subErrors.ToArray()));
                throw new ParserException(node, "TypeChecking.GetTargets");
            }
        }
 private void CheckAssignedOutParameters(IEnumerable<AALocalDecl> formals, Token token)
 {
     foreach (AALocalDecl formal in formals)
     {
         if (formal.GetOut() != null && !assignedToOutParams.Contains(formal))
         {
             errors.Add(new ErrorCollection.Error(token ?? formal.GetName(), currentSourceFile, LocRM.GetString("ErrorText162")));
         }
     }
 }
Ejemplo n.º 7
0
        public override void CaseAArrayTempType(AArrayTempType node)
        {
            /*if (node.GetDimention() is ALvalueExp && ((ALvalueExp)node.GetDimention()).GetLvalue() is AAmbiguousNameLvalue)
            {
                AAmbiguousNameLvalue lvalue = (AAmbiguousNameLvalue) ((ALvalueExp) node.GetDimention()).GetLvalue();
                ASimpleName name = (ASimpleName) lvalue.GetAmbiguous();
                if (name.GetIdentifier().Text == "PlayerData")
                    node = node;
            }*/
            if (!isInANewExp && !data.IsLiteCompile)
            {
                bool wasFolding = foldIntegerConstants;
                bool foldFailedBefore = foldingFailed;

                foldIntegerConstants = true;
                foldingFailed = false;
                integerConstant = 0;
                integerConstantToken = node.GetToken();
                CheckValidConstExp(node.GetDimention());
                base.CaseAArrayTempType(node);
                foldIntegerConstants = false;
                if (!foldingFailed)
                    node.SetIntDim(new TIntegerLiteral(integerConstant.ToString()));

                foldIntegerConstants = wasFolding;
                foldingFailed = foldFailedBefore;

            }
            else
            {
                base.CaseAArrayTempType(node);
            }
        }
Ejemplo n.º 8
0
 public static TextPoint FromCompilerCoords(Token token)
 {
     return FromCompilerCoords(token.Line, token.Pos);
 }
Ejemplo n.º 9
0
 public ParserException(Token token, String  message)
     : base(message)
 {
     this.token = token;
 }
Ejemplo n.º 10
0
        public Start Parse()
        {
            Push(0, null);

            IList ign = null;
            while(true)
            {
            while(Index(lexer.Peek()) == -1)
            {
                if(ign == null)
                {
                    ign = new TypedList(NodeCast.Instance);
                }

                ign.Add(lexer.Next());
            }

            if(ign != null)
            {
                ignoredTokens.SetIn(lexer.Peek(), ign);
                ign = null;
            }

            last_pos = lexer.Peek().Pos;
            last_line = lexer.Peek().Line;
            last_token = lexer.Peek();

            int index = Index(lexer.Peek());
            action[0] = actionTable[State()][0][1];
            action[1] = actionTable[State()][0][2];

            int low = 1;
            int high = actionTable[State()].Length - 1;

            while(low <= high)
            {
                int middle = (low + high) / 2;

                if(index < actionTable[State()][middle][0])
                {
                    high = middle - 1;
                }
                else if(index > actionTable[State()][middle][0])
                {
                    low = middle + 1;
                }
                else
                {
                    action[0] = actionTable[State()][middle][1];
                    action[1] = actionTable[State()][middle][2];
                    break;
                }
            }

            switch(action[0])
            {
                case SHIFT:
            {
            ArrayList list = new ArrayList();
            list.Add(lexer.Next());
                        Push(action[1], list);
                        last_shift = action[1];
                    }
            break;
                case REDUCE:
                    switch(action[1])
                    {
                    case 0:
            {
              ArrayList list = New0();
              Push(GoTo(0), list);
            }
            break;
                    case 1:
            {
              ArrayList list = New1();
              Push(GoTo(0), list);
            }
            break;
                    case 2:
            {
              ArrayList list = New2();
              Push(GoTo(0), list);
            }
            break;
                    case 3:
            {
              ArrayList list = New3();
              Push(GoTo(0), list);
            }
            break;
                    case 4:
            {
              ArrayList list = New4();
              Push(GoTo(0), list);
            }
            break;
                    case 5:
            {
              ArrayList list = New5();
              Push(GoTo(0), list);
            }
            break;
                    case 6:
            {
              ArrayList list = New6();
              Push(GoTo(0), list);
            }
            break;
                    case 7:
            {
              ArrayList list = New7();
              Push(GoTo(0), list);
            }
            break;
                    case 8:
            {
              ArrayList list = New8();
              Push(GoTo(1), list);
            }
            break;
                    case 9:
            {
              ArrayList list = New9();
              Push(GoTo(2), list);
            }
            break;
                    case 10:
            {
              ArrayList list = New10();
              Push(GoTo(2), list);
            }
            break;
                    case 11:
            {
              ArrayList list = New11();
              Push(GoTo(3), list);
            }
            break;
                    case 12:
            {
              ArrayList list = New12();
              Push(GoTo(3), list);
            }
            break;
                    case 13:
            {
              ArrayList list = New13();
              Push(GoTo(3), list);
            }
            break;
                    case 14:
            {
              ArrayList list = New14();
              Push(GoTo(3), list);
            }
            break;
                    case 15:
            {
              ArrayList list = New15();
              Push(GoTo(3), list);
            }
            break;
                    case 16:
            {
              ArrayList list = New16();
              Push(GoTo(3), list);
            }
            break;
                    case 17:
            {
              ArrayList list = New17();
              Push(GoTo(3), list);
            }
            break;
                    case 18:
            {
              ArrayList list = New18();
              Push(GoTo(3), list);
            }
            break;
                    case 19:
            {
              ArrayList list = New19();
              Push(GoTo(3), list);
            }
            break;
                    case 20:
            {
              ArrayList list = New20();
              Push(GoTo(3), list);
            }
            break;
                    case 21:
            {
              ArrayList list = New21();
              Push(GoTo(3), list);
            }
            break;
                    case 22:
            {
              ArrayList list = New22();
              Push(GoTo(3), list);
            }
            break;
                    case 23:
            {
              ArrayList list = New23();
              Push(GoTo(3), list);
            }
            break;
                    case 24:
            {
              ArrayList list = New24();
              Push(GoTo(3), list);
            }
            break;
                    case 25:
            {
              ArrayList list = New25();
              Push(GoTo(4), list);
            }
            break;
                    case 26:
            {
              ArrayList list = New26();
              Push(GoTo(4), list);
            }
            break;
                    case 27:
            {
              ArrayList list = New27();
              Push(GoTo(4), list);
            }
            break;
                    case 28:
            {
              ArrayList list = New28();
              Push(GoTo(4), list);
            }
            break;
                    case 29:
            {
              ArrayList list = New29();
              Push(GoTo(5), list);
            }
            break;
                    case 30:
            {
              ArrayList list = New30();
              Push(GoTo(5), list);
            }
            break;
                    case 31:
            {
              ArrayList list = New31();
              Push(GoTo(6), list);
            }
            break;
                    case 32:
            {
              ArrayList list = New32();
              Push(GoTo(6), list);
            }
            break;
                    case 33:
            {
              ArrayList list = New33();
              Push(GoTo(7), list);
            }
            break;
                    case 34:
            {
              ArrayList list = New34();
              Push(GoTo(8), list);
            }
            break;
                    case 35:
            {
              ArrayList list = New35();
              Push(GoTo(8), list);
            }
            break;
                    case 36:
            {
              ArrayList list = New36();
              Push(GoTo(8), list);
            }
            break;
                    case 37:
            {
              ArrayList list = New37();
              Push(GoTo(8), list);
            }
            break;
                    case 38:
            {
              ArrayList list = New38();
              Push(GoTo(9), list);
            }
            break;
                    case 39:
            {
              ArrayList list = New39();
              Push(GoTo(9), list);
            }
            break;
                    case 40:
            {
              ArrayList list = New40();
              Push(GoTo(9), list);
            }
            break;
                    case 41:
            {
              ArrayList list = New41();
              Push(GoTo(9), list);
            }
            break;
                    case 42:
            {
              ArrayList list = New42();
              Push(GoTo(9), list);
            }
            break;
                    case 43:
            {
              ArrayList list = New43();
              Push(GoTo(9), list);
            }
            break;
                    case 44:
            {
              ArrayList list = New44();
              Push(GoTo(9), list);
            }
            break;
                    case 45:
            {
              ArrayList list = New45();
              Push(GoTo(9), list);
            }
            break;
                    case 46:
            {
              ArrayList list = New46();
              Push(GoTo(9), list);
            }
            break;
                    case 47:
            {
              ArrayList list = New47();
              Push(GoTo(9), list);
            }
            break;
                    case 48:
            {
              ArrayList list = New48();
              Push(GoTo(9), list);
            }
            break;
                    case 49:
            {
              ArrayList list = New49();
              Push(GoTo(9), list);
            }
            break;
                    case 50:
            {
              ArrayList list = New50();
              Push(GoTo(9), list);
            }
            break;
                    case 51:
            {
              ArrayList list = New51();
              Push(GoTo(9), list);
            }
            break;
                    case 52:
            {
              ArrayList list = New52();
              Push(GoTo(9), list);
            }
            break;
                    case 53:
            {
              ArrayList list = New53();
              Push(GoTo(9), list);
            }
            break;
                    case 54:
            {
              ArrayList list = New54();
              Push(GoTo(10), list);
            }
            break;
                    case 55:
            {
              ArrayList list = New55();
              Push(GoTo(10), list);
            }
            break;
                    case 56:
            {
              ArrayList list = New56();
              Push(GoTo(11), list);
            }
            break;
                    case 57:
            {
              ArrayList list = New57();
              Push(GoTo(11), list);
            }
            break;
                    case 58:
            {
              ArrayList list = New58();
              Push(GoTo(11), list);
            }
            break;
                    case 59:
            {
              ArrayList list = New59();
              Push(GoTo(11), list);
            }
            break;
                    case 60:
            {
              ArrayList list = New60();
              Push(GoTo(11), list);
            }
            break;
                    case 61:
            {
              ArrayList list = New61();
              Push(GoTo(11), list);
            }
            break;
                    case 62:
            {
              ArrayList list = New62();
              Push(GoTo(11), list);
            }
            break;
                    case 63:
            {
              ArrayList list = New63();
              Push(GoTo(11), list);
            }
            break;
                    case 64:
            {
              ArrayList list = New64();
              Push(GoTo(11), list);
            }
            break;
                    case 65:
            {
              ArrayList list = New65();
              Push(GoTo(11), list);
            }
            break;
                    case 66:
            {
              ArrayList list = New66();
              Push(GoTo(11), list);
            }
            break;
                    case 67:
            {
              ArrayList list = New67();
              Push(GoTo(11), list);
            }
            break;
                    case 68:
            {
              ArrayList list = New68();
              Push(GoTo(11), list);
            }
            break;
                    case 69:
            {
              ArrayList list = New69();
              Push(GoTo(11), list);
            }
            break;
                    case 70:
            {
              ArrayList list = New70();
              Push(GoTo(12), list);
            }
            break;
                    case 71:
            {
              ArrayList list = New71();
              Push(GoTo(13), list);
            }
            break;
                    case 72:
            {
              ArrayList list = New72();
              Push(GoTo(14), list);
            }
            break;
                    case 73:
            {
              ArrayList list = New73();
              Push(GoTo(14), list);
            }
            break;
                    case 74:
            {
              ArrayList list = New74();
              Push(GoTo(14), list);
            }
            break;
                    case 75:
            {
              ArrayList list = New75();
              Push(GoTo(14), list);
            }
            break;
                    case 76:
            {
              ArrayList list = New76();
              Push(GoTo(15), list);
            }
            break;
                    case 77:
            {
              ArrayList list = New77();
              Push(GoTo(15), list);
            }
            break;
                    case 78:
            {
              ArrayList list = New78();
              Push(GoTo(15), list);
            }
            break;
                    case 79:
            {
              ArrayList list = New79();
              Push(GoTo(15), list);
            }
            break;
                    case 80:
            {
              ArrayList list = New80();
              Push(GoTo(15), list);
            }
            break;
                    case 81:
            {
              ArrayList list = New81();
              Push(GoTo(15), list);
            }
            break;
                    case 82:
            {
              ArrayList list = New82();
              Push(GoTo(15), list);
            }
            break;
                    case 83:
            {
              ArrayList list = New83();
              Push(GoTo(15), list);
            }
            break;
                    case 84:
            {
              ArrayList list = New84();
              Push(GoTo(16), list);
            }
            break;
                    case 85:
            {
              ArrayList list = New85();
              Push(GoTo(17), list);
            }
            break;
                    case 86:
            {
              ArrayList list = New86();
              Push(GoTo(18), list);
            }
            break;
                    case 87:
            {
              ArrayList list = New87();
              Push(GoTo(19), list);
            }
            break;
                    case 88:
            {
              ArrayList list = New88();
              Push(GoTo(20), list);
            }
            break;
                    case 89:
            {
              ArrayList list = New89();
              Push(GoTo(20), list);
            }
            break;
                    case 90:
            {
              ArrayList list = New90();
              Push(GoTo(21), list);
            }
            break;
                    case 91:
            {
              ArrayList list = New91();
              Push(GoTo(21), list);
            }
            break;
                    case 92:
            {
              ArrayList list = New92();
              Push(GoTo(22), list);
            }
            break;
                    case 93:
            {
              ArrayList list = New93();
              Push(GoTo(22), list);
            }
            break;
                    case 94:
            {
              ArrayList list = New94();
              Push(GoTo(22), list);
            }
            break;
                    case 95:
            {
              ArrayList list = New95();
              Push(GoTo(23), list);
            }
            break;
                    case 96:
            {
              ArrayList list = New96();
              Push(GoTo(23), list);
            }
            break;
                    case 97:
            {
              ArrayList list = New97();
              Push(GoTo(23), list);
            }
            break;
                    case 98:
            {
              ArrayList list = New98();
              Push(GoTo(23), list);
            }
            break;
                    case 99:
            {
              ArrayList list = New99();
              Push(GoTo(24), list);
            }
            break;
                    case 100:
            {
              ArrayList list = New100();
              Push(GoTo(25), list);
            }
            break;
                    case 101:
            {
              ArrayList list = New101();
              Push(GoTo(25), list);
            }
            break;
                    case 102:
            {
              ArrayList list = New102();
              Push(GoTo(25), list);
            }
            break;
                    case 103:
            {
              ArrayList list = New103();
              Push(GoTo(25), list);
            }
            break;
                    case 104:
            {
              ArrayList list = New104();
              Push(GoTo(25), list);
            }
            break;
                    case 105:
            {
              ArrayList list = New105();
              Push(GoTo(25), list);
            }
            break;
                    case 106:
            {
              ArrayList list = New106();
              Push(GoTo(25), list);
            }
            break;
                    case 107:
            {
              ArrayList list = New107();
              Push(GoTo(25), list);
            }
            break;
                    case 108:
            {
              ArrayList list = New108();
              Push(GoTo(26), list);
            }
            break;
                    case 109:
            {
              ArrayList list = New109();
              Push(GoTo(27), list);
            }
            break;
                    case 110:
            {
              ArrayList list = New110();
              Push(GoTo(27), list);
            }
            break;
                    case 111:
            {
              ArrayList list = New111();
              Push(GoTo(27), list);
            }
            break;
                    case 112:
            {
              ArrayList list = New112();
              Push(GoTo(27), list);
            }
            break;
                    case 113:
            {
              ArrayList list = New113();
              Push(GoTo(27), list);
            }
            break;
                    case 114:
            {
              ArrayList list = New114();
              Push(GoTo(27), list);
            }
            break;
                    case 115:
            {
              ArrayList list = New115();
              Push(GoTo(27), list);
            }
            break;
                    case 116:
            {
              ArrayList list = New116();
              Push(GoTo(27), list);
            }
            break;
                    case 117:
            {
              ArrayList list = New117();
              Push(GoTo(28), list);
            }
            break;
                    case 118:
            {
              ArrayList list = New118();
              Push(GoTo(28), list);
            }
            break;
                    case 119:
            {
              ArrayList list = New119();
              Push(GoTo(29), list);
            }
            break;
                    case 120:
            {
              ArrayList list = New120();
              Push(GoTo(29), list);
            }
            break;
                    case 121:
            {
              ArrayList list = New121();
              Push(GoTo(30), list);
            }
            break;
                    case 122:
            {
              ArrayList list = New122();
              Push(GoTo(30), list);
            }
            break;
                    case 123:
            {
              ArrayList list = New123();
              Push(GoTo(30), list);
            }
            break;
                    case 124:
            {
              ArrayList list = New124();
              Push(GoTo(30), list);
            }
            break;
                    case 125:
            {
              ArrayList list = New125();
              Push(GoTo(31), list);
            }
            break;
                    case 126:
            {
              ArrayList list = New126();
              Push(GoTo(31), list);
            }
            break;
                    case 127:
            {
              ArrayList list = New127();
              Push(GoTo(32), list);
            }
            break;
                    case 128:
            {
              ArrayList list = New128();
              Push(GoTo(32), list);
            }
            break;
                    case 129:
            {
              ArrayList list = New129();
              Push(GoTo(32), list);
            }
            break;
                    case 130:
            {
              ArrayList list = New130();
              Push(GoTo(32), list);
            }
            break;
                    case 131:
            {
              ArrayList list = New131();
              Push(GoTo(33), list);
            }
            break;
                    case 132:
            {
              ArrayList list = New132();
              Push(GoTo(34), list);
            }
            break;
                    case 133:
            {
              ArrayList list = New133();
              Push(GoTo(34), list);
            }
            break;
                    case 134:
            {
              ArrayList list = New134();
              Push(GoTo(35), list);
            }
            break;
                    case 135:
            {
              ArrayList list = New135();
              Push(GoTo(35), list);
            }
            break;
                    case 136:
            {
              ArrayList list = New136();
              Push(GoTo(36), list);
            }
            break;
                    case 137:
            {
              ArrayList list = New137();
              Push(GoTo(36), list);
            }
            break;
                    case 138:
            {
              ArrayList list = New138();
              Push(GoTo(36), list);
            }
            break;
                    case 139:
            {
              ArrayList list = New139();
              Push(GoTo(36), list);
            }
            break;
                    case 140:
            {
              ArrayList list = New140();
              Push(GoTo(36), list);
            }
            break;
                    case 141:
            {
              ArrayList list = New141();
              Push(GoTo(36), list);
            }
            break;
                    case 142:
            {
              ArrayList list = New142();
              Push(GoTo(36), list);
            }
            break;
                    case 143:
            {
              ArrayList list = New143();
              Push(GoTo(36), list);
            }
            break;
                    case 144:
            {
              ArrayList list = New144();
              Push(GoTo(36), list);
            }
            break;
                    case 145:
            {
              ArrayList list = New145();
              Push(GoTo(36), list);
            }
            break;
                    case 146:
            {
              ArrayList list = New146();
              Push(GoTo(36), list);
            }
            break;
                    case 147:
            {
              ArrayList list = New147();
              Push(GoTo(36), list);
            }
            break;
                    case 148:
            {
              ArrayList list = New148();
              Push(GoTo(37), list);
            }
            break;
                    case 149:
            {
              ArrayList list = New149();
              Push(GoTo(37), list);
            }
            break;
                    case 150:
            {
              ArrayList list = New150();
              Push(GoTo(37), list);
            }
            break;
                    case 151:
            {
              ArrayList list = New151();
              Push(GoTo(37), list);
            }
            break;
                    case 152:
            {
              ArrayList list = New152();
              Push(GoTo(37), list);
            }
            break;
                    case 153:
            {
              ArrayList list = New153();
              Push(GoTo(37), list);
            }
            break;
                    case 154:
            {
              ArrayList list = New154();
              Push(GoTo(37), list);
            }
            break;
                    case 155:
            {
              ArrayList list = New155();
              Push(GoTo(37), list);
            }
            break;
                    case 156:
            {
              ArrayList list = New156();
              Push(GoTo(38), list);
            }
            break;
                    case 157:
            {
              ArrayList list = New157();
              Push(GoTo(38), list);
            }
            break;
                    case 158:
            {
              ArrayList list = New158();
              Push(GoTo(38), list);
            }
            break;
                    case 159:
            {
              ArrayList list = New159();
              Push(GoTo(38), list);
            }
            break;
                    case 160:
            {
              ArrayList list = New160();
              Push(GoTo(39), list);
            }
            break;
                    case 161:
            {
              ArrayList list = New161();
              Push(GoTo(39), list);
            }
            break;
                    case 162:
            {
              ArrayList list = New162();
              Push(GoTo(39), list);
            }
            break;
                    case 163:
            {
              ArrayList list = New163();
              Push(GoTo(39), list);
            }
            break;
                    case 164:
            {
              ArrayList list = New164();
              Push(GoTo(39), list);
            }
            break;
                    case 165:
            {
              ArrayList list = New165();
              Push(GoTo(39), list);
            }
            break;
                    case 166:
            {
              ArrayList list = New166();
              Push(GoTo(39), list);
            }
            break;
                    case 167:
            {
              ArrayList list = New167();
              Push(GoTo(39), list);
            }
            break;
                    case 168:
            {
              ArrayList list = New168();
              Push(GoTo(39), list);
            }
            break;
                    case 169:
            {
              ArrayList list = New169();
              Push(GoTo(39), list);
            }
            break;
                    case 170:
            {
              ArrayList list = New170();
              Push(GoTo(39), list);
            }
            break;
                    case 171:
            {
              ArrayList list = New171();
              Push(GoTo(39), list);
            }
            break;
                    case 172:
            {
              ArrayList list = New172();
              Push(GoTo(39), list);
            }
            break;
                    case 173:
            {
              ArrayList list = New173();
              Push(GoTo(39), list);
            }
            break;
                    case 174:
            {
              ArrayList list = New174();
              Push(GoTo(39), list);
            }
            break;
                    case 175:
            {
              ArrayList list = New175();
              Push(GoTo(39), list);
            }
            break;
                    case 176:
            {
              ArrayList list = New176();
              Push(GoTo(39), list);
            }
            break;
                    case 177:
            {
              ArrayList list = New177();
              Push(GoTo(39), list);
            }
            break;
                    case 178:
            {
              ArrayList list = New178();
              Push(GoTo(39), list);
            }
            break;
                    case 179:
            {
              ArrayList list = New179();
              Push(GoTo(39), list);
            }
            break;
                    case 180:
            {
              ArrayList list = New180();
              Push(GoTo(39), list);
            }
            break;
                    case 181:
            {
              ArrayList list = New181();
              Push(GoTo(39), list);
            }
            break;
                    case 182:
            {
              ArrayList list = New182();
              Push(GoTo(39), list);
            }
            break;
                    case 183:
            {
              ArrayList list = New183();
              Push(GoTo(39), list);
            }
            break;
                    case 184:
            {
              ArrayList list = New184();
              Push(GoTo(39), list);
            }
            break;
                    case 185:
            {
              ArrayList list = New185();
              Push(GoTo(39), list);
            }
            break;
                    case 186:
            {
              ArrayList list = New186();
              Push(GoTo(39), list);
            }
            break;
                    case 187:
            {
              ArrayList list = New187();
              Push(GoTo(39), list);
            }
            break;
                    case 188:
            {
              ArrayList list = New188();
              Push(GoTo(39), list);
            }
            break;
                    case 189:
            {
              ArrayList list = New189();
              Push(GoTo(39), list);
            }
            break;
                    case 190:
            {
              ArrayList list = New190();
              Push(GoTo(39), list);
            }
            break;
                    case 191:
            {
              ArrayList list = New191();
              Push(GoTo(39), list);
            }
            break;
                    case 192:
            {
              ArrayList list = New192();
              Push(GoTo(39), list);
            }
            break;
                    case 193:
            {
              ArrayList list = New193();
              Push(GoTo(39), list);
            }
            break;
                    case 194:
            {
              ArrayList list = New194();
              Push(GoTo(39), list);
            }
            break;
                    case 195:
            {
              ArrayList list = New195();
              Push(GoTo(39), list);
            }
            break;
                    case 196:
            {
              ArrayList list = New196();
              Push(GoTo(39), list);
            }
            break;
                    case 197:
            {
              ArrayList list = New197();
              Push(GoTo(39), list);
            }
            break;
                    case 198:
            {
              ArrayList list = New198();
              Push(GoTo(39), list);
            }
            break;
                    case 199:
            {
              ArrayList list = New199();
              Push(GoTo(39), list);
            }
            break;
                    case 200:
            {
              ArrayList list = New200();
              Push(GoTo(39), list);
            }
            break;
                    case 201:
            {
              ArrayList list = New201();
              Push(GoTo(39), list);
            }
            break;
                    case 202:
            {
              ArrayList list = New202();
              Push(GoTo(39), list);
            }
            break;
                    case 203:
            {
              ArrayList list = New203();
              Push(GoTo(39), list);
            }
            break;
                    case 204:
            {
              ArrayList list = New204();
              Push(GoTo(39), list);
            }
            break;
                    case 205:
            {
              ArrayList list = New205();
              Push(GoTo(39), list);
            }
            break;
                    case 206:
            {
              ArrayList list = New206();
              Push(GoTo(39), list);
            }
            break;
                    case 207:
            {
              ArrayList list = New207();
              Push(GoTo(39), list);
            }
            break;
                    case 208:
            {
              ArrayList list = New208();
              Push(GoTo(39), list);
            }
            break;
                    case 209:
            {
              ArrayList list = New209();
              Push(GoTo(39), list);
            }
            break;
                    case 210:
            {
              ArrayList list = New210();
              Push(GoTo(39), list);
            }
            break;
                    case 211:
            {
              ArrayList list = New211();
              Push(GoTo(39), list);
            }
            break;
                    case 212:
            {
              ArrayList list = New212();
              Push(GoTo(39), list);
            }
            break;
                    case 213:
            {
              ArrayList list = New213();
              Push(GoTo(39), list);
            }
            break;
                    case 214:
            {
              ArrayList list = New214();
              Push(GoTo(39), list);
            }
            break;
                    case 215:
            {
              ArrayList list = New215();
              Push(GoTo(39), list);
            }
            break;
                    case 216:
            {
              ArrayList list = New216();
              Push(GoTo(39), list);
            }
            break;
                    case 217:
            {
              ArrayList list = New217();
              Push(GoTo(39), list);
            }
            break;
                    case 218:
            {
              ArrayList list = New218();
              Push(GoTo(39), list);
            }
            break;
                    case 219:
            {
              ArrayList list = New219();
              Push(GoTo(39), list);
            }
            break;
                    case 220:
            {
              ArrayList list = New220();
              Push(GoTo(39), list);
            }
            break;
                    case 221:
            {
              ArrayList list = New221();
              Push(GoTo(39), list);
            }
            break;
                    case 222:
            {
              ArrayList list = New222();
              Push(GoTo(39), list);
            }
            break;
                    case 223:
            {
              ArrayList list = New223();
              Push(GoTo(39), list);
            }
            break;
                    case 224:
            {
              ArrayList list = New224();
              Push(GoTo(40), list);
            }
            break;
                    case 225:
            {
              ArrayList list = New225();
              Push(GoTo(41), list);
            }
            break;
                    case 226:
            {
              ArrayList list = New226();
              Push(GoTo(42), list);
            }
            break;
                    case 227:
            {
              ArrayList list = New227();
              Push(GoTo(42), list);
            }
            break;
                    case 228:
            {
              ArrayList list = New228();
              Push(GoTo(43), list);
            }
            break;
                    case 229:
            {
              ArrayList list = New229();
              Push(GoTo(43), list);
            }
            break;
                    case 230:
            {
              ArrayList list = New230();
              Push(GoTo(43), list);
            }
            break;
                    case 231:
            {
              ArrayList list = New231();
              Push(GoTo(43), list);
            }
            break;
                    case 232:
            {
              ArrayList list = New232();
              Push(GoTo(43), list);
            }
            break;
                    case 233:
            {
              ArrayList list = New233();
              Push(GoTo(43), list);
            }
            break;
                    case 234:
            {
              ArrayList list = New234();
              Push(GoTo(43), list);
            }
            break;
                    case 235:
            {
              ArrayList list = New235();
              Push(GoTo(43), list);
            }
            break;
                    case 236:
            {
              ArrayList list = New236();
              Push(GoTo(44), list);
            }
            break;
                    case 237:
            {
              ArrayList list = New237();
              Push(GoTo(45), list);
            }
            break;
                    case 238:
            {
              ArrayList list = New238();
              Push(GoTo(45), list);
            }
            break;
                    case 239:
            {
              ArrayList list = New239();
              Push(GoTo(46), list);
            }
            break;
                    case 240:
            {
              ArrayList list = New240();
              Push(GoTo(46), list);
            }
            break;
                    case 241:
            {
              ArrayList list = New241();
              Push(GoTo(47), list);
            }
            break;
                    case 242:
            {
              ArrayList list = New242();
              Push(GoTo(47), list);
            }
            break;
                    case 243:
            {
              ArrayList list = New243();
              Push(GoTo(47), list);
            }
            break;
                    case 244:
            {
              ArrayList list = New244();
              Push(GoTo(47), list);
            }
            break;
                    case 245:
            {
              ArrayList list = New245();
              Push(GoTo(48), list);
            }
            break;
                    case 246:
            {
              ArrayList list = New246();
              Push(GoTo(49), list);
            }
            break;
                    case 247:
            {
              ArrayList list = New247();
              Push(GoTo(49), list);
            }
            break;
                    case 248:
            {
              ArrayList list = New248();
              Push(GoTo(50), list);
            }
            break;
                    case 249:
            {
              ArrayList list = New249();
              Push(GoTo(50), list);
            }
            break;
                    case 250:
            {
              ArrayList list = New250();
              Push(GoTo(50), list);
            }
            break;
                    case 251:
            {
              ArrayList list = New251();
              Push(GoTo(51), list);
            }
            break;
                    case 252:
            {
              ArrayList list = New252();
              Push(GoTo(51), list);
            }
            break;
                    case 253:
            {
              ArrayList list = New253();
              Push(GoTo(52), list);
            }
            break;
                    case 254:
            {
              ArrayList list = New254();
              Push(GoTo(53), list);
            }
            break;
                    case 255:
            {
              ArrayList list = New255();
              Push(GoTo(54), list);
            }
            break;
                    case 256:
            {
              ArrayList list = New256();
              Push(GoTo(55), list);
            }
            break;
                    case 257:
            {
              ArrayList list = New257();
              Push(GoTo(56), list);
            }
            break;
                    case 258:
            {
              ArrayList list = New258();
              Push(GoTo(56), list);
            }
            break;
                    case 259:
            {
              ArrayList list = New259();
              Push(GoTo(57), list);
            }
            break;
                    case 260:
            {
              ArrayList list = New260();
              Push(GoTo(58), list);
            }
            break;
                    case 261:
            {
              ArrayList list = New261();
              Push(GoTo(59), list);
            }
            break;
                    case 262:
            {
              ArrayList list = New262();
              Push(GoTo(59), list);
            }
            break;
                    case 263:
            {
              ArrayList list = New263();
              Push(GoTo(59), list);
            }
            break;
                    case 264:
            {
              ArrayList list = New264();
              Push(GoTo(59), list);
            }
            break;
                    case 265:
            {
              ArrayList list = New265();
              Push(GoTo(60), list);
            }
            break;
                    case 266:
            {
              ArrayList list = New266();
              Push(GoTo(60), list);
            }
            break;
                    case 267:
            {
              ArrayList list = New267();
              Push(GoTo(61), list);
            }
            break;
                    case 268:
            {
              ArrayList list = New268();
              Push(GoTo(62), list);
            }
            break;
                    case 269:
            {
              ArrayList list = New269();
              Push(GoTo(63), list);
            }
            break;
                    case 270:
            {
              ArrayList list = New270();
              Push(GoTo(64), list);
            }
            break;
                    case 271:
            {
              ArrayList list = New271();
              Push(GoTo(64), list);
            }
            break;
                    case 272:
            {
              ArrayList list = New272();
              Push(GoTo(64), list);
            }
            break;
                    case 273:
            {
              ArrayList list = New273();
              Push(GoTo(64), list);
            }
            break;
                    case 274:
            {
              ArrayList list = New274();
              Push(GoTo(64), list);
            }
            break;
                    case 275:
            {
              ArrayList list = New275();
              Push(GoTo(64), list);
            }
            break;
                    case 276:
            {
              ArrayList list = New276();
              Push(GoTo(64), list);
            }
            break;
                    case 277:
            {
              ArrayList list = New277();
              Push(GoTo(65), list);
            }
            break;
                    case 278:
            {
              ArrayList list = New278();
              Push(GoTo(66), list);
            }
            break;
                    case 279:
            {
              ArrayList list = New279();
              Push(GoTo(66), list);
            }
            break;
                    case 280:
            {
              ArrayList list = New280();
              Push(GoTo(67), list);
            }
            break;
                    case 281:
            {
              ArrayList list = New281();
              Push(GoTo(67), list);
            }
            break;
                    case 282:
            {
              ArrayList list = New282();
              Push(GoTo(68), list);
            }
            break;
                    case 283:
            {
              ArrayList list = New283();
              Push(GoTo(68), list);
            }
            break;
                    case 284:
            {
              ArrayList list = New284();
              Push(GoTo(69), list);
            }
            break;
                    case 285:
            {
              ArrayList list = New285();
              Push(GoTo(69), list);
            }
            break;
                    case 286:
            {
              ArrayList list = New286();
              Push(GoTo(70), list);
            }
            break;
                    case 287:
            {
              ArrayList list = New287();
              Push(GoTo(71), list);
            }
            break;
                    case 288:
            {
              ArrayList list = New288();
              Push(GoTo(72), list);
            }
            break;
                    case 289:
            {
              ArrayList list = New289();
              Push(GoTo(72), list);
            }
            break;
                    case 290:
            {
              ArrayList list = New290();
              Push(GoTo(72), list);
            }
            break;
                    case 291:
            {
              ArrayList list = New291();
              Push(GoTo(72), list);
            }
            break;
                    case 292:
            {
              ArrayList list = New292();
              Push(GoTo(73), list);
            }
            break;
                    case 293:
            {
              ArrayList list = New293();
              Push(GoTo(73), list);
            }
            break;
                    case 294:
            {
              ArrayList list = New294();
              Push(GoTo(73), list);
            }
            break;
                    case 295:
            {
              ArrayList list = New295();
              Push(GoTo(73), list);
            }
            break;
                    case 296:
            {
              ArrayList list = New296();
              Push(GoTo(73), list);
            }
            break;
                    case 297:
            {
              ArrayList list = New297();
              Push(GoTo(73), list);
            }
            break;
                    case 298:
            {
              ArrayList list = New298();
              Push(GoTo(73), list);
            }
            break;
                    case 299:
            {
              ArrayList list = New299();
              Push(GoTo(74), list);
            }
            break;
                    case 300:
            {
              ArrayList list = New300();
              Push(GoTo(75), list);
            }
            break;
                    case 301:
            {
              ArrayList list = New301();
              Push(GoTo(76), list);
            }
            break;
                    case 302:
            {
              ArrayList list = New302();
              Push(GoTo(76), list);
            }
            break;
                    case 303:
            {
              ArrayList list = New303();
              Push(GoTo(77), list);
            }
            break;
                    case 304:
            {
              ArrayList list = New304();
              Push(GoTo(78), list);
            }
            break;
                    case 305:
            {
              ArrayList list = New305();
              Push(GoTo(79), list);
            }
            break;
                    case 306:
            {
              ArrayList list = New306();
              Push(GoTo(80), list);
            }
            break;
                    case 307:
            {
              ArrayList list = New307();
              Push(GoTo(81), list);
            }
            break;
                    case 308:
            {
              ArrayList list = New308();
              Push(GoTo(82), list);
            }
            break;
                    case 309:
            {
              ArrayList list = New309();
              Push(GoTo(83), list);
            }
            break;
                    case 310:
            {
              ArrayList list = New310();
              Push(GoTo(83), list);
            }
            break;
                    case 311:
            {
              ArrayList list = New311();
              Push(GoTo(84), list);
            }
            break;
                    case 312:
            {
              ArrayList list = New312();
              Push(GoTo(84), list);
            }
            break;
                    case 313:
            {
              ArrayList list = New313();
              Push(GoTo(85), list);
            }
            break;
                    case 314:
            {
              ArrayList list = New314();
              Push(GoTo(85), list);
            }
            break;
                    case 315:
            {
              ArrayList list = New315();
              Push(GoTo(86), list);
            }
            break;
                    case 316:
            {
              ArrayList list = New316();
              Push(GoTo(86), list);
            }
            break;
                    case 317:
            {
              ArrayList list = New317();
              Push(GoTo(87), list);
            }
            break;
                    case 318:
            {
              ArrayList list = New318();
              Push(GoTo(88), list);
            }
            break;
                    case 319:
            {
              ArrayList list = New319();
              Push(GoTo(89), list);
            }
            break;
                    case 320:
            {
              ArrayList list = New320();
              Push(GoTo(89), list);
            }
            break;
                    case 321:
            {
              ArrayList list = New321();
              Push(GoTo(89), list);
            }
            break;
                    case 322:
            {
              ArrayList list = New322();
              Push(GoTo(89), list);
            }
            break;
                    case 323:
            {
              ArrayList list = New323();
              Push(GoTo(89), list);
            }
            break;
                    case 324:
            {
              ArrayList list = New324();
              Push(GoTo(89), list);
            }
            break;
                    case 325:
            {
              ArrayList list = New325();
              Push(GoTo(89), list);
            }
            break;
                    case 326:
            {
              ArrayList list = New326();
              Push(GoTo(89), list);
            }
            break;
                    case 327:
            {
              ArrayList list = New327();
              Push(GoTo(90), list);
            }
            break;
                    case 328:
            {
              ArrayList list = New328();
              Push(GoTo(90), list);
            }
            break;
                    case 329:
            {
              ArrayList list = New329();
              Push(GoTo(90), list);
            }
            break;
                    case 330:
            {
              ArrayList list = New330();
              Push(GoTo(91), list);
            }
            break;
                    case 331:
            {
              ArrayList list = New331();
              Push(GoTo(91), list);
            }
            break;
                    case 332:
            {
              ArrayList list = New332();
              Push(GoTo(92), list);
            }
            break;
                    case 333:
            {
              ArrayList list = New333();
              Push(GoTo(93), list);
            }
            break;
                    case 334:
            {
              ArrayList list = New334();
              Push(GoTo(93), list);
            }
            break;
                    case 335:
            {
              ArrayList list = New335();
              Push(GoTo(94), list);
            }
            break;
                    case 336:
            {
              ArrayList list = New336();
              Push(GoTo(94), list);
            }
            break;
                    case 337:
            {
              ArrayList list = New337();
              Push(GoTo(94), list);
            }
            break;
                    case 338:
            {
              ArrayList list = New338();
              Push(GoTo(94), list);
            }
            break;
                    case 339:
            {
              ArrayList list = New339();
              Push(GoTo(94), list);
            }
            break;
                    case 340:
            {
              ArrayList list = New340();
              Push(GoTo(94), list);
            }
            break;
                    case 341:
            {
              ArrayList list = New341();
              Push(GoTo(94), list);
            }
            break;
                    case 342:
            {
              ArrayList list = New342();
              Push(GoTo(94), list);
            }
            break;
                    case 343:
            {
              ArrayList list = New343();
              Push(GoTo(94), list);
            }
            break;
                    case 344:
            {
              ArrayList list = New344();
              Push(GoTo(94), list);
            }
            break;
                    case 345:
            {
              ArrayList list = New345();
              Push(GoTo(95), list);
            }
            break;
                    case 346:
            {
              ArrayList list = New346();
              Push(GoTo(95), list);
            }
            break;
                    case 347:
            {
              ArrayList list = New347();
              Push(GoTo(96), list);
            }
            break;
                    case 348:
            {
              ArrayList list = New348();
              Push(GoTo(96), list);
            }
            break;
                    case 349:
            {
              ArrayList list = New349();
              Push(GoTo(96), list);
            }
            break;
                    case 350:
            {
              ArrayList list = New350();
              Push(GoTo(96), list);
            }
            break;
                    case 351:
            {
              ArrayList list = New351();
              Push(GoTo(96), list);
            }
            break;
                    case 352:
            {
              ArrayList list = New352();
              Push(GoTo(96), list);
            }
            break;
                    case 353:
            {
              ArrayList list = New353();
              Push(GoTo(96), list);
            }
            break;
                    case 354:
            {
              ArrayList list = New354();
              Push(GoTo(96), list);
            }
            break;
                    case 355:
            {
              ArrayList list = New355();
              Push(GoTo(96), list);
            }
            break;
                    case 356:
            {
              ArrayList list = New356();
              Push(GoTo(96), list);
            }
            break;
                    case 357:
            {
              ArrayList list = New357();
              Push(GoTo(96), list);
            }
            break;
                    case 358:
            {
              ArrayList list = New358();
              Push(GoTo(96), list);
            }
            break;
                    case 359:
            {
              ArrayList list = New359();
              Push(GoTo(96), list);
            }
            break;
                    case 360:
            {
              ArrayList list = New360();
              Push(GoTo(97), list);
            }
            break;
                    case 361:
            {
              ArrayList list = New361();
              Push(GoTo(97), list);
            }
            break;
                    case 362:
            {
              ArrayList list = New362();
              Push(GoTo(97), list);
            }
            break;
                    case 363:
            {
              ArrayList list = New363();
              Push(GoTo(97), list);
            }
            break;
                    case 364:
            {
              ArrayList list = New364();
              Push(GoTo(97), list);
            }
            break;
                    case 365:
            {
              ArrayList list = New365();
              Push(GoTo(97), list);
            }
            break;
                    case 366:
            {
              ArrayList list = New366();
              Push(GoTo(97), list);
            }
            break;
                    case 367:
            {
              ArrayList list = New367();
              Push(GoTo(97), list);
            }
            break;
                    case 368:
            {
              ArrayList list = New368();
              Push(GoTo(97), list);
            }
            break;
                    case 369:
            {
              ArrayList list = New369();
              Push(GoTo(97), list);
            }
            break;
                    case 370:
            {
              ArrayList list = New370();
              Push(GoTo(97), list);
            }
            break;
                    case 371:
            {
              ArrayList list = New371();
              Push(GoTo(98), list);
            }
            break;
                    case 372:
            {
              ArrayList list = New372();
              Push(GoTo(99), list);
            }
            break;
                    case 373:
            {
              ArrayList list = New373();
              Push(GoTo(100), list);
            }
            break;
                    case 374:
            {
              ArrayList list = New374();
              Push(GoTo(100), list);
            }
            break;
                    case 375:
            {
              ArrayList list = New375();
              Push(GoTo(101), list);
            }
            break;
                    case 376:
            {
              ArrayList list = New376();
              Push(GoTo(101), list);
            }
            break;
                    case 377:
            {
              ArrayList list = New377();
              Push(GoTo(102), list);
            }
            break;
                    case 378:
            {
              ArrayList list = New378();
              Push(GoTo(102), list);
            }
            break;
                    case 379:
            {
              ArrayList list = New379();
              Push(GoTo(102), list);
            }
            break;
                    case 380:
            {
              ArrayList list = New380();
              Push(GoTo(102), list);
            }
            break;
                    case 381:
            {
              ArrayList list = New381();
              Push(GoTo(102), list);
            }
            break;
                    case 382:
            {
              ArrayList list = New382();
              Push(GoTo(102), list);
            }
            break;
                    case 383:
            {
              ArrayList list = New383();
              Push(GoTo(102), list);
            }
            break;
                    case 384:
            {
              ArrayList list = New384();
              Push(GoTo(102), list);
            }
            break;
                    case 385:
            {
              ArrayList list = New385();
              Push(GoTo(102), list);
            }
            break;
                    case 386:
            {
              ArrayList list = New386();
              Push(GoTo(102), list);
            }
            break;
                    case 387:
            {
              ArrayList list = New387();
              Push(GoTo(102), list);
            }
            break;
                    case 388:
            {
              ArrayList list = New388();
              Push(GoTo(102), list);
            }
            break;
                    case 389:
            {
              ArrayList list = New389();
              Push(GoTo(102), list);
            }
            break;
                    case 390:
            {
              ArrayList list = New390();
              Push(GoTo(102), list);
            }
            break;
                    case 391:
            {
              ArrayList list = New391();
              Push(GoTo(102), list);
            }
            break;
                    case 392:
            {
              ArrayList list = New392();
              Push(GoTo(102), list);
            }
            break;
                    case 393:
            {
              ArrayList list = New393();
              Push(GoTo(102), list);
            }
            break;
                    case 394:
            {
              ArrayList list = New394();
              Push(GoTo(102), list);
            }
            break;
                    case 395:
            {
              ArrayList list = New395();
              Push(GoTo(102), list);
            }
            break;
                    case 396:
            {
              ArrayList list = New396();
              Push(GoTo(102), list);
            }
            break;
                    case 397:
            {
              ArrayList list = New397();
              Push(GoTo(102), list);
            }
            break;
                    case 398:
            {
              ArrayList list = New398();
              Push(GoTo(102), list);
            }
            break;
                    case 399:
            {
              ArrayList list = New399();
              Push(GoTo(102), list);
            }
            break;
                    case 400:
            {
              ArrayList list = New400();
              Push(GoTo(102), list);
            }
            break;
                    case 401:
            {
              ArrayList list = New401();
              Push(GoTo(102), list);
            }
            break;
                    case 402:
            {
              ArrayList list = New402();
              Push(GoTo(102), list);
            }
            break;
                    case 403:
            {
              ArrayList list = New403();
              Push(GoTo(103), list);
            }
            break;
                    case 404:
            {
              ArrayList list = New404();
              Push(GoTo(103), list);
            }
            break;
                    case 405:
            {
              ArrayList list = New405();
              Push(GoTo(104), list);
            }
            break;
                    case 406:
            {
              ArrayList list = New406();
              Push(GoTo(104), list);
            }
            break;
                    case 407:
            {
              ArrayList list = New407();
              Push(GoTo(104), list);
            }
            break;
                    case 408:
            {
              ArrayList list = New408();
              Push(GoTo(104), list);
            }
            break;
                    case 409:
            {
              ArrayList list = New409();
              Push(GoTo(104), list);
            }
            break;
                    case 410:
            {
              ArrayList list = New410();
              Push(GoTo(104), list);
            }
            break;
                    case 411:
            {
              ArrayList list = New411();
              Push(GoTo(104), list);
            }
            break;
                    case 412:
            {
              ArrayList list = New412();
              Push(GoTo(104), list);
            }
            break;
                    case 413:
            {
              ArrayList list = New413();
              Push(GoTo(104), list);
            }
            break;
                    case 414:
            {
              ArrayList list = New414();
              Push(GoTo(104), list);
            }
            break;
                    case 415:
            {
              ArrayList list = New415();
              Push(GoTo(104), list);
            }
            break;
                    case 416:
            {
              ArrayList list = New416();
              Push(GoTo(104), list);
            }
            break;
                    case 417:
            {
              ArrayList list = New417();
              Push(GoTo(104), list);
            }
            break;
                    case 418:
            {
              ArrayList list = New418();
              Push(GoTo(104), list);
            }
            break;
                    case 419:
            {
              ArrayList list = New419();
              Push(GoTo(104), list);
            }
            break;
                    case 420:
            {
              ArrayList list = New420();
              Push(GoTo(104), list);
            }
            break;
                    case 421:
            {
              ArrayList list = New421();
              Push(GoTo(105), list);
            }
            break;
                    case 422:
            {
              ArrayList list = New422();
              Push(GoTo(105), list);
            }
            break;
                    case 423:
            {
              ArrayList list = New423();
              Push(GoTo(105), list);
            }
            break;
                    case 424:
            {
              ArrayList list = New424();
              Push(GoTo(105), list);
            }
            break;
                    case 425:
            {
              ArrayList list = New425();
              Push(GoTo(105), list);
            }
            break;
                    case 426:
            {
              ArrayList list = New426();
              Push(GoTo(105), list);
            }
            break;
                    case 427:
            {
              ArrayList list = New427();
              Push(GoTo(105), list);
            }
            break;
                    case 428:
            {
              ArrayList list = New428();
              Push(GoTo(105), list);
            }
            break;
                    case 429:
            {
              ArrayList list = New429();
              Push(GoTo(105), list);
            }
            break;
                    case 430:
            {
              ArrayList list = New430();
              Push(GoTo(105), list);
            }
            break;
                    case 431:
            {
              ArrayList list = New431();
              Push(GoTo(105), list);
            }
            break;
                    case 432:
            {
              ArrayList list = New432();
              Push(GoTo(105), list);
            }
            break;
                    case 433:
            {
              ArrayList list = New433();
              Push(GoTo(105), list);
            }
            break;
                    case 434:
            {
              ArrayList list = New434();
              Push(GoTo(106), list);
            }
            break;
                    case 435:
            {
              ArrayList list = New435();
              Push(GoTo(106), list);
            }
            break;
                    case 436:
            {
              ArrayList list = New436();
              Push(GoTo(106), list);
            }
            break;
                    case 437:
            {
              ArrayList list = New437();
              Push(GoTo(106), list);
            }
            break;
                    case 438:
            {
              ArrayList list = New438();
              Push(GoTo(106), list);
            }
            break;
                    case 439:
            {
              ArrayList list = New439();
              Push(GoTo(106), list);
            }
            break;
                    case 440:
            {
              ArrayList list = New440();
              Push(GoTo(106), list);
            }
            break;
                    case 441:
            {
              ArrayList list = New441();
              Push(GoTo(106), list);
            }
            break;
                    case 442:
            {
              ArrayList list = New442();
              Push(GoTo(106), list);
            }
            break;
                    case 443:
            {
              ArrayList list = New443();
              Push(GoTo(106), list);
            }
            break;
                    case 444:
            {
              ArrayList list = New444();
              Push(GoTo(106), list);
            }
            break;
                    case 445:
            {
              ArrayList list = New445();
              Push(GoTo(106), list);
            }
            break;
                    case 446:
            {
              ArrayList list = New446();
              Push(GoTo(106), list);
            }
            break;
                    case 447:
            {
              ArrayList list = New447();
              Push(GoTo(106), list);
            }
            break;
                    case 448:
            {
              ArrayList list = New448();
              Push(GoTo(107), list);
            }
            break;
                    case 449:
            {
              ArrayList list = New449();
              Push(GoTo(107), list);
            }
            break;
                    case 450:
            {
              ArrayList list = New450();
              Push(GoTo(107), list);
            }
            break;
                    case 451:
            {
              ArrayList list = New451();
              Push(GoTo(107), list);
            }
            break;
                    case 452:
            {
              ArrayList list = New452();
              Push(GoTo(107), list);
            }
            break;
                    case 453:
            {
              ArrayList list = New453();
              Push(GoTo(108), list);
            }
            break;
                    case 454:
            {
              ArrayList list = New454();
              Push(GoTo(108), list);
            }
            break;
                    case 455:
            {
              ArrayList list = New455();
              Push(GoTo(108), list);
            }
            break;
                    case 456:
            {
              ArrayList list = New456();
              Push(GoTo(108), list);
            }
            break;
                    case 457:
            {
              ArrayList list = New457();
              Push(GoTo(108), list);
            }
            break;
                    case 458:
            {
              ArrayList list = New458();
              Push(GoTo(109), list);
            }
            break;
                    case 459:
            {
              ArrayList list = New459();
              Push(GoTo(110), list);
            }
            break;
                    case 460:
            {
              ArrayList list = New460();
              Push(GoTo(110), list);
            }
            break;
                    case 461:
            {
              ArrayList list = New461();
              Push(GoTo(110), list);
            }
            break;
                    case 462:
            {
              ArrayList list = New462();
              Push(GoTo(111), list);
            }
            break;
                    case 463:
            {
              ArrayList list = New463();
              Push(GoTo(111), list);
            }
            break;
                    case 464:
            {
              ArrayList list = New464();
              Push(GoTo(111), list);
            }
            break;
                    case 465:
            {
              ArrayList list = New465();
              Push(GoTo(111), list);
            }
            break;
                    case 466:
            {
              ArrayList list = New466();
              Push(GoTo(111), list);
            }
            break;
                    case 467:
            {
              ArrayList list = New467();
              Push(GoTo(111), list);
            }
            break;
                    case 468:
            {
              ArrayList list = New468();
              Push(GoTo(111), list);
            }
            break;
                    case 469:
            {
              ArrayList list = New469();
              Push(GoTo(111), list);
            }
            break;
                    case 470:
            {
              ArrayList list = New470();
              Push(GoTo(111), list);
            }
            break;
                    case 471:
            {
              ArrayList list = New471();
              Push(GoTo(111), list);
            }
            break;
                    case 472:
            {
              ArrayList list = New472();
              Push(GoTo(111), list);
            }
            break;
                    case 473:
            {
              ArrayList list = New473();
              Push(GoTo(111), list);
            }
            break;
                    case 474:
            {
              ArrayList list = New474();
              Push(GoTo(111), list);
            }
            break;
                    case 475:
            {
              ArrayList list = New475();
              Push(GoTo(111), list);
            }
            break;
                    case 476:
            {
              ArrayList list = New476();
              Push(GoTo(111), list);
            }
            break;
                    case 477:
            {
              ArrayList list = New477();
              Push(GoTo(111), list);
            }
            break;
                    case 478:
            {
              ArrayList list = New478();
              Push(GoTo(112), list);
            }
            break;
                    case 479:
            {
              ArrayList list = New479();
              Push(GoTo(112), list);
            }
            break;
                    case 480:
            {
              ArrayList list = New480();
              Push(GoTo(112), list);
            }
            break;
                    case 481:
            {
              ArrayList list = New481();
              Push(GoTo(112), list);
            }
            break;
                    case 482:
            {
              ArrayList list = New482();
              Push(GoTo(113), list);
            }
            break;
                    case 483:
            {
              ArrayList list = New483();
              Push(GoTo(113), list);
            }
            break;
                    case 484:
            {
              ArrayList list = New484();
              Push(GoTo(113), list);
            }
            break;
                    case 485:
            {
              ArrayList list = New485();
              Push(GoTo(114), list);
            }
            break;
                    case 486:
            {
              ArrayList list = New486();
              Push(GoTo(114), list);
            }
            break;
                    case 487:
            {
              ArrayList list = New487();
              Push(GoTo(114), list);
            }
            break;
                    case 488:
            {
              ArrayList list = New488();
              Push(GoTo(115), list);
            }
            break;
                    case 489:
            {
              ArrayList list = New489();
              Push(GoTo(115), list);
            }
            break;
                    case 490:
            {
              ArrayList list = New490();
              Push(GoTo(115), list);
            }
            break;
                    case 491:
            {
              ArrayList list = New491();
              Push(GoTo(115), list);
            }
            break;
                    case 492:
            {
              ArrayList list = New492();
              Push(GoTo(115), list);
            }
            break;
                    case 493:
            {
              ArrayList list = New493();
              Push(GoTo(116), list);
            }
            break;
                    case 494:
            {
              ArrayList list = New494();
              Push(GoTo(116), list);
            }
            break;
                    case 495:
            {
              ArrayList list = New495();
              Push(GoTo(116), list);
            }
            break;
                    case 496:
            {
              ArrayList list = New496();
              Push(GoTo(117), list);
            }
            break;
                    case 497:
            {
              ArrayList list = New497();
              Push(GoTo(117), list);
            }
            break;
                    case 498:
            {
              ArrayList list = New498();
              Push(GoTo(118), list);
            }
            break;
                    case 499:
            {
              ArrayList list = New499();
              Push(GoTo(118), list);
            }
            break;
                    case 500:
            {
              ArrayList list = New500();
              Push(GoTo(119), list);
            }
            break;
                    case 501:
            {
              ArrayList list = New501();
              Push(GoTo(119), list);
            }
            break;
                    case 502:
            {
              ArrayList list = New502();
              Push(GoTo(120), list);
            }
            break;
                    case 503:
            {
              ArrayList list = New503();
              Push(GoTo(120), list);
            }
            break;
                    case 504:
            {
              ArrayList list = New504();
              Push(GoTo(121), list);
            }
            break;
                    case 505:
            {
              ArrayList list = New505();
              Push(GoTo(121), list);
            }
            break;
                    case 506:
            {
              ArrayList list = New506();
              Push(GoTo(122), list);
            }
            break;
                    case 507:
            {
              ArrayList list = New507();
              Push(GoTo(122), list);
            }
            break;
                    case 508:
            {
              ArrayList list = New508();
              Push(GoTo(123), list);
            }
            break;
                    case 509:
            {
              ArrayList list = New509();
              Push(GoTo(123), list);
            }
            break;
                    case 510:
            {
              ArrayList list = New510();
              Push(GoTo(123), list);
            }
            break;
                    case 511:
            {
              ArrayList list = New511();
              Push(GoTo(123), list);
            }
            break;
                    case 512:
            {
              ArrayList list = New512();
              Push(GoTo(123), list);
            }
            break;
                    case 513:
            {
              ArrayList list = New513();
              Push(GoTo(123), list);
            }
            break;
                    case 514:
            {
              ArrayList list = New514();
              Push(GoTo(123), list);
            }
            break;
                    case 515:
            {
              ArrayList list = New515();
              Push(GoTo(123), list);
            }
            break;
                    case 516:
            {
              ArrayList list = New516();
              Push(GoTo(123), list);
            }
            break;
                    case 517:
            {
              ArrayList list = New517();
              Push(GoTo(124), list);
            }
            break;
                    case 518:
            {
              ArrayList list = New518();
              Push(GoTo(124), list);
            }
            break;
                    case 519:
            {
              ArrayList list = New519();
              Push(GoTo(124), list);
            }
            break;
                    case 520:
            {
              ArrayList list = New520();
              Push(GoTo(124), list);
            }
            break;
                    case 521:
            {
              ArrayList list = New521();
              Push(GoTo(124), list);
            }
            break;
                    case 522:
            {
              ArrayList list = New522();
              Push(GoTo(124), list);
            }
            break;
                    case 523:
            {
              ArrayList list = New523();
              Push(GoTo(124), list);
            }
            break;
                    case 524:
            {
              ArrayList list = New524();
              Push(GoTo(124), list);
            }
            break;
                    case 525:
            {
              ArrayList list = New525();
              Push(GoTo(124), list);
            }
            break;
                    case 526:
            {
              ArrayList list = New526();
              Push(GoTo(124), list);
            }
            break;
                    case 527:
            {
              ArrayList list = New527();
              Push(GoTo(124), list);
            }
            break;
                    case 528:
            {
              ArrayList list = New528();
              Push(GoTo(124), list);
            }
            break;
                    case 529:
            {
              ArrayList list = New529();
              Push(GoTo(124), list);
            }
            break;
                    case 530:
            {
              ArrayList list = New530();
              Push(GoTo(124), list);
            }
            break;
                    case 531:
            {
              ArrayList list = New531();
              Push(GoTo(124), list);
            }
            break;
                    case 532:
            {
              ArrayList list = New532();
              Push(GoTo(124), list);
            }
            break;
                    case 533:
            {
              ArrayList list = New533();
              Push(GoTo(124), list);
            }
            break;
                    case 534:
            {
              ArrayList list = New534();
              Push(GoTo(124), list);
            }
            break;
                    case 535:
            {
              ArrayList list = New535();
              Push(GoTo(124), list);
            }
            break;
                    case 536:
            {
              ArrayList list = New536();
              Push(GoTo(124), list);
            }
            break;
                    case 537:
            {
              ArrayList list = New537();
              Push(GoTo(124), list);
            }
            break;
                    case 538:
            {
              ArrayList list = New538();
              Push(GoTo(124), list);
            }
            break;
                    case 539:
            {
              ArrayList list = New539();
              Push(GoTo(124), list);
            }
            break;
                    case 540:
            {
              ArrayList list = New540();
              Push(GoTo(124), list);
            }
            break;
                    case 541:
            {
              ArrayList list = New541();
              Push(GoTo(124), list);
            }
            break;
                    case 542:
            {
              ArrayList list = New542();
              Push(GoTo(124), list);
            }
            break;
                    case 543:
            {
              ArrayList list = New543();
              Push(GoTo(124), list);
            }
            break;
                    case 544:
            {
              ArrayList list = New544();
              Push(GoTo(124), list);
            }
            break;
                    case 545:
            {
              ArrayList list = New545();
              Push(GoTo(124), list);
            }
            break;
                    case 546:
            {
              ArrayList list = New546();
              Push(GoTo(124), list);
            }
            break;
                    case 547:
            {
              ArrayList list = New547();
              Push(GoTo(124), list);
            }
            break;
                    case 548:
            {
              ArrayList list = New548();
              Push(GoTo(125), list);
            }
            break;
                    case 549:
            {
              ArrayList list = New549();
              Push(GoTo(125), list);
            }
            break;
                    case 550:
            {
              ArrayList list = New550();
              Push(GoTo(126), list);
            }
            break;
                    case 551:
            {
              ArrayList list = New551();
              Push(GoTo(126), list);
            }
            break;
                    case 552:
            {
              ArrayList list = New552();
              Push(GoTo(127), list);
            }
            break;
                    case 553:
            {
              ArrayList list = New553();
              Push(GoTo(127), list);
            }
            break;
                    case 554:
            {
              ArrayList list = New554();
              Push(GoTo(128), list);
            }
            break;
                    case 555:
            {
              ArrayList list = New555();
              Push(GoTo(128), list);
            }
            break;
                    case 556:
            {
              ArrayList list = New556();
              Push(GoTo(129), list);
            }
            break;
                    case 557:
            {
              ArrayList list = New557();
              Push(GoTo(129), list);
            }
            break;
                    case 558:
            {
              ArrayList list = New558();
              Push(GoTo(130), list);
            }
            break;
                    case 559:
            {
              ArrayList list = New559();
              Push(GoTo(130), list);
            }
            break;
                    case 560:
            {
              ArrayList list = New560();
              Push(GoTo(130), list);
            }
            break;
                    case 561:
            {
              ArrayList list = New561();
              Push(GoTo(130), list);
            }
            break;
                    case 562:
            {
              ArrayList list = New562();
              Push(GoTo(131), list);
            }
            break;
                    case 563:
            {
              ArrayList list = New563();
              Push(GoTo(132), list);
            }
            break;
                    case 564:
            {
              ArrayList list = New564();
              Push(GoTo(132), list);
            }
            break;
                    case 565:
            {
              ArrayList list = New565();
              Push(GoTo(132), list);
            }
            break;
                    case 566:
            {
              ArrayList list = New566();
              Push(GoTo(132), list);
            }
            break;
                    case 567:
            {
              ArrayList list = New567();
              Push(GoTo(132), list);
            }
            break;
                    case 568:
            {
              ArrayList list = New568();
              Push(GoTo(132), list);
            }
            break;
                    case 569:
            {
              ArrayList list = New569();
              Push(GoTo(133), list);
            }
            break;
                    case 570:
            {
              ArrayList list = New570();
              Push(GoTo(133), list);
            }
            break;
                    case 571:
            {
              ArrayList list = New571();
              Push(GoTo(134), list);
            }
            break;
                    case 572:
            {
              ArrayList list = New572();
              Push(GoTo(134), list);
            }
            break;
                    case 573:
            {
              ArrayList list = New573();
              Push(GoTo(134), list);
            }
            break;
                    case 574:
            {
              ArrayList list = New574();
              Push(GoTo(134), list);
            }
            break;
                    case 575:
            {
              ArrayList list = New575();
              Push(GoTo(134), list);
            }
            break;
                    case 576:
            {
              ArrayList list = New576();
              Push(GoTo(134), list);
            }
            break;
                    case 577:
            {
              ArrayList list = New577();
              Push(GoTo(134), list);
            }
            break;
                    case 578:
            {
              ArrayList list = New578();
              Push(GoTo(134), list);
            }
            break;
                    case 579:
            {
              ArrayList list = New579();
              Push(GoTo(134), list);
            }
            break;
                    case 580:
            {
              ArrayList list = New580();
              Push(GoTo(134), list);
            }
            break;
                    case 581:
            {
              ArrayList list = New581();
              Push(GoTo(134), list);
            }
            break;
                    case 582:
            {
              ArrayList list = New582();
              Push(GoTo(134), list);
            }
            break;
                    case 583:
            {
              ArrayList list = New583();
              Push(GoTo(134), list);
            }
            break;
                    case 584:
            {
              ArrayList list = New584();
              Push(GoTo(134), list);
            }
            break;
                    case 585:
            {
              ArrayList list = New585();
              Push(GoTo(134), list);
            }
            break;
                    case 586:
            {
              ArrayList list = New586();
              Push(GoTo(134), list);
            }
            break;
                    case 587:
            {
              ArrayList list = New587();
              Push(GoTo(134), list);
            }
            break;
                    case 588:
            {
              ArrayList list = New588();
              Push(GoTo(134), list);
            }
            break;
                    case 589:
            {
              ArrayList list = New589();
              Push(GoTo(134), list);
            }
            break;
                    case 590:
            {
              ArrayList list = New590();
              Push(GoTo(134), list);
            }
            break;
                    case 591:
            {
              ArrayList list = New591();
              Push(GoTo(134), list);
            }
            break;
                    case 592:
            {
              ArrayList list = New592();
              Push(GoTo(134), list);
            }
            break;
                    case 593:
            {
              ArrayList list = New593();
              Push(GoTo(134), list);
            }
            break;
                    case 594:
            {
              ArrayList list = New594();
              Push(GoTo(135), list);
            }
            break;
                    case 595:
            {
              ArrayList list = New595();
              Push(GoTo(135), list);
            }
            break;
                    case 596:
            {
              ArrayList list = New596();
              Push(GoTo(136), list);
            }
            break;
                    case 597:
            {
              ArrayList list = New597();
              Push(GoTo(136), list);
            }
            break;
                    case 598:
            {
              ArrayList list = New598();
              Push(GoTo(137), list);
            }
            break;
                    case 599:
            {
              ArrayList list = New599();
              Push(GoTo(137), list);
            }
            break;
                    case 600:
            {
              ArrayList list = New600();
              Push(GoTo(138), list);
            }
            break;
                    case 601:
            {
              ArrayList list = New601();
              Push(GoTo(138), list);
            }
            break;
                    case 602:
            {
              ArrayList list = New602();
              Push(GoTo(139), list);
            }
            break;
                    case 603:
            {
              ArrayList list = New603();
              Push(GoTo(139), list);
            }
            break;
                    case 604:
            {
              ArrayList list = New604();
              Push(GoTo(140), list);
            }
            break;
                    case 605:
            {
              ArrayList list = New605();
              Push(GoTo(140), list);
            }
            break;
                    case 606:
            {
              ArrayList list = New606();
              Push(GoTo(141), list);
            }
            break;
                    case 607:
            {
              ArrayList list = New607();
              Push(GoTo(141), list);
            }
            break;
                    case 608:
            {
              ArrayList list = New608();
              Push(GoTo(142), list);
            }
            break;
                    case 609:
            {
              ArrayList list = New609();
              Push(GoTo(142), list);
            }
            break;
                    }
                    break;
                case ACCEPT:
                    {
                        EOF node2 = (EOF) lexer.Next();
                        PSourceFile node1 = (PSourceFile) ((ArrayList)Pop())[0];
                        Start node = new Start(node1, node2);
                        return node;
                    }
                case ERROR:
                    throw new ParserException(last_token,
                        "[" + last_line + "," + last_pos + LocRM.GetString("ErrorText220") +
                        errorMessages[errors[action[1]]]);
            }
            }
        }
 public Error(Token pos, AASourceFile sourceFile, string message, bool warning = false, params TreeNode[] children)
 {
     this.pos = new TextPoint(pos.Line - 1, pos.Pos - 1);
     FileName = sourceFile == null || sourceFile.GetName() == null ? "Library file" : sourceFile.GetName().Text;
     Message = message;
     Warning = warning;
     Text = ToString();
     if (children.Length > 0)
         Nodes.AddRange(children);
     SelectedImageIndex = ImageIndex = warning ? 1 : 0;
 }
 public Error(Token pos, string message, bool warning = false, params TreeNode[] children)
     : this(pos, Util.GetAncestor<AASourceFile>(pos), message, warning, children)
 {
 }
 public Error(Token pos, string fileName, string message, bool warning = false)
 {
     this.pos = new TextPoint(pos.Line - 1, pos.Pos - 1);
     FileName = fileName;
     Message = message;
     Warning = warning;
     Text = ToString();
     SelectedImageIndex = ImageIndex = warning ? 1 : 0;
 }