この例で、いくつかの規則が示されている。全ての数値は読み込まれた時点で出力に追加される。式を読み終わったら、スタックから全演算子をポップし、出力に追加していく。いったような(すなわち、前置で括弧と引数セパレータによる引数リストが引き続いている)「関数」の扱いも含まれている)。トークンを1つ読み込む。トークンが数値の場合、それを出力キューに追加する。トークンが関数の場合、それをスタックにプッシュする。トークンが関数の引数セパレータ(カンマなど)の場合スタックのトップにあるトークンが左括弧となるまで、スタックから演算子をポップして出力キューに追加する動作を繰り返す。左括弧が出てこない場合、引数セパレータの位置がおかしいか、左右の括弧が不一致となっている(エラー)。低い場合、以下を繰り返す。スタックからポップし、出力キューに追加する。スタックにプッシュする。トークンが左括弧の場合、スタックにプッシュする。トークンが右括弧の場合スタックのトップにあるトークンが左括弧になるまで、スタックからポップした演算子を出力キューに追加する動作を繰り返す。左括弧をスタックからポップするが、出力には追加せずに捨てる。スタックのトップにあるトークンが関数トークンなら、それをポップして出力キューに追加する。左括弧がスタック上に見つからなかった場合、左右の括弧の不一致がある(エラー)。読み込むべきトークンがない場合スタック上に演算子トークンがある間、以下を繰り返す。スタックのトップにある演算子トークンが括弧なら、括弧の不一致がある(エラー)。演算子をスタックからポップして出力キューに追加する。それぞれ一度スタックにプッシュされ後にポップされるという点である。O(n)、つまり入力の大きさに比例する。操車場アルゴリズムは前置記法(ポーランド記法)の生成にも使える。その場合は、入力トークン列を最後尾から先頭に向かって処理し、出力キューを反転させ(つまり、出力キューは出力スタックとなる)、右括弧と左括弧の扱いを反転させればよい(つまり、左括弧については右括弧を見つけるまでスタックをポップし続ける)。+インタプリタでこれを使う場合、この出力を字句解析して中間ファイルに書き込み、それをインタプリタが解釈実行する。中置記法からRPNへの変換は、数式を簡単に単純化するのにも使える。そのためにはRPNの式を評価するようにし、値がヌルの変数が出てきたり、値がヌルの演算子が出てきたら、そのパラメータと共に出力に書き込めばよい(これは単純化であり、パラメータが別の演算子だった場合には問題が生じる)。ヌルのパラメータがない演算子の場合は、単にその値を出力に書き込めばよい。この技法は明らかにあらゆる単純化を含んでいるわけではない。それは定数畳み込みの最適化に近い。トークンが関数なら、スタックにプッシュする。スタックのトップにある間ループする。演算子の優先順位の違いからポップするかプッシュするかを判断する。2つの演算子の優先順位が等しいなら、結合性から判断する。それをスタックにプッシュする。個の引数をとることは事前にわかっている。その値が計算結果である。ユーザ入力に値が多すぎるので、エラーとする。0;}このコードは次のような結果を出力する。日本では近年はほとんど行われなくなったが、旧来の鉄道貨物列車は、まず出発駅から拠点駅に集められ、その後は拠点駅から拠点駅の間を車輛1輛ごとに目的地別に何度か再編成されながら、目的地へ向かう、というものであった。余談になるが、考案者のダイクストラには他にも、排他制御機構の「セマフォ」(やはり昔の鉄道で一般的だった腕木式信号機に由来する)など、鉄道関係のたとえが多い。(日時は個人設定で未設定ならばUTC)。表示-継承ライセンスの下で利用可能です。追加の条件が適用される場合があります。詳細は利用規約を参照してください。Cookieに関する声明モバイルビュ。