メソッド引数の括弧が省略され、最初の引数の一文字目が 演算子とも解釈できる場合に警告を出します。
条件式中の代入に警告を出します。
head と tail を NODE_BLOCK
のリストとして連結し、
先頭ノードを返します。head または tail が NODE_BLOCK
でない場合は NODE_BLOCK
に入れたうえでそれを連結します。
head もしくは tail が NULL
なら連結はせず、
NULL
でないほうを返します。
ブロックにネストしているコードをパース中は真。
ブロックローカル変数テーブルをポップします。
ブロックローカル変数テーブルをプッシュします。
ruby -e で与えたプログラムを実行中なら真。
orig に格納されているファイル名と行番号を node にコピーします。
node もしくは orig が NULL
のときは何もしません。
id が変数・定数として有効ならば、それを参照するノードを返します。 (get + able であって get table ではない)
lex_strterm 形式の term に従ってヒアドキュメントを 終端行まで読み込む。
ヒアドキュメントの「<<」を既に読みこんだものと仮定して
開始記号を読みこみ、lex_strterm
をセットします。
返り値は、読み込みに成功したときはシンボル、解析できないときは 0 です。
ヒアドキュメントの本体の読み込みに失敗したとき、開始記号
のある行を復帰します。here は lex_strterm
です。
シンボル関係の変数を初期化します。
インタプリタ内部でだけ使う、
他のものとは重複しない ID
を返します。
文字列 s の lex_gets_ptr
の後から一行取得し、返します。
lex_gets_ptr
も進められます。
関数 lex_gets
を使って lex_input
から
Ruby プログラムを一行読みこみます。
NODE_LIST
のリスト head に非 NODE_LIST
のノード
tail を連結し、先頭ノードを返します。head が NULL
のときは tail を NODE_LIST
でラップして返します。
NODE_LISTのリストheadにNODE_LISTのノードtailを連結し、 先頭ノードを返す。head、tailともにNULLであってはならない。
新しいローカル変数 id をテーブルに追加します。
ローカル変数 id の変数 ID を取得します。 定義されていてもいなくても正しい ID が取得できます。
現在のスコープでローカル変数 id が定義されていれば真。
ローカル変数テーブルをポップします。 テーブルが参照されていない場合、 テーブルは自動的に開放されます。
ローカル変数テーブルをプッシュします。 プログラムのトップレベルをパースしているときは top を真にします。
ローカル変数テーブルスタックの先頭にあるテーブルを取得します。
nodeがNULLでなければ現在パース中の行番号を格納した NODE_NEWLINEをnodeの前にに付加し、それを返す。
トークンバッファを初期化またはクリアし、 次のトークンを開始する。
入力から次の一文字を読み込みます。 CR LF に対して LF を、EOF に対して -1 を返します。
node に埋め込まれている行番号を返します。 デバッグ用です。
node の種類を返します。 デバッグ用です。
lex_strterm 形式のノード quote の指示に従い、 文字列の終端または埋め込み式の始まりまで読みこみます。
現在読み込み中のプログラムの次の文字が c ならば真。
入力に一文字戻します。 c が EOF (-1) のときはなにもしません。
現在の SCOPE の $~
の値を返します。
現在の SCOPE の $~
に val を代入します。
C の文字列 s を構文木にコンパイルし、ruby_eval_tree
と
ruby_eval_tree_begin
に格納します。ruby_eval_tree
を返します。
またコンパイルするときにファイル f の line 行目からをコンパイル
していると仮定します。
Ruby の IO オブジェクト file から文字列を読み込み、
それを Ruby プログラムとして構文木にコンパイルします。
作成した構文木は ruby_eval_tree
と ruby_eval_tree_begin
に
格納し、同時に ruby_eval_tree
を返します。
またコンパイルするときにファイル f の line 行目からをコンパイル
していると仮定します。
Ruby の文字列 s を構文木にコンパイルし、ruby_eval_tree
と
ruby_eval_tree_begin
に格納します。ruby_eval_tree
を返します。
またコンパイルするときにファイル f の line 行目からをコンパイル
していると仮定します。
id
に対応する文字列を返します。
返り値は開放できません。
任意の char* と一対一に対応する整数 ID
を返す。
クラス変数名として有効な ID
ならば真。
定数名として有効な ID
ならば真。
インスタンス変数名として有効な ID
ならば真。
ローカル変数名として有効な ID
ならば真。
現在評価中の SCOPE
の $_
の値を取得します。
現在評価中の SCOPE
の $_
に val を代入します。
ノードタイプが type で a0 a1 a2 を 要素に持つノードを生成し、返します。
ruby の -p オプションの実装。 ループと print のノードを ruby_eval_tree に加えます。
ruby の -n オプションの実装。 ループと print のノードを ruby_eval_tree に加えます。
長さ len の文字列 str が予約語であれば
そのフラグテーブルを返します。str が予約語でなければ
NULL
を返します。
struct kwtable { char *name; /* 予約語の名前 */ int id[2]; /* 0: 非修飾型シンボル 1: 修飾型シンボル (kIF_MOD など) があれば それを格納する。なければ id[0] と同じ */ enum lex_state state; /* 遷移すべきlex_state */ };
呼び出し時までに変換が行われたすべてのシンボルの 配列を返す。
一文字に相当するバックスラッシュ記法が許す 文字列を入力バッファから読みとり、評価値を返す。 先頭のバックスラッシュはすでに読みこんでいるものと仮定する。 不正な記法に対してはyyerrorを呼び出し0を返す。
正規表現のオプション (ixmo nesu) を読み込み フラグ (ビットマスク) を返します。
$~ と $_ をセットします。 現在は c=0 が $_ で c=1 が $~ です。
rb_sym_all_symbols() のイテレータブロック。
現在のトークンの先頭へのポインタ。 free してはならない。
トークンバッファに文字 c を追加します。
文字列・正規表現中で許されるバックスラッシュ記法を
入力バッファから読みとり、トークンバッファに追加します。
先頭のバックスラッシュはすでに読みこんでいるものと仮定します。
不正な記法に対しては yyerror
を呼び出し 0 を返します。
トークンバッファを NUL で終端します。
現在のトークンの末尾へのポインタ。
現在のトークンの長さ。
パース中のプログラムのトップレベルのためのローカル変数テーブルをプッシュする。
パース中のプログラムのトップレベルのためのローカル変数テーブルをポップし、 現在存在する SCOPE にそれを接ぎ足す。
node を評価したときに、確実に値が得られない式が あるならば警告またはエラーにする。
node の表すプログラムの中に値を使わないと 意味のない式があれば警告を出す。
# 警告が出る例 lvar = 1 lvar # 無駄 p lvar
node の表すプログラムの中に値を使わないと 意味のない式があれば警告を出す。
# 警告が出る例 lvar = 1 lvar # 無駄 p lvar
ruby -e で与えたプログラムの評価中ではないなら、 警告メッセージ str を出力する。
ruby -e で与えたプログラムの評価中ではなく、
しかも $VERBOSE
が真ならば、警告メッセージ str を出力する。
現在の入力行がヒアドキュメントの終端記号であれば真。
コンパイルを開始します。そのとき、 ファイル名 f の line 行目からを コンパイルするものと仮定します。
パースエラーを報告するときに yyparse
から呼び出されます。
エラーメッセージ msg とエラーになった場所を出力して 0 を返します。
yyparse
から呼び出されるスキャンルーチンです。
次のトークンを読み込み、そのシンボルを返します。
パースを開始します。
この関数は yacc が自動的に生成するので parse.y
には存在しません。