私は、mythryl を neko に変換することを目的とした、PLY を使用したトランスコンパイラを Python で作成しています。
問題は、次のようなコードを解析するときです。
fun not 1 => 0;
not 0 => 1;
end;
この例はhttps://github.com/narke/my2neko/blob/master/test_cases/ex1.myにあります。
パーサーは、FUN_T で表される予約語「fun」に適用される規則と一致しません。もちろん規則は存在します。最後の規則は次のとおりです。
def p_declaration(p):
'''declaration : MY_T vb
| dot_exp ARROW pattern
| FIELD_T MY_T fields
| RECURSIVE_T MY_T rvb
| FUN_T fun_decls
パーサーはhttps://github.com/narke/my2neko/blob/master/my2neko.pyにあります。
私が得たエラーは次のようなものです:
State : 0
Illegal character 'f'
Illegal character 'u'
Illegal character 'n'
Illegal character 'i'
Illegal character 'n'
Stack : . LexToken(LOWERCASE_ID,'c',1,6)
Action : Shift and goto state 80
再現するには: ./my2neko.py test_cases/ex4.my f.neko
私が見逃したものを教えてください。前もって感謝します。
プロジェクトは次のとおりです: https://github.com/narke/my2neko