当前位置: 首页>>代码示例>>C++>>正文


C++ tokenizer::peek_char方法代码示例

本文整理汇总了C++中tokenizer::peek_char方法的典型用法代码示例。如果您正苦于以下问题:C++ tokenizer::peek_char方法的具体用法?C++ tokenizer::peek_char怎么用?C++ tokenizer::peek_char使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在tokenizer的用法示例。


在下文中一共展示了tokenizer::peek_char方法的2个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。

示例1: is_next

bool number::is_next(tokenizer &tokens, int i, void *data)
{
	while (tokens.peek_char(i) == '-' || tokens.peek_char(i) == '+' || tokens.peek_char(i) == '.')
		i++;

	return (tokens.peek_char(i) >= '0' && tokens.peek_char(i) <= '9');
}
开发者ID:yuchien302,项目名称:skeleton,代码行数:7,代码来源:number.cpp

示例2: consume

token number::consume(tokenizer &tokens, void *data)
{
	token result;
	result.type = tokens.token_type<number>();
	result.start = tokens.offset+1;

	char character = tokens.peek_char(1);

	while (character == '-' || character == '+')
	{
		tokens.next_char();
		character = tokens.peek_char(1);
	}

	enum
	{
		hexidecimal = 3,
		decimal = 2,
		octal = 1,
		binary = 0,
	} type = decimal;

	if (tokens.peek_char(1) == '0' && tokens.peek_char(2) == 'x')
	{
		type = hexidecimal;
		tokens.next_char();
		tokens.next_char();
	}
	else if (tokens.peek_char(1) == '0' && tokens.peek_char(2) == 'o')
	{
		type = octal;
		tokens.next_char();
		tokens.next_char();
	}
	else if (tokens.peek_char(1) == '0' && tokens.peek_char(2) == 'b')
	{
		type = binary;
		tokens.next_char();
		tokens.next_char();
	}

	while ((type == hexidecimal && ((character >= '0' && character <= '9') || (character >= 'a' && character <= 'f') || (character >= 'A' && character <= 'F'))) ||
		   (type == decimal && (character >= '0' && character <= '9')) ||
		   (type == octal && (character >= '0' && character <= '7')) ||
		   (type == binary && (character >= '0' && character <= '1')))
	{
		tokens.next_char();
		character = tokens.peek_char(1);
	}

	if (type == decimal && character == '.' && tokens.peek_char(2) >= '0' && tokens.peek_char(2) <= '9')
	{
		tokens.next_char();
		character = tokens.peek_char(1);
		while (character >= '0' && character <= '9')
		{
			tokens.next_char();
			character = tokens.peek_char(1);
		}
	}

	if (type == decimal && (character == 'e' || character == 'E') && (tokens.peek_char(2) == '-' || (tokens.peek_char(2) >= '0' && tokens.peek_char(2) <= '9')))
	{
		tokens.next_char();
		character = tokens.peek_char(1);
		if (character == '-')
		{
			tokens.next_char();
			character = tokens.peek_char(1);
		}

		if (character < '0' || character > '9')
			tokens.token_error((string)"exponent has no digits", __FILE__, __LINE__);

		while (character >= '0' && character <= '9')
		{
			tokens.next_char();
			character = tokens.peek_char(1);
		}
	}

	result.end = tokens.offset+1;
	return result;
}
开发者ID:yuchien302,项目名称:skeleton,代码行数:84,代码来源:number.cpp


注:本文中的tokenizer::peek_char方法示例由纯净天空整理自Github/MSDocs等开源代码及文档管理平台,相关代码片段筛选自各路编程大神贡献的开源项目,源码版权归原作者所有,传播和使用请参考对应项目的License;未经允许,请勿转载。