AOJ1031 Simple GUI Application
問題
指定された記法のXMLを解析してGUIオブジェクトの配置状況を読み取り、クリックした領域と子オブジェクトの数を答えよ。
解説
地道にやる。sscanfを使って、','区切りの数値を読み取ったり、タグを正規表現で読み取るのが賢いらしい。
自分はまだ荒削りだが字句解析器と構文解析器を作ってみた。
ソースコード
http://judge.u-aizu.ac.jp/onlinejudge/review.jsp?rid=1796929
以下の様なコード(?)で解析できるようにした。
DEF_PARSER(xml, string tag; vector<int> nums; , prop(tag) = "OUT OF MAIN PANEL" ) PARSER_IMPL(xml, HEAD("</")) lex_f("</" + p->tag + ">"); TERMINATE CHANCE( HEAD("<")) RECUR(xml, cprop(tag) = lex<string>(alphabetical, {}, {'<','>'}); cprop(tag) = c->tag.substr(1, c->tag.size()-2); cprop(nums) = lex_stream<int>(integer, {','}); ) END_PARSER_IMPL