コメントも書けるようにする

ここまでの入力文字列中に改行を使うことはできましたが、コメントを書くことはできませんでした
そこで入力文字列中に C/C++ 風のコメントがあったときはその部分を無視することができるようにしてみましょう

仕組み

コメントは式の評価には関係ないので構文解析器の立場からすると空白と同じです
空白を読み飛ばす関数は skipspace ですから、これをコメント対応に改造してみましょう
それだけで全体がコメント対応になります
簡単ですね
では実装してみましょう

実装

bool	string_calc::skipspace(){
	char	comment = 0;
	while( !eof()){
		char	c1 = at( 0, SEEK_CUR );
		char	c2 = at( 1, SEEK_CUR );
		char	c = 0;
		if( comment == '/' ){
			c = getch();
			if( c == '\n' ){
				comment = 0;
			}
			else if( _ismbblead(( unsigned int )( unsigned char )c )){
				c = getch();
			}
		}
		else if( comment == '*' ){
			if(( c1 == '*' )&&( c2 == '/' )){
				seek( 2, SEEK_CUR );
				comment = 0;
			}
			else{
				c = getch();
				if( _ismbblead(( unsigned int )( unsigned char )c )){
					c = getch();
				}
			}
		}
		else{
			if((( c1 == '/' )&&( c2 == '/' ))
			 ||(( c1 == '/' )&&( c2 == '*' ))){
				seek( 2, SEEK_CUR );
				comment = c2;
			}
			else{
				c = getch();
				if( _ismbblead(( unsigned int )( unsigned char )c ) || !isspace(( unsigned char )c )){
					ungetch( c );
					break;
				}
			}
		}
	}
	return	!eof();
}