====== bol ====== xpeg::bol : Element(Element:TYPE_BOL); Begin of Line の略です。 ===== Example1 ===== ファイルを読み込み、先頭が"#"の行のみイテレートします。 ==== C++ ==== ==== Xtal ==== inherit(xpeg); if (fs : FileStream("text.txt", "r")){ fs.scan(bol >> "#" >> cap(comment: any/0) >> eol){ it["comment"].p; } fs.close; } ==== Input ==== # comment a b c def # not comment #comment2 adc ==== Output ==== comment comment2 ===== Example2 ===== ファイルを読み込み、先頭が%%"//"%%の時はコメントとして、それ以外のときはそれ以外として、出力します。 Xtal側のバグなのかそもそもこういう書き方できないのかしらないけど割とうまくいかない。 ==== C++ ==== ==== Xtal ==== inherit(xpeg); if (fs : FileStream("text.txt", "r")){ fs.scan((bol >> "//" >> cap(com: any/0) >> eol)|(bol >> cap(lin: any/0) >> eol)){ if (it["com"]){ ("comment : "~it["com"]).p; } else { // else if (it["lin"]) ("line : "~it["lin"]).p; } } fs.close; } ==== Input ==== // comment this is not comment comment janai! // hoge ==== Output ==== comment : comment line : this is not comment line : comment janai! // hoge