Go to the first, previous, next, last section, table of contents.

### `flatten_quote`

`flatten_quote(q,op)`
  :: quote の括弧をとりさる.

return
  Quote
q
  Quote
op
  演算子を表す文字列.

- Quote 型のデータは木構造をしている ( quotetolist 参照 ). `quote_flatten()` は, q の中にあられる演算子 op の子供ノードを平等にする. つまり演算子 op に関する括弧づけがあった場合それをすべてとりさる. たとえば (1+2)+(3+4) という表現を 1+2+3+4 に変換する.
- 現在の実装では n-ary の演算子は定義されていないので, 1+2+3 は実は 1+(2+3) と表現されている. つまり + 演算子は右結合的である.
- R=0; for (I=0; I<N; I++) R = R+ P[I]; なる足し算を繰り返すと, + は左結合的になる. 右結合的に変換するには flatten_quote を呼ぶ.
- 名前は quote_flatten でなく flatten_quote である.

    [1288] flatten_quote(quote((1+2)+(3+4*(x+3))),"+");
    quote(1+2+3+4*(x+3))
    [1289] flatten_quote(quote( (x*y)*(p*3)-(x*y)*z),"*");
    quote(x*y*p*3-x*y*z)
    [1290] quotetolist(quote(1+2+3));
    [b_op,+,[b_op,+,[internal,1],[internal,2]],[internal,3]]

`参照`
  @xref{quotetolist}, @xref{print_tex_form}(contrib)

ChangeLog

- この関数は 2004-7-7 から 2004-7-8 にかけて quote に関する操作を研究するために実験的に書かれた. OpenXM/fb で蓄積された公式の不要な括弧をとりはずし, tex 形式に変換するのに 応用.
- 変更をうけたソースコードは builtin/strobj.c 1.47, parse/eval.c 1.35, parse/parse.h 1.31, parse/quote.c 1.14--1.16.

Go to the first, previous, next, last section, table of contents.