parser.rb
Raccの生成するパーサはすべてParserクラスを継承しています。
Parserクラスにはパース中に使用するメソッドがいくつかあり、
そのようなメソッドをオーバーロードすると、パーサの初期化などができます。
逆に言えば、これらのメソッドを変に再定義すると挙動がおかしく
なりますので注意してください。
ファイル
racc/parser.rb
スーパークラス
Object
メソッド
- next_token (abstract)
-
パーサが次のトークンを読みこむ時に使います。[トークンシンボル,その値]
の形式の配列を返してください。トークンシンボルの値は、デフォルトでは
- 文法中、引用符でかこまれていないもの
→その名前の文字列をinternして得られる整数(たとえば:ATOM)
- 引用符でかこまれているもの
→その文字列そのまま(たとえば、'=')
です。これを変更する方法については、
文法リファレンスを参照してください。
また、もう送るシンボルがなくなったときには、[false,false] を返すように
してください。これを忘れるとわけのわからないパースエラーになります。
また、このメソッドは抽象メソッドなので、必ず下位クラスで再定義する
必要があります。定義しないままパースを始めると例外が発生します。
- on_error( err_simbol, err_value, _tokens, _values, _states )
-
パースエラーが起きたとき、よびだされます。
適切にエラー処理するなり、例外を発生するなりしてください。
このメソッドからもどったあとは、パーサは何事もなかったように
パースを継続します。
引数は、err_simbol がパースエラーをおこしたシンボルトークン、
err_value がその値、残りはアクションで渡されるものと同じです。
デフォルトでは、例外ParseErrorを発生します。
定数
以下にあげる定数はパーサの予約定数です。
これらの定数は使わないでください。パース不可能になります。
- LR_action_table
- LALR行動表
- LR_goto_table
- LALR遷移表
- Shift
- シフトアクション
- Accept
- 受理を示すアクション
- Default
- 先読みのデフォルトトークン
Copyright(c) 1998-1999 Minero Aoki
<aamine@dp.u-netsurf.ne.jp>