Attribute grammar
論文で出てきた言葉をそのまま写しているだけだから,英語のタイトルばっかり続くけど,
attribute grammar というものが論文でしょっちゅうでてくるからメモ.
http://www.cs.uiowa.edu/~hzhang/c123/Lecture3.pdf
ようするに,構文解析結果に意味づけを付加するための仕組みらしい.
S -> A B とあったら, 下位の A と B から結果を作るだけでなく,
A と B を解析する際に, 上位 Sの内容 を下位に渡すことができるらしい.
具体例をあげると,
class Foo { int bar; String baz; }
みたいなプログラムで,フィールドを解析している最中に,そのフィールドはどの
クラスに属しているかを知りたいときに便利.
class := 'class' name:SYMBOL '{' (Field)* '}' value(class) = new Class() name(value(class)) = name class(Field) = value(class) Field := type name:SYMBOL ';' value(fieldDecl)= new Field () name(value(fieldDecl)) = name type(value(fieldDecl)) = type owner(value(fieldDecl)) = class(Field);
最後の行で class(Field) とあるのが,このフィールド宣言の
外側の class { ... } を指していることになる.