質問

ようにしている文字列を解析にまで神経の行き届いた言語の一種の樹木、例えば:

# a * b1 b2 -> c * d1 d2 -> e # f1 f2 * g

項目の予測アンケートを実施:

# a
  * b1 b2
    -> c
  * d1 d2
    -> e
# f1 f2
  * g

#、*->のシンボルといえる。a,b1等ています。

以来、瞬間かけrpnを評価する手法の表現を、現在の私の解決は以下の通りです。まだけを許可するといったように単一の文字トークンを各シンボルが容易にできま換表現に最初に故表記(b=b1b2;d=d1d2;f=f1f2)、構文解析で下からもアクセスできます。

a b c>-d e->*#f g*#

しかし、統合テキストトークンと思うがう問題を含んでいます。私のアイデアをマーカーのトークン(M)、故次のように記述されています。

a M b2b1M c->-M d2d1M e>*#f1f2M g*#

もparseableうのは問題ない。

とはいえ:

  1. は誰でも経験のようになるように言うことができるのではない実行可能な解決を聞かせてください。
  2. がより良い手法の構文解析表現れarityオペレーター?
  3. でもでもです。

します。ありんこの例では、非常に似てLispの接頭辞の記法およびその道のりに追加ブラケットがまったく泳げないんだけど---。しかし、ソーステキストを含んではなブラケットや人工のものをお使いいただくことによってい可能性infix mixinsのように#a*b->[る場合value1=value2]c>d.

させます。

編集:そう思っていると言っても過言ではあり源postfix表記とが可変数の引数になります。

役に立ちましたか?

解決

僕が完全に理解する質問ですが、そうしたいものは文法定義のパーサジェネレータ。いることをお勧めしたく AOETOOLS, いかかで定義する文法のいずれのオリジナルの書式は、RPN.

編集: 後行使自己批判し、努力質問に答えているかどうかわかりました。 実際には、言語の文法は明らか。しかし、となっているように思いることのメリットの接頭辞/postfix表記(する必要のあるもの括弧内のも優先順位を認識するパーサ)のとき 知件数の引数 毎時間ごとの出会いオペレーターでお知らどのように多くの要素が読めのための接頭辞の表記は、ポップスタックから(postfix表記).大藤まbeleiveを有する事業者を持つことができる可変数の引数をこのprefix/postfixの表記ではなく構文解析が買曖昧なものです。以下の表現の例:

# a * b c d

るのは、標準的なものです。

  1. (a*b、c、d)

  2. (a*(b,c)d)

  3. (a*b、c、d)

ることを知らず、事業者のことは不可能であるので教えてくれます。の定義ができるかgreedynessの事業者など*はgreedierは#で待すべての引数になります。この目的の接頭辞の表記ですが、だけでなく第二次改変体から上記の三;なadditinonal統語です。

今のことについても話したいと思うので、どのように変動するというよさこのプログラミング言語で知ってい支援 事業者 とが可変数の引数は、 機能-手続き.

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top