読者です 読者をやめる 読者になる 読者になる

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