だから私はyeccを使おうとしています。
Terminals string string_delimeter.
Nonterminals value string_content.
Rootsymbol value.
value -> string : extract_value('$1').
value -> string_delimeter string_content string_delimeter : '$2'.
string_content -> value string_content : ['$1' | '$2'].
string_content -> value : '$1'.
Erlang code.
extract_value({_, Value}) -> Value.
入力の場合:
[string_delimeter: '\'', string: 'test', string_delimeter: '\'']
私は得る
{:error, {:undefined, :standard_syntax_parser, ['syntax error before: ', []]}}
string_content を囲む (左または右の) string_delimiter を削除すると、次のようになります。
value -> string_delimeter string_content string_delimeter : '$2'.
value -> string_delimeter string_content : '$2'.
為に
[string_delimeter: '\'', string: 'test']
戻ります
{:ok, 'test'}
この動作がよくわかりません。問題はどこにありますか?