Exemplo n.º 1
0
Arquivo: parser.c Projeto: rju/slp
/* Main parser function
 */
int parse() {
	token = yylex();
	do {
		switch (token) {
		case TITLE:
			if (!parse_title()) return 0;
			break;
		case AUTHOR:
			if (!parse_author()) return 0;
			break;
		case DATE:
			if (!parse_date()) return 0;
			break;
		case SECTION:
			if (!parse_section()) return 0;
			break;
		case FRAME:
			if (!parse_frame()) return 0;
			break;
		case PART:
			if (!parse_part()) return 0;
			break;
		case EOF:
		case ZERO:
			return 1;
		case NEWLINE:
			token = yylex();
			break;
		case IMAGE:
			fprintf(stderr, "[%d] Top mode: figure not allowed in top mode.\n",yylineno);
			return 0;
		case ANIMATION:
			fprintf(stderr, "[%d] Top mode: figure not allowed in top mode.\n",yylineno);
			return 0;
		case LISTING:
			fprintf(stderr, "[%d] Top mode: listing not allowed in top mode.\n", yylineno);
			return 0;
		case STRUCT:
			fprintf(stderr, "[%d] Top mode: structure not allowed in top mode.\n", yylineno);
			return 0;
		case ITEM:
			fprintf(stderr, "[%d] Top mode: item not allowed in top mode.\n", yylineno);
			return 0;
		default:
			fprintf(stderr, "[%d] Top mode: %s \"%s\" not allowed in top mode.\n", yylineno,
					get_token_name(token), yytext);
			return 0;
		}
	} while (token != EOF);

	return 1;
}
Exemplo n.º 2
0
int merger_parse_title( lua_State *L )
{
   const char *str;
   
   if ( !lua_isstring( L, 1 ) )
     {
        lua_pushstring( L, "Invalid argument passed to 'parse_title'." );
        lua_error( L );
     }
   
   str = lua_tostring( L, 1 );
   
   lua_pushboolean( L, parse_title( str ) );
   
   return 1;
}
Exemplo n.º 3
0
void mod_title(struct irc_t * irc, char * reply_msg)
{
    char * content = NULL;
    char * t;

    if (validate_http(irc->request) < 0 )
        return;

    content = curl_perform(irc->request);

    if (!content) return;

    if ( parse_title(reply_msg, content) > 0 ) {
        t = reply_msg;
        while (*t != '\0')
            if (*t++ == '\n')
                t[-1] = ' ';
    }

    free(content);
    return;
}
Exemplo n.º 4
0
static void parse_sound(char *raw, song_t* parse_song) {

	uint8_t part = 0;
	char *start = raw;

	while (*raw != 0) {

		if (*raw == ':') {
			*raw = 0;
			if (part == 0) {
				parse_title(start, parse_song);
			} else if (part == 1) {
				parse_header(start, parse_song);
			}
			start = raw+1;
			part++;
		}

		raw++;
	}

	parse_body(start, parse_song);
}
Exemplo n.º 5
0
void blizzard::http::process()
{
	bool quit = false;
	int res = 0;

	while (!quit)
	{
		switch (state_)
		{
		case sUndefined:
			want_read = true;
			want_write = false;
			state_ = sReadingHead;
			break;

		case sReadingHead:
			res = parse_title();
			if (res > 0)
			{
				state_ = sDone;
				quit = true;
			}
			else if (res < 0)
			{
				quit = true;
			}
			break;

		case sReadingHeaders:
			res = parse_header_line();
			if (res > 0)
			{
				state_ = sDone;
				quit = true;
			}
			else if (res < 0)
			{
				quit = true;
			}
			if (state_ == sReadyToHandle)
			{
				quit = true;
			}
			break;

		case sReadingPost:
			res = parse_post();
			if (res < 0)
			{
				quit = true;
			}
			break;

		case sReadyToHandle:
			commit();
			state_ = sWriting;
			break;

		case sWriting:
			want_write = true;
			res = write_data();
			if (res < 0)
			{
				quit = true;
			}
			break;

		case sDone:
			quit = true;
			break;

		default:
			break;
		}
	}
}