「コンパイラ・スクリプトエンジン」相談室8at TECH「コンパイラ・スクリプトエンジン」相談室8 - 暇つぶし2ch■コピペモード□スレを通常表示□オプションモード□このスレッドのURL■項目テキスト400:デフォルトの名無しさん 05/11/23 19:07:40 >398 bisonで、式を expr : expr '+' expr | expr '*' expr ... という具合に書いているのですが、 間に改行を入れている場合 アクションで得る時点のyylineno では 演算子の出現した行番号と異なってしまうのです。 かといって、演算子を非終端記号にして その時点のyylinenoを記録しておくとすると 演算子同士の優先の設定ができなくなりますし…。 401:デフォルトの名無しさん 05/11/23 21:00:58 大物は来ないのか? 402:398 05/11/23 22:12:45 >>400 .yで %union { ...; int lineno; ...; } %token<lineno> '+' '-' ... .lで "+" {yylval.lineno = yylineno; } "-" {yylval.lineno = yylineno; } ... ってダメなんだっけ? 403:398 05/11/23 22:16:08 ごめん。 return忘れてた。 "+" {yylval.lineno = yylineno; return '+'; } 404:デフォルトの名無しさん 05/11/23 23:05:34 >402 その方法でいけそうです。 ありがとうございます。 次ページ最新レス表示レスジャンプ類似スレ一覧スレッドの検索話題のニュースおまかせリストオプションしおりを挟むスレッドに書込スレッドの一覧暇つぶし2ch