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