Example #1
0
        private bool _throw()
        {
            //○○で|のエラー発生
            TokenTry();
            bool is_value = _value();

            if (!Accept(NakoTokenType.THROW))
            {
                TokenBack();
                return(false);
            }
            TokenFinally();
            NakoNodeThrow nt = new NakoNodeThrow();

            nt.errorVarNo = localVar.GetIndex(NakoReservedWord.ERROR, true);             // 変数「エラー値」の変数番号を取得
            NakoNodeVariable v = new NakoNodeVariable();

            v.varType = NakoVarType.Object;
            if (is_value)
            {
                v.value = new InvalidOperationException();                 //TODO:set exception from value
            }
            else
            {
                v.value = new Exception();
            }
            nt.exceptionNode = v;
            parentNode.AddChild(nt);
            tok.MoveNext();
            return(true);
        }
Example #2
0
 private void _throw(NakoNodeThrow node)
 {
     //int errorVarNo = node.errorVarNo;
     //Write_r(node.exceptionNode);
     //addNewILCode(NakoILType.LD_LOCAL_REF, node.exceptionNode.value);
     //addNewILCode(NakoILType.ST_LOCAL, errorVarNo);
     //addNewILCode(NakoILType.LD_LOCAL_REF, errorVarNo);
     addNewILCode(NakoILType.THROW, node.exceptionNode.value);
 }