/*
    基本情報技術者試験          平成13年度・秋期・午後 問6
                                BohYoh Shibata PREPARATION
*/
#define MAXELMNUM 256

typedef struct {
    char *tag;
    int  depth;
    char *value;
} ELEMENT;

char *parse_ml_data(char *, int);
ELEMENT elmtbl[MAXELMNUM];
int elmnum = 0;

void parse_ml_string(char *mlstr)
{
    while (*mlstr != '\0') {
        mlstr = parse_ml_data(mlstr + 1, 1);
    }
}

char *parse_ml_data(char *mlstr, int level)
{
    /* 開始タグ処理 */
    elmtbl[elmnum].tag = mlstr ;
    elmtbl[elmnum].depth = level;
    for (; *mlstr != '>'; mlstr++);
    *mlstr = '\0';
    /* タグの値処理 */
    elmtbl[elmnum].value = mlstr + 1 ;
    for (mlstr++; *mlstr != '<'; mlstr++);
    *mlstr = '\0';
    elmnum++ ;
    /* 下位のタグ構造処理 */
    while ( *(mlstr + 1) != '/' )
        mlstr = parse_ml_data(mlstr + 1, level + 1);
    /* 終了タグ処理 */
    for (mlstr += 2; *mlstr != '>'; mlstr++);
    return mlstr + 1;
}