Пример #1
0
            protected override bool Parse(DBlockNode tempBlock, DParser p)
            {
                if (p.laKind == DTokens.CloseCurlyBrace)
                {
                    p.Step();

                    /*if (metaDecls.Count > 0)
                     *      metaDecls.RemoveAt (metaDecls.Count - 1);*/
                    return(true);
                }

                // Enum bodies
                if (tempBlock is DEnum)
                {
                    if (p.laKind == DTokens.Comma)
                    {
                        p.Step();
                    }
                    var laBackup = p.la;
                    p.EnumValue(tempBlock as DEnum);
                    if (p.la == laBackup)
                    {
                        return(false);
                    }
                }
                else                 // Normal class/module bodies
                {
                    if (p.laKind == DTokens.Module)
                    {
                        tempBlock.Add(p.ModuleDeclaration());
                        if (p.IsEOF)
                        {
                            return(false);
                        }
                    }

                    p.DeclDef(tempBlock);
                }

                return(true);
            }
Пример #2
0
            protected override bool Parse(BlockStatement tempBlockStmt, DParser p)
            {
                if (p.laKind == DTokens.CloseCurlyBrace)
                {
                    p.Step();

                    /*if (metaDecls.Count > 0)
                     *      metaDecls.RemoveAt (metaDecls.Count - 1);*/
                    return(true);
                }

                var stmt = p.Statement(true, false, tempParentBlock, tempBlockStmt);

                if (stmt != null)
                {
                    tempBlockStmt.Add(stmt);
                }
                else
                {
                    p.Step();
                }
                return(true);
            }