質問
ように 向精神 2.0ベーパーサのための小さなサブセットのFortran77.のんあるFortran77にはカラム指向されていないかもしれませんので、何とその精神でき、そのファイルデータを示すカラムに把握するはありません。
Iさんによる支援の難解Fortranの書式なしば無視線としてのキャラクターの最初のカラム(Fortranコメント)の認識ラインキャラクターのカラムとして継続する。
そうであ扱うバッチファイルから少なくとも同じ最初のカラムとして問題になった。精神が表示されている行末のパーサがスタートのラインパーサ(およびcertianlyないカラム(x)のパーサ).
解決
でも、いかないといけないと思い、私を共有しなければならない。
Fortran77のように、誰もがその他の言語で気の列はライン指向言語である。とのパーサはのEOLは、実際に利用でアクセスするようにし、その解析.
も重要であり、私の場合、かつ解析のライン番号をFortranで早いものを制御す。全ての必要を知るときに聞かせていただきましてスキャンのラインとは異なります。
一方でないということか完全にこの問題に対応することの精神をスキップパーサです。書いて鉱山への
- ページ内移動用の回線全体の場合、最初の(コメント欄に含まれるアルファベットcharater.
- スキップ全体のラインがあります。
- 無視するその前EOLは、すべての列の場合のカラムが含まれて'.' (続きます。このアプローチを採る。
- スキップすべての非eolは空白(空間なのFortran.まつりは悪い。
こちらのコード:
skip =
// Full line comment
(spirit::eol >> spirit::ascii::alpha >> *(spirit::ascii::char_ - spirit::eol))
[boost::bind (&fortran::parse_info::skipping_line, &pi)]
|
// remaining line comment
(spirit::ascii::char_ ('!') >> *(spirit::ascii::char_ - spirit::eol)
[boost::bind (&fortran::parse_info::skipping_line_comment, &pi)])
|
// Continuation
(spirit::eol >> spirit::ascii::blank >>
spirit::qi::repeat(4)[spirit::ascii::char_ - spirit::eol] >> ".")
[boost::bind (&fortran::parse_info::skipping_continue, &pi)]
|
// empty line
(spirit::eol >>
-(spirit::ascii::blank >> spirit::qi::repeat(0, 4)[spirit::ascii::char_ - spirit::eol] >>
*(spirit::ascii::blank) ) >>
&(spirit::eol | spirit::eoi))
[boost::bind (&fortran::parse_info::skipping_empty, &pi)]
|
// whitespace (this needs to be the last alternative).
(spirit::ascii::space - spirit::eol)
[boost::bind (&fortran::parse_info::skipping_space, &pi)]
;
私の助言対盲目的に用い、自らのライン指向のFortranと思を無視する行番号を、異なるコンパイラでコンパイルが異なるルールが有効なためコメントを継続できます。
所属していません StackOverflow