Beispiel #1
0
/*
 * Skip whitespace characters
 */
void 
_lex::_skip_whitespace(void)
{
	while(isspace(get_char()))

		if(!next_char())
			break;

	_skip_comment();
}
Beispiel #2
0
/*!
	@brief return one token from stream
*/
Token Parser::GetToken(void) 
{
	
	_readnexttoken();
	
	switch (_token)
	{
	case backslash:
		_getcommand();
		break;
	case cr:
		break;
	case newline:
		_printtoken();		// \n latex bere jako whitespace
		_skip_whitechars(); // vse bile, co je na zacatku noveho radku se ignoruje
		break;
	case space:
	case tab:
			_printtoken();		// vice whitespace se bere jako jedna whitespace
			_skip_whitechars();
			break;
	case tok_word:
			_printtoken();		
		break;
	case percent:
		_skip_comment();
		break;
	case accent1:			// oteviraci uvozovky se delaji pomoci ''
		_readchar();
		if ( _char == accent1)
		{
			_token = quote;
			_tokenstring.clean();
			_tokenstring << '\"';
		} else
		{
			_in.putback(_char);
		}
		_printtoken();
		break;
	case accent2:			// uzaviraci uvozovky se delaji pomoci ``
		_readchar();
		if ( _char == accent2)
		{
			_token = quote;
			_tokenstring.clean();
			_tokenstring << '\"';
		} else
		{
			_in.putback(_char);
		}
		_printtoken();
		break;
	case hyphen:
		_tokenstring.clean();
		_readchar();
		if ( _char == hyphen )
		{
				_readchar();
					if ( _char == hyphen )
					{
						_tokenstring << "&#8212;";
					}
					else
					{
						_in.putback(_char);
						_tokenstring << "&#8211;";
					}
		} else
		{
			_in.putback(_char);
			_tokenstring << "&#173;";
		}
		_printtoken();
		break;
	case tilda:
		_tokenstring.clean();
		_tokenstring << "&nbsp;";
		_printtoken();
		break;
	default:
			_printtoken();
			break;
	}
	return _token;
}