Разработка словесного описания лексики, синтаксиса и семантики языка, предназначенного для программирования потоковых вычислений, страница 17

    {

        ind2 = ((lexem)(tmp2)).wordIndex;

        if (ind2 < VectValues.size() && VectValues.get(ind2) != null && !VectValues.get(ind2).toString().equals(""))

        {

            val2 = new Float((VectValues.get(ind2).toString()));

            if (((Vector)Pentad.get(i)).elementAt(1).toString().equals("/") && val2.floatValue() == 0) {%><td align=center><%="Деление на ноль."%></td><%break;}

        }

        else {%><td align=center><%="Переменная "+((Vector)Pentad.get(i)).elementAt(2)+" не определена."%></td><%break;}

    }

    else

    {

        val2 = new Float(((Vector)Pentad.get(i)).elementAt(2).toString());

        if (((Vector)Pentad.get(i)).elementAt(1).toString().equals("/") && val2.floatValue() == 0) {%><td align=center><%="Деление на ноль."%></td><%break;}

    }

    tmp = ((Hashtable)(HTidTotal.get(block_name))).get(((Vector)Pentad.get(i)).elementAt(3));

    tmp2 = ((Hashtable)(HTidTotal.get(block_name))).get(((Vector)Pentad.get(i)).elementAt(3).toString());

    if (tmp != null || tmp2 != null)

    {

        ind2 = ((lexem)(tmp2)).wordIndex;

        if (ind2 < VectValues.size() && VectValues.get(ind2) != null && !VectValues.get(ind2).toString().equals("")) val = new Float((VectValues.get(ind2).toString()));

        else {%><td align=center><%="Переменная "+((Vector)Pentad.get(i)).elementAt(3)+" не определена."%></td><%break;}

    }

    else val = new Float(((Vector)Pentad.get(i)).elementAt(3).toString());   

    if (((Vector)Pentad.get(i)).elementAt(1).toString().equals("+")) res=(Object)(new Float(val.floatValue()+val2.floatValue()));

    else if (((Vector)Pentad.get(i)).elementAt(1).toString().equals("-")) res=(Object)(new Float(val.floatValue()-val2.floatValue()));

    else if (((Vector)Pentad.get(i)).elementAt(1).toString().equals("*")) res=(Object)(new Float(val.floatValue()*val2.floatValue()));

    else if (((Vector)Pentad.get(i)).elementAt(1).toString().equals("/")) res=(Object)(new Float(val.floatValue()/val2.floatValue()));

    else if (((Vector)Pentad.get(i)).elementAt(1).toString().equals("==")) res=(Object)(new Integer((val.floatValue()==val2.floatValue())?1:0));

    else if (((Vector)Pentad.get(i)).elementAt(1).toString().equals("!=")) res=(Object)(new Integer((val.floatValue()!=val2.floatValue())?1:0));

    else if (((Vector)Pentad.get(i)).elementAt(1).toString().equals("<")) res=(Object)(new Integer((val.floatValue()<val2.floatValue())?1:0));

    else if (((Vector)Pentad.get(i)).elementAt(1).toString().equals(">")) res=(Object)(new Integer((val.floatValue()>val2.floatValue())?1:0));

    else if (((Vector)Pentad.get(i)).elementAt(1).toString().equals("<=")) res=(Object)(new Integer((val.floatValue()<=val2.floatValue())?1:0));

    else if (((Vector)Pentad.get(i)).elementAt(1).toString().equals(">=")) res=(Object)(new Integer((val.floatValue()>=val2.floatValue())?1:0)); 

    /*else if (((Vector)Pentad.get(i)).elementAt(1).toString().equals("||")) res=(Object)(new Integer((new Boolean(val.toString())).booleanValue()||(new Boolean(val2.toString())).booleanValue()));

    else if (((Vector)Pentad.get(i)).elementAt(1).toString().equals("&&")) res=(Object)(new Integer((new Boolean(val.toString())).booleanValue()&&(new Boolean(val2.toString())).booleanValue()));*/

    else if (((Vector)Pentad.get(i)).elementAt(1).toString().equals("||")) res=(Object)(new Integer((val.floatValue()+val2.floatValue() != 0)?1:0));

    else if (((Vector)Pentad.get(i)).elementAt(1).toString().equals("&&")) res=(Object)(new Integer((val.floatValue()*val2.floatValue() != 0)?1:0));