Ejemplo n.º 1
0
int					get_next_line(int const fd, char **line)
{
	int				ret;
	static t_gnl	*lst;
	t_gnl			*token;

	if (fd < 0 || (!(token = get_token_fd(&lst, fd))) || !line)
		return (-1);
	while ((ret = check_end_line(token, line)) != 1)
	{
		if (token->flag_read == 0 || ret == -1)
		{
			if ((ret = read_new_line(token)) == 0)
				token->flag_read = 1;
			else if (ret == -1)
			{
				clear_token(&lst, fd, line);
				return (-1);
			}
		}
		else if (token->flag_read == 1 && ret == 0)
			return (clear_token(&lst, fd, line));
	}
	return (1);
}
Ejemplo n.º 2
0
int Scanner::read_num() {
  clear_token();
  bool hex_dec_mode = false;
  if (cur_char() == '0' &&
      next_char() == 'x') {
    push_char(cur_char());
    go_ahead();
    push_char(cur_char());
    go_ahead();
    hex_dec_mode = true;
  }
  while (true) {
    char c = cur_char();
    if (hex_dec_mode) {
      if (!is_hex_dec(c)) {
	break;
      }
    } else {
      if (!is_dec(c)) {
	break;
      }
    }
    push_char(cur_char());
    go_ahead();
  }
  return s_info->num_token;
}
Ejemplo n.º 3
0
int Scanner::read_sym() {
  clear_token();
  while (is_symbody(cur_char())) {
    push_char(cur_char());
    go_ahead();
  }
  return s_info->sym_token;
}
Ejemplo n.º 4
0
int main(int argc, char *argv[])
{
	argv[1]="praktek2.txt";
	init_token(argv[1]);
	while(get_token()!=EOF){
		printf("%3d %3d %s \n",token.attr, token.value, token.charvalue);
		clear_token();
	}
	return 0;
}
Ejemplo n.º 5
0
void number(void) //untuk mengecek statement yang angka
{
	if(isnumbr) {
		clear_token();
		get_token();
		if(!isplus && !isminus && !istimes)
		{
			printf("Error : operator is expected\n");
			exit(-1);
		}
		clear_token();
		get_token();
		if(!isnumbr)
		{
			printf("Error : statement is expected\n");
			exit(-1);
		}
	 }
}
Ejemplo n.º 6
0
int Scanner::read_str() {
  clear_token();
  go_ahead();
  while (1) {
    int c = cur_char();
    if (c == '\n') {
      return -1;
    }
    if (c == '\"') {
      go_ahead();
      break;
    }
    if (c == '\\') {
      go_ahead();
      c = cur_char();
    }
    push_char(c);
    go_ahead();
  }
  return s_info->str_token;
}
Ejemplo n.º 7
0
void delete_token(struct token **tok)
{
    clear_token(*tok);
    free((*tok));
    (*tok) = NULL;
}