Exemplo n.º 1
0
        //	Create as much of the parse tree as possible.
        public override int CreateParseSubTree(ref CLexicalAnalyzer plexAnal, ref CSymbolTable pSymbolTable)
        {
            CToken pToken = null;

            if ((CLexicalAnalyzer.LEX_FAIL == plexAnal.GetNextToken(ref pToken, ref pSymbolTable)) ||
                pToken == null || !pToken.IsELSEStatement())
            {
                //throw (C_UM_ERROR_INTERNALERR);
            }

            //Look for a statement
            CParserBuilder builder = new CParserBuilder();

            m_pStatement = (CStatement)builder.CreateParser(ref plexAnal, STATEMENT_TYPE.STMT_asic);
            if (null != (m_pStatement))
            {
                int i32Ret = m_pStatement.CreateParseSubTree(ref plexAnal, ref pSymbolTable);
                if (i32Ret == 0)
                {
                    //ADD_ERROR(C_ES_ERROR_MISSINGSTMT);
                }
                else
                {
                    return(1);
                }
            }
            return(0);
        }