ビット演算子追加
ちょっと、横道にそれていまして、ColdFire移植予定ですが、OsoScriptを任天堂DS(NDS)に移植していました。キー取得命令などを作ったところ、ビット演算子が欲しくなりまして、追加しました。
//********************************************** //ビット演算する項を解く関数 //********************************************** float bitexp_Term( void ) { float value; value = compare_Term(); while( 1 ){ if( Amatch( "&", 0 ) ){ value = (float)((int)value & (int)compare_Term()); } else if( Amatch("^", 0 ) ){ value = (float)((int)value ^ (int)compare_Term()); } else if( Amatch("|", 0 ) ){ value = (float)((int)value | (int)compare_Term()); } else if( Amatch("$<", 0 ) ){ value = (float)((int)value << (int)compare_Term()); } else if( Amatch("$>", 0 ) ){ value = (float)((int)value >> (int)compare_Term()); } else{ break; } } return( value ); }
比較演算子よりも優先度が低くして、後シフト演算子も作りました。
それと、前回、比較演算子で不等演算子に'<>'を使いましたが、これを止めました。不等演算子は'!='のみとしました。
//********************************************** //比較評価する項を解く関数 //********************************************** float compare_Term( void ) { float value; value = sumdiff_Term(); while( 1 ){ if( Amatch( ">", 0 ) ){ if( value>p_expression() ) value = 1; else value = 0; } else if( Amatch(">=", 0 ) ){ if( value>=p_expression() ) value = 1; else value = 0; } else if( Amatch("==", 0 ) ){ if( value==p_expression() ) value = 1; else value = 0; } else if( Amatch("<=", 0 ) ){ if( value<=p_expression() ) value = 1; else value = 0; } else if( Amatch("<", 0 ) ){ if( value<p_expression() ) value = 1; else value = 0; } else if( Amatch("!=", 0 ) ){ if( value!=p_expression() ) value = 1; else value = 0; } else{ break; } } return( value ); }
おや、ブログを書いていて気づきましたが、上の比較で読んでいるp_expression()は、sumdiff_Term()の間違いですね。正しくは、下記ですね。
//********************************************** //比較評価する項を解く関数 //********************************************** float compare_Term( void ) { float value; value = sumdiff_Term(); while( 1 ){ if( Amatch( ">", 0 ) ){ if( value>sumdiff_Term() ) value = 1; else value = 0; } else if( Amatch(">=", 0 ) ){ if( value>=sumdiff_Term() ) value = 1; else value = 0; } else if( Amatch("==", 0 ) ){ if( value==sumdiff_Term() ) value = 1; else value = 0; } else if( Amatch("<=", 0 ) ){ if( value<=sumdiff_Term() ) value = 1; else value = 0; } else if( Amatch("<", 0 ) ){ if( value<sumdiff_Term() ) value = 1; else value = 0; } else if( Amatch("!=", 0 ) ){ if( value!=sumdiff_Term() ) value = 1; else value = 0; } else{ break; } } return( value ); }
今から、修正と確認しよう。
本当にやりたいことリスト
(ブログの終わりにやりたいことを書いておきたいと思います)
- 求職活動・・・このブログで興味を持った人一声かけてください。m(_ _)m
- Androidプログラム
- Web系のプログラム