Pemeriksa Sintaks myHTML

Anda harus membuat program yang dapat memeriksa sintaks teks yang mengandung tag-tag myHTML. myHTML memiliki tag yang mirip dengan HTML (WWW), hanya saja, isi / nama tag nya bebas. Kita tidak akan memperhatikan semantik / arti dari tag tersebut. sehingga akan mempermudah kita dalam memvalidasi aturan sintaks-sintaks. Pada dokumen ini Anda akan melihat dokumen yang berisi teks berisi tag markup. Tag markup akan berupa pasangan-pasangan markup. Berikut ini adalah contoh dokumen tersebut:
  	This is some ordinary text. <ATAG>  Here's some additional
 	text. <BOLD>  This will be boldface. </BOLD>  Still more 
	</ATAG>  
Ada dua tag markup pada dokumen di atas. Arti dari tag ATAG dan BOLD tidaklah penting bagi kita. Tag markup di atas secara mudah dapat kita temukan karena mereka muncul diantara tanda '<' dan '>'. Nama tag tidak boleh lebih dari 10 karakter berhuruf besar. Tag akan ditutup dengan tanda yang sama hanya ditambah dengan karakter '/'. Seperti yang diilustrasikan, sebuah tag dan penutupnya tidak harus berada dalam satu baris, dan seperti pada HTML, sebuah tag harus ditutup dengan benar, persis seperti pasangan BEGIN...END di Pascal, atau '{' dan'}' di C/C++.

Input

Inputnya harus dapat berisi berbagai kasus. Setiap baris dimulai dengan 'CASE N' dimana N berupa suatu integer (dari 0-32767). Kemudian baris-baris berikutnya boleh berisi kode-kode dan tag-tag myHTML yang bisa dibuat dalam banyak baris. Tanda akhir dari kasus adalah baris yang berisi 'END CASE'.
Nama tag bebas, berupa ASCII (teks biasa) dan maksimal panjang teksnya adalah 10 huruf.

Output

Untuk setiap kasus, outputkan nomor kasusnya. Jika kasus tersebut valid, maka outputkan kata "OK". Jika ada error, maka outputkan error yang ditemui dengan nomor barisnya. Jenis errornya adalah:
 	line #: bad character in tag name <tagname>, jika nama tag tidak valid
	line #: too many/few characters in tag name <tagname>, jika nama tag terlalu sedikit atau lebih dari 10 karakter
	line #: expected </tagname>, jika tidak ada tag penutup
	line #: no matching begin tag <tagname>, jika tidak ada tag pembuka

Tanda '#' menyebutkan nomor baris dimana kode tersebut salah. Nomor baris per CASE harus dimulai lagi dari baris pertama dan seterusnya.
Jika ada error, maka program harus terus meneruskan hingga seluruh kasus dapat dideteksi errornya masing-masing..

Contoh Input:

CASE 1
This is
 some ordinary text. 
<BEGIN> This is included in the BEGIN tag </BEGIN>  
        <START>    Here's some stuff 
and so is this 
 
     more stuff. </START>
END CASE
CASE 2
   This has a null tag <> 
   And an extra line after the error
END CASE
CASE 3 
   This has some good stuff <OKAY> and some bad stuff later on. 
   <GOOD> All is still okay, but later on we'll have an error. 
   </GOOD> We're still in the pink! <THISISTOOLONG> 
   This line will be skipped.  
   As will this one.
END CASE
CASE 4
   This is an interesting error: <ERROR 
END CASE
CASE 5
   This one is okay
                                                <IN> </IN>
END CASE
CASE 6
   Mismatch <START> </STOP> 
END CASE
CASE 7
    Missing start symbol:   <OK></OK></NOTOK>   more garbage... 
END CASE

Contoh Output:

TEST CASE 1
OK


TEST CASE 2
Line #1 : too many/few characters in tag name <>.

TEST CASE 3
Line #3 : too many/few characters in tag name <THISISTOOLONG>.
Line #1 : expected tag </OKAY>.

TEST CASE 4
Line #1 : bad character in tag name.

TEST CASE 5
OK

TEST CASE 6
Line #1 : expected tag </START>.
Line #1 : no matching begin tag </STOP>.

TEST CASE 7
Line #1 : no matching begin tag </NOTOK>

Tag-tag valid yang ditemukan:

TEST CASE 1
<BEGIN> dan </BEGIN>
<START> dan </START>
TEST CASE 2 TEST CASE 3 <GOOD> dan </GOOD> TEST CASE 4 TEST CASE 5 <IN> dan </IN> TEST CASE 6 TEST CASE 7 <OK> dan </OK>

Contoh Kasus Lain:

CASE 100
sdsfads dsfdsfs < a > sdfsfas < / abc>
<B></B>sdfsda <c>
</c></d>dsfsd
END CASE
CASE 101
dsfksjdl skjfklsf <fff>sdfsa </fff>
<abcdefghijklmn>sdfsd </abcdefghijklm>
END CASE

Contoh Ouput:

TEST CASE 100
Line #1 : expected tag </a>.
Line #3 : no matching begin tag </d>.

TEST CASE 101
Line #2 : too many/few characters in tag name <abcdefghijklmn>.
Line #2 : no matching begin tag </abcdefghijklm>.

Tag-tag valid yang ditemukan:

TEST CASE 100
<B> dan </B>
<c> dan </c>

TEST CASE 101
<fff> dan </fff>

Antonius Rachmat C, S.Kom, M. Kom.