JP6199314B2 - 演算子の優先順位のグラフィカル表現 - Google Patents

演算子の優先順位のグラフィカル表現 Download PDF

Info

Publication number
JP6199314B2
JP6199314B2 JP2014554754A JP2014554754A JP6199314B2 JP 6199314 B2 JP6199314 B2 JP 6199314B2 JP 2014554754 A JP2014554754 A JP 2014554754A JP 2014554754 A JP2014554754 A JP 2014554754A JP 6199314 B2 JP6199314 B2 JP 6199314B2
Authority
JP
Japan
Prior art keywords
source code
graphical representation
operator
computer
operators
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Expired - Fee Related
Application number
JP2014554754A
Other languages
English (en)
Other versions
JP2015510181A (ja
JP2015510181A5 (ja
Inventor
ロヴィット,アンドリュー
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Microsoft Corp
Original Assignee
Microsoft Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Microsoft Corp filed Critical Microsoft Corp
Publication of JP2015510181A publication Critical patent/JP2015510181A/ja
Publication of JP2015510181A5 publication Critical patent/JP2015510181A5/ja
Application granted granted Critical
Publication of JP6199314B2 publication Critical patent/JP6199314B2/ja
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/70Software maintenance or management
    • G06F8/75Structural analysis for program understanding

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • General Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • User Interface Of Digital Computer (AREA)
  • Stored Programmes (AREA)

Description

[0001]コンピュータープログラムは、演算子の優先順位に従って式内の演算を実行する。演算子の優先順位は、式内のいずれの演算子が他の演算子に優先するかを指定する規則の集合である。例えば、数式2+3×4は、加算演算子が乗算演算子に優先すると評価され得る場合、それによって値20を生じる(すなわち、(2+3)×4=20)。あるいは、同一の数式が、乗算演算子が加算演算子に優先すると評価される場合、それによって値24を生じる(すなわち、2+(3×4)=24)。演算子の優先順位を指定することがなければ矛盾した結果が生成される可能性がある。
[0002]演算子の優先順位は、多くの場合、コンピュータープログラム(例えば、アプリケーション、スクリプト、など)が書かれているプログラミング言語の文法により指定される。各プログラミング言語は、異なる演算子の優先順位を使用して式を評価することができる。異なる演算子の優先順位は、ユーザーが不慣れなプログラミング言語で書かれたソースコードを見たり編集したりする場合にユーザーに問題を引き起こす恐れがある。さらに、特定のプログラミング言語の文法の微妙な差異は複雑であり、それによって演算子の優先順位付けを確認することを困難とする恐れがある。
[0003]本概要は、以下の発明を実施するための形態でさらに説明される概念から選択したものを簡単化した形で紹介するために提供される。本概要は、特許請求する主題の主たる特徴または本質的特徴を同定することを意図するものでも、また特許請求する主題の範囲を限定するために使用されることを意図したものでもない。
[0004]ソースコードは、演算が実行される態様を指定する言語モデルまたは文法を有するプログラミング言語で書かれる。特に、演算子の優先順位は、プログラミング言語中で使用される他の演算子に対する演算子の優先順位を指定する。演算子の優先順位のグラフィカル表現は、演算が実行される順序をユーザーが理解することを可能とするためにソースコードと共に表示される。このことは、ソースコードの開発および保守の際に有益である。
[0005]グラフィカル表現は、複数の異なった形式で視覚的に表示され得る。グラフィカル表現の様々な表示形式は、線表現、ツリー表現、数値による順序付け、色で強調されたテキスト、色で強調された演算子、などの形を取ることができる。グラフィカル表現は、結果に影響を与えることなく任意の順序で実行され得る演算を表示することができる。グラフィカル表現の部分は、特定の文字でつぶされかつ/またはゴースト化され得る。
[0006]これらのおよび他の特徴および利点は、以下の詳細な説明を読むことおよび添付の図面を見直すことから明らかになろう。前述の一般的な説明と以下の詳細な説明は共に単に説明のためのものでありかつ特許請求される態様を制限するものではないことを理解すべきである。
[0007]演算子の優先順位のグラフィカル表現を生成しかつ表示するための第1の例示的システムを示す図である。 [0008]演算子の優先順位のグラフィカル表現を生成しかつ表示するための第2の例示的システムを示す図である。 [0009]図3A〜3Fは、演算の逐次的実行のために書式設定された演算子の優先順位のグラフィカル表現のある実施形態を示す図である。 [0010]図4A〜4Jは、演算の並列および逐次的実行のために書式設定された演算子の優先順位のグラフィカル表現のある実施形態を示す図である。 [0011]式内の演算子のみが演算子の優先順位のグラフィカル表現内に表示されている式のグラフィカル表現を示す図である。 [0012]演算子の優先順位のグラフィカル表現の部分が選択的にゴースト化されかつつぶされていることを示す図である。 [0013]ディスプレイ上の演算子の優先順位のグラフィカル表現の配置のある実施形態を示す図である。 ディスプレイ上の演算子の優先順位のグラフィカル表現の配置のある実施形態を示す図である。 ディスプレイ上の演算子の優先順位のグラフィカル表現の配置のある実施形態を示す図である。 [0014]動的に生成される演算子の優先順位のグラフィカル表現を示す図である。 [0015]表示されるソースコードの一部のグラフィカル表現を生成するための例示的方法を示す流れ図である。 [0016]動作環境を示すブロック図である。 [0017]第1の例示的コンピューティングデバイスを示すブロック図である。 [0018]第2の例示的コンピューティングデバイスを示すブロック図である。 [0019]例示的サーバーを示すブロック図である。
[0020]様々な実施形態は、ソースコードの選択された部分の演算子の優先順位のグラフィカル表現の生成および表示に関連するものである。演算子の優先順位のグラフィカル表現は、ユーザー(すなわち、開発者、プログラマーなど)がソースコードの選択された部分の実行の流れをより十分に理解することを支援するために視覚的に表示され得る。グラフィカル表現は、ソースコードと同時に同一のウインドウ内にまたは別のウインドウ内に複数の異なる形式で視覚的に表示され得る。グラフィカル表現の様々な表示形式は、線表現、ツリー表現、数値による順序付け、色で強調されたテキスト、色で強調された演算子、などの形を取ることができる。演算子の優先順位のグラフィカル表現は、演算がソースコードの実行の際に行われる順序を理解するためにユーザーがソースコードを見ることを支援する。この知識は、所期の目的に対してソースコードをデバッグし、テストし、かつ/または編集するためにユーザーにより使用され得る。
[0021]ここで、演算子の優先順位のグラフィカル表現を利用する第1の例示的システムの考察に注意を向ける。図1を参照すると、演算子の優先順位のグラフィカル表現を生成しかつ表示するための例示的システム100のブロック図が示されている。図1に示されるシステム100は、特定の接続形態において限定された数の要素を有しているが、システム100が、所与の実装に対して望まれる別の接続形態においてより多くの要素またはより少ない要素を含み得ることが理解されるであろう。
[0022]システム100は、限定されないが、モバイル装置、携帯情報端末、モバイルコンピューティングデバイス、スマートフォン、携帯電話、携帯コンピューター、サーバー、サーバーアレイまたはサーバーファーム、ウェブサーバー、ネットワークサーバー、インターネットサーバー、ワークステーション、ミニコンピューター、メインフレームコンピューター、スーパーコンピューター、ネットワーク装置、ウェブ装置、分散型計算機システム、マルチプロセッサーシステムまたはこれらの組み合わせなどの、プログラム可能な命令を実行する能力がある任意の形式の電子装置であり得る、コンピューティングデバイス102を含むことができる。
[0023]コンピューティングデバイス102は、ソースコード108を表示する能力があるソースコード・ビューワー104および編集エンジン106を含むことができる。ソースコード・ビューワー104は、ユーザー(例えば、プログラマー、開発者など)がソースコード108を見ることを可能とするソフトウェアアプリケーションであり得る。編集エンジン106は、ソースコードを見る、編集する、かつ/または生成するためにプログラマーにより使用されるソフトウェアアプリケーションであり得る。ソースコード108は、処理装置により実行される時、定められた仕事に従った方法および/または動作を処理装置に行わせる、一連のコンピュータープログラム命令であり得る。ソースコード108は、任意の適切な高級、低級、オブジェクトオリエンテッド、ビジュアル、コンパイルされた、かつ/またはインタープリットされたプログラミング言語を使用して実装され得る、ソフトウェアアプリケーション、プログラムコード、プログラム、プロシージャ、モジュール、コードセグメント、プログラムスタック、ミドルウェア、ファームウェア、メソッド、ルーチン、ウェブページ、実行可能コード、スクリプトファイル、などであり得る。
[0024]ユーザーは、演算子の優先順位をユーザーが見たいと望むソースコード108の部分を選択することができると共に、コードはソースコード・ビューワー104または編集エンジン106内で見ることができる。入力セレクター110は、演算子の優先順位に関心があるソースコードの部分をユーザーが特定することに利用され得る。入力セレクター110は、カーソル位置112および/または蛍光ペン114であり得る。カーソル位置112は、カーソルが置かれている位置であり、関心があるソースコードの一部を特定する。蛍光ペン114は、ソースコードの網掛けされた部分であり、関心のあるソースコードを特定することができる。入力セレクター110は、ユーザーが関心のあるソースコードを特定するために使用することができる任意の機構であり得ることに留意すべきである。
[0025]入力アナライザー116は、ユーザーまたはプログラムが演算子の優先順位解析のために選択したソースコードの一部を受信する。入力アナライザー116はまた、言語モデルおよびユーザーのオプションに基づき解析に必要な文全体を見つけ出すことができる。入力アナライザー116は、ソースコードの静的に選択された部分をソースコード・ビューワー104から受信する。ソースコードの静的に選択された部分は、静的なソースコードリストから特定される。ソースコードの静的に選択された部分は、カーソル位置、強調されたテキストなどにより指定され得る。入力アナライザー116は、指定されているソースコードの量が、言語モデルまたはユーザーのオプションで指定される、完全な式または文ではないことを認識することができる。この場合には、入力アナライザー116は、式または文を完全なものとするために追加のテキストまたは文字をソースコードの選択された部分に組み込むことができる。
[0026]入力アナライザー116はまた、ソースコードの動的に選択された部分を動的モジュールセレクター107から受信することができる。ソースコードの動的に選択された部分は、ユーザーはソースコードを生成し、ソースコードをテストし、かつ/またはソースコードを編集している間に、実時間で特定される。
[0027]動的モジュールセレクター107は、ソースコードのどの部分に対応する演算子の優先順位をユーザーが表示したいかを決定する。いくつかの事例では、ユーザーは、強調されたテキストによりソースコードの一部を特定することができる。別の事例では、動的モジュールセレクター107は、カーソル位置112などの入力セレクター110からソースコードの一部を決定しなければならない。例えば、カーソル位置112が、ソースコードの行の中央に置かれている場合、動的モジュールセレクター107は、完結した式が得られるようにソースコードの一部に行内のどの文字が含まれるかを決定する。
[0028]さらに、動的モジュールセレクター107は、ユーザーが演算子の優先順位解析のために選択しているソースコードの部分を推測しなければならないかもしれない。編集エンジンなどによる、文脈の実時間編集においては、ユーザーが演算子の優先順位解析のためにソースコードの一部を選択していたとしても、ユーザーは、ソースコードのタイピングまたは編集を行うことを終了していない可能性がある。選択され得るソースコードの一部は、言語モデルまたはユーザーのオプションに従った完結した式または文ではない。この状況では、動的モジュールセレクター107は、追加の文字を含めるために、ユーザーがタイピングを続け、かつ論理的コード区切りをタイプすることなどを待つべきか否かを決定するために、ユーザーの動作を推測しなければならない。
[0029]例えば、動的モジュールセレクター107の役割を示すために、ソースコードの以下の部分を考えることとする。
Figure 0006199314
[0030]行(5)において、カーソル「|」が、文字「a」の後ろ、「++」の前の行内の中央に位置している。動的モジュールセレクター107は、このカーソル位置の後ろに追加のテキストがあることを認識し、かつ完結した式が含まれるように行(5)上のテキストの残りをソースコードの選択された部分内に含めることになろう。従って、動的モジュールセレクター107は、ソースコードの選択された部分が「int f=*a++;」であると決定することになる。入力アナライザー116が、上記のコード例で指摘された、ソースコードの静的に選択された部分に追加のテキストおよび文字を捕捉するための同一の能力を有することに留意すべきである。
[0031]ソースコードの選択された部分は、選択されたコード部分の構文構造を表すデータ構造を生成するために構文解析部118により利用され得る。構文解析部118は、選択されたコード部分の構文構造を決定するために、ソースコードが書かれているプログラミング言語の文法などの、言語モデル122を利用する。言語モデル122または文法は、トークンの集合をプログラミング言語の構文構造に変換するために使用される規則の集合を含む。式を評価するために使用される演算子の優先順位は、文法において固有である。
[0032]構文解析部118は、選択されたコード部分の構文構造を表す構文木を生成することができる。構文木は、変数を表す葉ノードおよび式内の変数に適用される演算子を表す分岐点を含むことができる。あるいは、構文解析部118は、限定されないが、ハッシュテーブル、ベクトルなどの、選択されたコード部分の構文構造を表すための他のデータ構造を利用することもできる。
[0033]構文解析部118は、グラフィカル表現に使用される演算子の優先順位をカスタマイズするために使用される1つまたは複数の構文解析部オプション120を受信することができる。例えば、ユーザーは、関数名の評価がソースコードの選択された部分に対する演算子の優先順位で考慮されるべきではないことを構文解析部オプション120により指定することができる。同様に、ユーザーは、ソースコードの選択された部分が50文字未満の文字を含むコードの行を含むべきではないことを構文解析部オプション120により指定することができる。その他のユーザー選択もまた、構文解析部オプション120により指定され得る。
[0034]グラフィカル表現モジュール124は、演算子の優先順位のグラフィカル表現を生成するために構文木を利用する。グラフィカル表現モジュール124は、ユーザーが望むグラフィカル表現の形式を指定するグラフィカル表現オプション126を受信することができる。例えば、グラフィカル表現オプション126は、線表現形式、ツリー表現形式、数値による順序付け形式、色付けテキスト形式、フォント型テキスト形式、などを含むことができる。さらに、グラフィカル表現オプション126は、優先順位を意味するために使用される形式の態様を指定することができる。例えば、線表現形式は、各演算上に階層的順序で置かれる線分を有する。演算の優先順位は、最下位線分が最初に演算されることを意味し、かつ最下位線分の上の各線分が最下行の上に示された順序で実行される、下から上への順序で各線分を配置することにより指定され得る。同様に、上から下への順序では、最上部の線分が、最初に演算されることを意味すると指定され得て、かつ最上部の線分の下の各線分が、最上部の線分の下に示される順序で実行される。
[0035]グラフィックエンジン128は、ユーザーのためにディスプレイ130上にグラフィカル表現を表示するために利用され得る。グラフィックエンジン128は、ディスプレイ130上のウインドウ内へ、演算子の優先順位のグラフィカル表現などのオブジェクトの描画を管理するソフトウェアアプリケーションであり得る。ディスプレイ130は、コンピューティングデバイス102のスクリーンまたは視覚的ディスプレイ装置である。
[0036]図2は、演算子の優先順位のグラフィカル表現を生成しかつ表示するための第2の例示的システム200のブロック図を示す。図2に示されるシステム200は、特定の接続形態において限定された数の要素を有しているが、システム200が、所与の実装に対して望まれる別の接続形態においてより多くの要素またはより少ない要素を含み得ることが理解されるであろう。
[0037]システム200では、サーバー202は、サーバー202が提供するソースコード・ビューワー104によりユーザーが見ることができる大量のソースコードを格納するために利用され得る。ユーザーは、サーバーのソースコード・ビューワー104によりソースコードを見るためにユーザーのコンピューティングデバイス201からウェブブラウザ206を利用することができる。ソースコードがサーバー202内に格納されている場合、構文解析部118は、サーバーの構文木レポジトリ210内に格納されているソースコードの構文木または他の構文表現を生成するために使用され得る。ユーザーが、ソースコードの一部に対する演算子の優先順位を見たいと望む場合、ウェブブラウザ206は、サーバー202から対応する構文木を要求することができる。サーバー202は、グラフィカル表現モジュール124がユーザーのグラフィカル表現オプション126に従ってディスプレイ130上に演算子の優先順位を生成するために使用することができる、構文木をユーザーのコンピューティングデバイス102に提供することができる。
[0038]図2を参照すると、システム200は、ネットワーク204を介してサーバー202に通信可能に結合されているコンピューティングデバイス201を含むことができる。
コンピューティングデバイス201およびサーバー202は、限定することなく、モバイル装置、携帯情報端末、モバイルコンピューティングデバイス、スマートフォン、携帯電話、携帯コンピューター、サーバー、サーバーアレイまたはサーバーファーム、ウェブサーバー、ネットワークサーバー、インターネットサーバー、ワークステーション、ミニコンピューター、メインフレームコンピューター、スーパーコンピューター、ネットワーク装置、ウェブ装置、分散型計算機システム、マルチプロセッサーシステム、またはこれらの組み合わせなどの、プログラム可能な命令を実行する能力のある任意の形式の電子装置であり得る。ネットワーク204は、コンピューティングデバイス201とサーバー202間の電子的通信を容易にする任意の形式の通信基盤であり得て、かつ図10に示される通信フレームワークに関連して以下にさらに詳細に説明される。
[0039]コンピューティングデバイス201は、ウェブブラウザ206、グラフィカル表現モジュール124、グラフィカル表現オプション126、グラフィックエンジン128およびディスプレイを含むことができる。ウェブブラウザ206は、サーバー202上でソースコード・ビューワー104により提供されるソースコードを見るために使用され得る。ユーザーは、ウェブブラウザ206を通じてソースコードの特定の部分に対する演算子の優先順位を要求することができる。ソースコードの構文木または構文表現は、サーバー202から得られ得る。グラフィカル表現モジュール124は、構文木を受信し、かつグラフィックエンジン128によりディスプレイ130上に表示される対応した演算子の優先順位を生成することができる。
[0040]サーバー202は、ソースコード・ビューワー104、入力アナライザー116、構文解析部118、構文解析部オプション120、言語モデル122、ソースコード・レポジトリ208、および構文木レポジトリ210を含むことができる。ソースコードが、ソースコード・レポジトリ208に格納するためにサーバー202にアップロードされる毎に、構文解析部118は、ソースコードに対する構文木を生成するために起動され得る。構文解析部オプション120は、ソースの任意の部分が修正されている場合、あるいはソースコードが格納され、見られ、または編集される所定の時点で、構文解析部118が構文木を再生成することができることを指定することができる。本実施形態は、この態様に限定されない。
[0041]構文木は、構文木レポジトリ210に格納され得る。ソースコード・ビューワー104は、構文木レポジトリ210から引き出され得るソースコードの特定の部分に関連した構文木に対する要求を受信することができる。入力アナライザー116、構文解析部118、構文解析部オプション120および言語モデル122は、図1に関連して上記に説明した同様の態様で動作する。
[0042]図1および図2に示されたシステム100、200は、特定の構成内に限定された数の要素を有するが、システム100、200が、別の構成においてより多くの要素またはより少ない要素を含むことができることが理解されるべきである。例えば、動的モジュールセレクター107、入力アナライザー116、構文解析部118、および/またはグラフィカル表現モジュール124は、ソースコード・ビューワー104、編集エンジン106、統合開発環境、オペレーティングシステム、クラウドサービス、コンパイラー、クラウドサービス用キャッシュ、電子メールクライアント、オペレーティングシステム、および/またはこれらの組み合わせに組み込まれ得る。さらに、ユーザーは、図2に示されるサーバー202上で提供されるソースコードにアクセスするために、コンピューティングデバイス102上で、ウェブエディター、ウェブサービスクライアント、などを利用することができる。
[0043]他の実施形態では、図2に示されるシステム200の要素は、別の構成で配置され得る。例えば、サーバー202は、ウェブブラウザ206またはクライアント装置102上に存在する他のアプリケーションを通じてアクセスされ得る編集エンジン106を提供することができる。別の例では、ソースコードは、サーバー202に格納され、かつコンピューティングデバイス201上に存在するソースコード・ビューワー、編集エンジン、ウェブエディターなどを通じて見ることができる。コンピューティングデバイスからソースコードにアクセスする編集エンジンの場合には、動的モジュールセレクター107は、コンピューティングデバイス201またはサーバー202いずれかに存在し得る。他の実施形態では、ソースコードは、コンピューティングデバイス201内に格納され得て、かつソースコードに関連付けられた構文木は、サーバー202上に格納され得る。コンピューティングデバイス201は、ソースコードの開発および保守の際の様々な時点において、サーバー上の構文解析部が関連した構文木を生成するために、ソースコードをサーバー202に送信することができる。本実施形態において、サーバー202は、必要とされる場合に、コンピューティングデバイス201の使用のために構文木を生成し、格納し、かつ提供するように使用される。
[0044]様々な実施形態では、本明細書に記載されたシステム100、200は、複数の要素、プログラム、プロシージャ、モジュールを有するコンピューター実装のシステムを含み得る。本明細書で使用されるように、これらの用語は、ハードウェア、ハードウェアとソフトウェアの組み合わせ、またはソフトウェアいずれかを含む、コンピューター関連のエンティティを指すことを意図している。例えば、要素は、プロセッサー、ハードディスクドライブ、(光および/または磁気記憶媒体の)複数の記憶装置ドライブ上で実行されるプロセス、オブジェクト、実行可能ファイル、実行スレッド、プログラム、および/またはコンピューターとして実装され得る。実例として、コンピューティングデバイス上で実行されるアプリケーションとコンピューティングデバイスは共に、要素であり得る。1つまたは複数の要素は、プロセスおよび/または実行スレッド内に存在し、かつ要素は、所与の実装で望まれる場合、1台のコンピューター上に局在される、かつ/または2つ以上のコンピューター間に分散され得る。本実施形態は、この態様に限定されない。
[0045]システム100、200の様々な要素は、様々な線または矢印によって示される様々な形式の通信媒体を介して通信可能に結合され得る。本要素は、互いの間で動作を調整することができる。調整は、一方向または双方向の情報交換を必要とし得る。例えば、本要素は、通信媒体を介して伝達される信号の形で情報を伝達することができる。情報は、様々な信号線に割り当てられた信号として実装され得る。このような割り当てにおいて、各メッセージは、信号である。しかしながら、別の実施形態では、代替としてデータメッセージを用いることができる。このようなデータメッセージは、様々な接続で送信され得る。例示的接続は、パラレルインターフェイス、シリアルインターフェイス、およびバスインターフェイスを含む。
[0046]ここで、グラフィカル表現の様々な実施形態の別の説明に注意を向ける。図3Aを参照すると、Cプログラミング言語で書かれた、A||B+C||Dと記載している式300を含む、ソースコードのある行が示されている。この式には、4つの変数、すなわちA、B、CおよびDがある。この式には、2つの演算子、すなわち算術加算演算子「+」および論理OR演算子「||」がある。
[0047]図3Bは、式300に対応した構文木302の例示的表示を示している。構文木302は、式300内の4つの変数を含む葉ノードを含んでおり、かつ分岐点は、式300内の演算子を含んでいる。演算子の優先順位は、終端節点から開始して根ノードへと構文木302を最下部から最上部まで通過することにより構文木302内に示される。この態様では、構文木302は、式300に対する演算子の優先順位が、B+Cを最初に計算し、次いでA||(B+C)を計算し、最後にD||(A||(B+C))を計算することを示している。
[0048]この式に対する演算子の優先順位のグラフィカル表現は、図3C〜図3Fに示される任意の形式で表現され得る。例えば、図3Cを参照すると、表示ボックス304は、式300に対する演算子の優先順位を示す線表現形式を示す。線表現形式は、階層的順序で表示される一連の線分から構成される。式に最も近い、最下部の線分は、線分下側の演算が最初に実行され、この線分より上位にある線分に関連した各演算が連続して続くことを意味する。特に、線分306は、式B+Cが最初に実行されることを示し、線分308は、AとB+Cの論理OR演算(すなわち、A||(B+C))が2番目に実行され、かつ線分310は、Dと式A||(B+C)の論理OR演算(すなわち、((A||(B+C))||D)が最後に実行されることを示す。
[0049]図3Dは、演算子の優先順位がまた、表示ボックス312内に描かれたツリー表現形式314内に表示され得ることを示す。ツリー表現形式314は、式内の演算に対する実行順序の階層を描いている。表示ボックス312に示されるように、演算B+Cが最初に実行され、変数Aとの論理OR演算(すなわち、A||(B+C))が続き、変数Bとの論理OR演算(すなわち、((A||(B+C))||D))が続く。
[0050]図3Eは、演算子の優先順位が、表示ボックス316内に示される数値順序形式で表示され得ることを示す。数値順序形式は、演算子が実行される順序を表す数字を各演算子上に描く。表示ボックス316に示されるように、「+」演算子の上に置かれた数字「1」で示される演算B+Cが最初に実行される。変数Aの隣の論理OR演算子「||」上に置かれた数字「2」により示される、変数Aとの論理OR演算(すなわち、A||(B+C))が2番目に実行される。変数Dの隣の論理OR演算子「||」上に数字「3」を配置することにより示される、変数Dとの論理OR演算(すなわち、((A||(B+C))||D))は、3番目に実行される。
[0051]図3Fは、異なる演算子の優先順位を描くために演算子の優先順位が異なる色のテキストまたは異なるフォントスタイルのテキストを使用して表示され得ることを示す。
例えば、赤色は、第1の演算を表し、青色は、実行されるべき第2の演算を表し、緑色は、第3の演算を表す、などと表し得る。あるいは、異なるフォントスタイルが異なる演算子の優先順位を表すために使用され得る。例えば、Times New Romanフォントは、最初の演算を示すために使用され、Lucinda Handwritingフォントは、2番目の演算を示すために使用される、などであり得る。
[0052]例えば、Arialフォントが、実行されるべき最初の演算を示すために使用され、Century Schoolbookフォントが、実行されるべき2番目の演算を示すために使用され、かつBlackadder Scriptフォントが、実行されるべき3番目の演算を示すために使用されることを仮定する。表示ボックス324内で演算子の優先順位を示すためにこれらのフォントスタイルを使用すると、326の演算B+Cは、最初に実行されることが示され、変数Aとの論理OR演算(すなわち、A||(B+C))328は、2番目に実行されることが示され、かつ変数Dとの論理OR演算(すなわち、((A||(B+C))||D))330は、変数Bと共に3番目に実行されることが示される。
[0053]異なる色が、上記に説明したフォントの代わりに式の優先順位を示すために使用され得ることに留意されるべきである。例えば、式「B+C」に対するテキストは、演算B+Cが最初に実行されることを示す赤色で表示され得る。式「A||」に対するテキストは、AとB+Cの論理OR演算が2番目に実行されることを示す青色で表示され得る。式「||D」に対するテキストは、この演算が最後に実行されることを示す緑色で表示され得る。さらに、全てのテキスト、線分、数字などの色付けは、ユーザーにより指定された特定のパターン、網掛けの色またはユーザーがグラフィカル表現オプション126内で指定した他のパターンに従うことができる。
[0054]図4A〜図4Jは、演算が並列に実行され得る、C++プログラミング言語で書かれた式を描く演算子の優先順位のグラフィカル表現の様々な実施形態を示す。図4Aは、式(PTR−>A)および(Y.V<67)に適用される論理OR演算が1であるか0であるかを決定するブール式400を示す。演算子の優先順位は、並列に実行され得て、それによって、図4C〜図4Fに示されるように、並列演算として演算子の優先順位のグラフィカル表現を描くことを可能とする。図4G〜図4Jは、同一のブール式400を示し、演算子の優先順位は、同一の演算を逐次的に実行することを表す様々なグラフィカル表現で描かれている。
[0055]図4Bは、式400に対応した構文木402を示す。構文木402は、図4Aに示される式400に対する演算子の優先順位を含む。この例では、式400に対する演算子の優先順位は、ブール式(Y.V<67)の計算が、ブール式(PTR−>A)が評価されている間に同時に実行されることを示す構文木402により示される。次いで、2つの値の論理OR演算が、計算される。
[0056]図4Cは、PTR−>AおよびY.V<67が、論理的に同時に最初に計算されて、論理OR演算が続くことを示す、式400に対する線表現形式を示す。図4Dは、式400に対するツリー表現形式を示し、また図4Eは、式400に対する数値形式を示す。図4Fは、異なるフォントスタイルを使用する演算子の優先順位を示す。しかしながら、色付きテキストもまた、演算子の優先順位を示すために図4Fに示される異なるフォントスタイルの代わりに使用され得る。例えば、赤色は、「PTR−>A」および「Y.V<67」を表示するために使用されて、これらの演算が最初に実行されることを示し得る。青色は、論理OR演算「||」を表示するために使用されて、論理OR演算が最後に実行されることを示し得る。
[0057]図4Gは、PTR−>AおよびY.V<67が表示ボックス412内に逐次的態様で計算されることを示す、式400に対する線表現形式を示す。図4Hは、式400を逐次的に実行するためのツリー表現形式を表示ボックス414内に示す。図4Iは、式400を逐次的に実行するための数値形式を表示ボックス416内に示す。図4Jは、異なるフォントスタイルを使用する演算子の優先順位を表示ボックス418内に示す。しかしながら、色付きテキストもまた、演算子の優先順位を示すために図4Jに示される異なるフォントスタイルの代わりに使用され得る。例えば、赤色は、「PTR−>A」を表示するために使用され、この演算子の優先順位が最初に実行されることを示すことができ、また緑色は、式「Y.V<67」が2番目に実行されることを示すために使用され得る。青色は、論理OR演算「||」を表示するために使用されて、論理OR演算が最後に実行されることを示し得る。
[0058]図5は、式内の演算子のみが、演算子の優先順位を表すために強調されている、ある式に対する演算子の優先順位のグラフィカル表現を示している。図3C〜図3Fおよび図4C〜図4Jに示されるグラフィカル表現では、式全体のグラフィカル表現を仮定していた。図5では、演算子のみが、表示ボックス502内にグラフィカル表現で示されるように、演算子の優先順位を示すためにグラフィカルに表示されている。図5に示されるように、式500は、IF(RET=DOSOMETHING())と記載している。この式内の演算子は、DOSOMETHING()関数呼び出しおよびIF文評価である。DOSOMETHING()関数呼び出しは、関数呼び出し504が最初に実行されることを示す色またはパターンで強調され、またIF文は、IF文506が2番目に評価されることを示す色またはパターンで強調されている。
[0059]図6は、演算子の優先順位のグラフィカル表現の一部を選択的に見せることの例示的図を示す。選択的に見せる能力は、特定の式をより綿密に、またはユーザーの好みにより見せる必要がある場合にユーザーにより利用され得る。この例示的図では、式600は、ブール式PTR−>A||(Y.V<67)である。表示ボックス602は、式600に対応した演算子の優先順位に対する線表現形式を示す。表示ボックス604は、式(Y.V<67)をゴースト化し、かつ式をたわいないグラフィック要素で置き換えることをユーザーが選択したことを示す。この例では、言葉「select」が元々の式(Y.V<67)を置き換え、文字「・」が元々の式に対する線表現上に置かれた。表示ボックス604は、式PTR−>Aが表示の対象外とされたことを示す。ユーザーは、マウスの右ボタン操作でグラフィカル表現内の式のゴースト化を始動することができ、かつマウスの左ボタン操作で式を対象外とすることを始動することができる。
[0060]図7A〜図7Cは、演算子の優先順位のグラフィカル表現がソースコードと同一のビュー内に置かれる例示的図を示す。図7Aは、9行のソースコードを有する例示的ソースコードリスト702を示す。式(E+F>B*C*D)は、ユーザーがこの式に対する演算子の優先順位を知りたいと望んでいることを示すために下線が引かれている。式(E+F>B*C*D)がまた、色付きのテキストで強調され、表示され、またはこの式を特定するために任意の他の形式の態様で表示され得ることに留意すべきである。
[0061]図7Bは、式に対する演算子の優先順位を表示するために線表現形式が選択されていることを示す。演算子の優先順位は、表示ボックス704により示されるように行4および行5内の既存のコードを上書きすることにより関心のある式の直上に表示される。表示ボックス704は、不透明、部分的に透明、または完全に透明であり得る。図7Cは、関心のある式に対する線表現形式708が選択された式の直上の空白行に挿入された(706)ことを示す。
[0062]図8は、演算子の優先順位のグラフィカル表現が、ソースコードリストを表示しているウインドウに隣接している別のウインドウ内に表示される例示的図を示す。図8に示されるように、表示800は、ソースコードのリストを表示する第1のウインドウ802、および第1のウインドウ802内に示されるソースコードの選択された部分に対する演算子の優先順位のグラフィカル表現を表示する第2のウインドウ804から成る。カーソル「│」は、行5内の文字「A」と文字「+」間に位置付けられている。行5内のソースコードが選択され、ウインドウ804内に線表現形式で演算子の優先順位として表示されている。
[0063]本実施形態についての動作はさらに、様々な例示的方法を参照して説明され得る。特に明記されない限り、代表している方法が、提示された順序で、または任意の特定の順序で実行されなければならないという必要がないことを理解されるべきである。さらに、本方法に関連して説明された様々な取り組みは、逐次または並列の様式で、または逐次および並列の動作の組み合わせで実行され得る。本方法は、所与の設計および処理能力の制約群に対して望まれる、説明された実施形態または別の実施形態の1つまたは複数のハードウェア要素および/またはソフトウェア要素を使用して実装され得る。例えば、本方法は、論理デバイス(例えば、汎用または特定目的コンピューター)による実行のための論理(例えば、コンピュータープログラム命令)として実装され得る。
[0064]図9は、演算子の優先順位を生成するための例示的方法の流れ図を示す。方法900が、本明細書に記載された1つまたは複数の実施形態により実行される動作の一部または全てを表し得ること、および本方法が、図9に説明されているものより多くの動作または少ない動作を含むことができることに留意すべきである。
[0065]図9を参照すると、ユーザーは、解析のためにソースコードの一部を選択する(ブロック902)。ソースコードは、ユーザーによる操作によりソースコード・ビューワー104、編集エンジン106、またはウェブブラウザ206を通じて静的に選択され得る。ユーザーは、ソースコードの一部を強調または特定するために、カーソル、マウスのクリック、またはキー入力などの、入力セレクター110を利用する。ソースコードは、編集エンジン106または他のソフトウェアアプリケーションを通じて動的に選択され得る。この場合、動的モジュールセレクター107は、ユーザーが実時間でソースコードを編集する場合に、ユーザーの入力動作を追跡して、ユーザーが解析することを意図するソースコードの部分を決定するために利用され得る。ユーザーは、ユーザーが解析しようと意図するソースコードの一部を特定するために入力セレクター110を利用することができる。しかしながら、動的モジュールセレクター107は、動作を完結させるためまたはより有意義な解析結果を得るために、ソースコードの選択された部分に追加の文字またはテキストを含めることができる。
[0066]複数のオプションが、演算子の優先順位のグラフィカル表現に関連して指定され得る(ブロック904)。ユーザーは、構文解析部オプション120およびグラフィカル表現オプション126を指定することができる。構文解析部オプション120は、ユーザーが見ることに興味がなく、構文解析部118が構文木を用意する場合に無視することができる、特定のソースコード文字、トークンまたは文を表示することができる。グラフィカル表現オプション126は、線表現、ツリー表現、色付きテキストなどのグラフィカル表現の形式を指定することができる。
[0067]構文解析部118は、ソースコードの選択された部分、構文解析部オプション120および言語モデル122を受信し、かつ構文木などのソースコードの選択された部分を表す構文構造を生成する(ステップ906)。1つまたは複数の実施形態において、構文解析部118は、ソースコードがサーバー202に格納される時、ソースコードが、全てまたは部分的に、あるいは構文解析部オプション120内に設定された設定に従って修正される時、などの指定された時点に構文木を生成することができる(ステップ906)。
[0068]グラフィカル表現モジュール124は、構文木およびグラフィカル表現オプション126を受信し、ソースコードの選択された部分に対する演算子の優先順位を決定し(ブロック908)、かつグラフィックエンジン128が意図した態様で演算子の優先順位を表示するために使用するグラフィック要素および/または命令を含むデータ構造を生成する(ブロック910および912)。
[0069]図10を参照して、ここで例示的動作環境940の考察に注目を向ける。動作環境940は、例示的なものであり、かつ実施形態の機能に関して何らかの限定を提案することを意図するものではないことに留意すべきである。実施形態は、通信フレームワーク944を介して1台または複数台のサーバー(複数可)946と通信する1台または複数台のクライアント(複数可)942を含む動作環境940に適用され得る。動作環境940は、ネットワーク環境、分散された環境、マルチプロセッサー環境内に、あるいは遠隔またはローカルの記憶装置にアクセスする単独のコンピューティングデバイスとして構成され得る。
[0070]クライアント942は、ハードウェア装置、ソフトウェアモジュールとして、またはこれらの組み合わせとして具現化され得る。このようなハードウェア装置の例は、コンピューター(例えば、サーバー、パソコン、ラップトップ、など)、携帯電話、携帯情報端末、または任意の形式のコンピューティングデバイスなどを含み得るが、限定されない。クライアント942はまた、単一の実行パス、複数の並列実行パス(例えば、スレッド、プロセスなど)、または任意の他の態様で実行される命令を有するソフトウェアモジュールとして具現化され得る。
[0071]サーバー946は、ハードウェア装置、ソフトウェアモジュールとして、またはこれらの組み合わせとして具現化され得る。このようなハードウェア装置の例は、コンピューター(例えば、サーバー、パソコン、ラップトップ、など)、携帯電話、携帯情報端末、または任意の形式のコンピューティングデバイスなどを含むが、限定されない。サーバー946はまた、単一の実行パス、複数の並列実行パス(例えば、スレッド、プロセスなど)、または任意の他の態様で実行される命令を有するソフトウェアモジュールとして具現化され得る。
[0072]通信フレームワーク944は、クライアント942およびサーバー946間の通信を容易にする。通信フレームワーク944は、パケット交換ネットワーク(例えば、インターネットなどの公衆ネットワーク、企業イントラネットなどの私設ネットワーク、など)、回線交換ネットワーク(例えば、公衆交換電話網)、または(適切なゲートウェイおよび変換器を伴う)パケット交換ネットワークおよび回線交換ネットワークの組み合わせで使用するために適切な技術などの、任意のよく知られた技術を具現化することができる。クライアント942およびサーバー946は、1つまたは複数の通信インターフェイス、ネットワークインターフェイス、ネットワークインターフェイスカード、無線装置、無線送受信機、有線および/または無線通信媒体、物理的コネクターなどの、通信フレームワーク944と相互運用可能であるように設計されている様々な形式の標準的な通信要素を含むことができる。有線通信媒体の例は、電線、ケーブル、金属リード線、プリント回路基板、バックプレーン、スイッチファブリック、半導体材料、撚り線対電線、同軸ケーブル、光ファイバー、伝搬信号などを含むことができる。無線通信媒体の例は、音響、無線周波数スペクトラム、赤外線、および他の無線媒体を含むことができる。
[0073]各クライアント(複数可)942は、クライアント942に固有な情報を格納する1つまたは複数のクライアントデータストア(複数可)948に結合され得る。各サーバー(複数可)946は、サーバー946に固有な情報を格納する1つまたは複数のサーバーデータストア(複数可)950に結合され得る。
[0074]図11は、例示的コンピューティングデバイス102のブロック図を示す。
コンピューティングデバイス102は、1つまたは複数のプロセッサー952、ディスプレイ130、ネットワークインターフェイス954、メモリ956、およびユーザー入力インターフェイス958を有することができる。プロセッサー952は、任意の市販のプロセッサーであってもよく、かつデュアルマイクロプロセッサーおよびマルチプロセッサーアーキテクチャを含むことができる。ディスプレイ130は、モニター、スクリーン、タッチスクリーンなどの任意の視覚的ディスプレイ装置であり得る。ネットワークインターフェイス954は、コンピューティングデバイス102と他のネットワーク化された装置間の有線または無線通信を容易にする。ユーザー入力インターフェイス958は、コンピューティングデバイス102とキーボード、マウスなどの入力装置間の通信を容易にする。
[0075]メモリ956は、実行可能なプロシージャ、アプリケーション、およびデータを格納することができる任意のコンピューター読み取り可能な記憶媒体であり得る。コンピューター読み取り可能な媒体は、搬送波により送信される変調されたデータ信号などの、伝搬信号とは関係がない。コンピューター読み取り可能な媒体は、任意の形式の記憶装置(例えば、ランダムアクセスメモリ、リードオンリーメモリなど)、磁気記憶装置、揮発性記憶装置、不揮発性記憶装置、光記憶装置、DVD、CD、フロッピー(登録商標)ディスクドライブなどであり得る。メモリ956はまた、1つまたは複数の外部記憶装置、または遠隔に位置する記憶装置を含むことができる。メモリ956は、以下の命令およびデータを含むことができる。
・オペレーティングシステム960
・ソースコード・ビューワー104
・編集エンジン106
・動的モジュールセレクター107
・入力アナライザー116
・構文解析部118
・グラフィカル表現モジュール124
・構文解析部オプション120
・言語モデル122
・グラフィカル表現オプション126
・グラフィックエンジン128
・様々な他のアプリケーションおよびデータ962
[0076]図12は、例示的コンピューティングデバイス201のブロック図を示し、また図13は、例示的サーバー202を示す。コンピューティングデバイス201は、1つまたは複数のプロセッサーまたは処理装置964、ディスプレイ130、ネットワークインターフェイス966、メモリ968、およびユーザー入力インターフェイス970を有し得る。プロセッサー964は、任意の市販のプロセッサーであってもよく、かつデュアルマイクロプロセッサーおよびマルチプロセッサーアーキテクチャを含むことができる。ディスプレイ130は、モニター、スクリーン、タッチスクリーンなどの任意の視覚的ディスプレイ装置であり得る。ネットワークインターフェイス966は、コンピューティングデバイス201および他のネットワーク化された装置との有線または無線通信を容易にする。ユーザー入力インターフェイス970は、コンピューティングデバイス201とキーボード、マウスなどの入力装置間の通信を容易にする。
[0077]メモリ968は、実行可能なプロシージャ、アプリケーション、およびデータを格納することができる任意のコンピューター読み取り可能な記憶媒体であり得る。コンピューター読み取り可能な媒体は、搬送波により送信される変調されたデータ信号などの、伝搬信号とは関係がない。コンピューター読み取り可能な媒体は、任意の形式の記憶装置(例えば、ランダムアクセスメモリ、リードオンリーメモリなど)、磁気記憶装置、揮発性記憶装置、不揮発性記憶装置、光記憶装置、DVD、CD、フロッピー(登録商標)ディスクドライブなどであり得る。メモリ968はまた、1つまたは複数の外部記憶装置、または遠隔に位置する記憶装置を含むことができる。メモリ968は、以下の命令およびデータを含むことができる。
・オペレーティングシステム972
・ウェブブラウザ206
・編集エンジン106
・グラフィカル表現モジュール124
・グラフィカル表現オプション126
・グラフィックエンジン128
・様々な他のアプリケーションおよびデータ974
[0078]サーバー202は、1つまたは複数のプロセッサーまたは処理装置976、ディスプレイ130、ネットワークインターフェイス978、メモリ980、およびユーザー入力インターフェイス982を有し得る。プロセッサー976は、任意の市販のプロセッサーであってもよく、かつデュアルマイクロプロセッサーおよびマルチプロセッサーアーキテクチャを含むことができる。ディスプレイ130は、モニター、スクリーン、タッチスクリーンなどの任意の視覚的ディスプレイ装置であり得る。ネットワークインターフェイス978は、サーバー202と他のネットワーク化された装置間の有線または無線通信を容易にする。ユーザー入力インターフェイス982は、サーバー202とキーボード、マウスなどの入力装置間の通信を容易にする。
[0079]メモリ980は、実行可能なプロシージャ、アプリケーション、およびデータを格納することができる任意のコンピューター読み取り可能な記憶媒体であり得る。コンピューター読み取り可能な媒体は、搬送波により送信される変調されたデータ信号などの、伝搬信号とは関係がない。コンピューター読み取り可能な媒体は、任意の形式の記憶装置(例えば、ランダムアクセスメモリ、リードオンリーメモリなど)、磁気記憶装置、揮発性記憶装置、不揮発性記憶装置、光記憶装置、DVD、CD、フロッピー(登録商標)ディスクドライブなどであり得る。メモリ980はまた、1つまたは複数の外部記憶装置、または遠隔に位置する記憶装置を含むことができる。メモリ980は、以下の命令およびデータを含むことができる。
・オペレーティングシステム984
・ソースコード・ビューワー104
・入力アナライザー116
・構文解析部118
・構文解析部オプション120
・言語モデル122
・ソースコード・レポジトリ208
・構文木レポジトリ210
・様々な他のアプリケーションおよびデータ986
[0080]主題が、構造的特徴および/または方法論的行為に特有な言語で説明されてきたが、添付の特許請求の範囲内に定義された主題が、上記に説明された特定の特徴または行為に限定される必要がないことが理解されるべきである。むしろ、上記に説明された特定の特徴および行為は、特許請求の範囲を実施する形態の例として開示されている。
[0081]様々な実施形態は、ハードウェア要素、ソフトウェア要素、または両者の組み合わせを使用して実装され得る。ハードウェア要素の例は、装置、構成要素、プロセッサー、マイクロプロセッサー、回路、回路素子、集積回路、特定用途向け集積回路、プログラム可能論理デバイス、デジタル・シグナル・プロセッサー、フィールド・プログラマブル・ゲートアレイ、メモリ装置、論理ゲートなどを含むことができる。ソフトウェア要素の例は、ソフトウェア構成要素、プログラム、アプリケーション、コンピュータープログラム、アプリケーションプログラム、システムプログラム、機械語プログラム、オペレーティングシステムソフトウェア、ミドルウェア、ファームウェア、ソフトウェアモジュール、ルーチン、サブルーチン、関数、メソッド、プロシージャ、ソフトウェアインターフェイス、アプリケーションプログラムインターフェイス、命令セット、コンピューティングコード、コードセグメント、およびそれらの任意の組み合わせを含むことができる。実施形態が、ハードウェア要素および/またはソフトウェア要素を使用して実装されるか否かを決定することは、所与の実装に対して望まれる、所望の計算速度、電力レベル、帯域幅、演算時間、負荷バランス、メモリ資源、データバス速度および他の設計または処理能力の制約などの任意の数の要因に応じて変化する可能性がある。
[0082]いくつかの実施形態は、命令またはロジックを格納するための記憶媒体を含むことができる。記憶媒体の例は、揮発性メモリまたは不揮発性メモリ、可換型または非可換型メモリ、消去可能または非消去可能メモリ、書き込み可能または書き換え可能なメモリなどを含む、電子データを格納する能力のある1つまたは複数の形式のコンピューター読み込み可能な記憶媒体を含むことができる。ロジックの例は、プログラム、プロシージャ、モジュール、アプリケーション、コードセグメント、プログラムスタック、ミドルウェア、ファームウェア、メソッド、ルーチンなどの、様々なソフトウェア要素を含むことができる。ある実施形態では、例えば、コンピューター読み取り可能な記憶媒体は、プロセッサーにより実行される場合、記載された実施形態に従ってメソッドおよび/または動作をプロセッサーに実行させる、実行可能なコンピュータープログラム命令を格納することができる。実行可能なコンピュータープログラム命令は、特定の機能をコンピューターに実行させることを指示するための、事前定義のコンピューター言語、態様または構文に従って実装され得る。命令は、任意の適切な高級、低級、オブジェクト指向、ビジュアルな、コンパイルされたおよび/またはインタープリットされたプログラミング言語を使用して実装され得る。

Claims (22)

  1. コンピューターが実行する方法であって、
    コンピュータープログラムのソースコードソースコードエディターにおいて見せるステップと、
    見せた前記ソースコードから、ソースコードの1つまたは複数の行を含む、前記ソースコードの部分を選択するステップと、
    記ソースコードに関連した言語モデルに基づき、演算子の優先順位を決定するステップであって、演算子の前記優先順位は、ソースコードの選択した前記部分のある演算子が、ソースコードの選択した前記部分の他の演算子に対して、ソースコードの選択した前記部分が実行されたときにどのように実行されるかの優先順位を表す、ステップと、
    演算子の前記優先順位を示すグラフィカル表現を提供するステップと、
    前記グラフィカル表現に従う演算子の前記優先順位を、ソースコードの選択した前記部分とともにインラインで表示するステップと
    を含む、コンピューターが実行する方法。
  2. 請求項1に記載のコンピューターが実行する方法であって、
    演算子の前記優先順位を線表現形式で表示するためのグラフィカル表現を指定するステップ
    をさらに含むコンピューターが実行する方法。
  3. 請求項1に記載のコンピューターが実行する方法であって、
    演算子の前記優先順位をツリー表現形式で表示するためのグラフィカル表現を指定するステップ
    をさらに含むコンピューターが実行する方法。
  4. 請求項1に記載のコンピューターが実行する方法であって、
    演算子の前記優先順位を色付きテキスト表現形式で表示するためのグラフィカル表現を指定するステップ
    をさらに含むコンピューターが実行する方法。
  5. 請求項1に記載のコンピューターが実行する方法であって、
    演算子の前記優先順位を数値による順序表現形式で表示するためのグラフィカル表現を指定するステップ
    をさらに含むコンピューターが実行する方法。
  6. 請求項1に記載のコンピューターが実行する方法であって、
    演算子の前記優先順位を並列表現形式で表示するためのグラフィカル表現を指定するステップ
    をさらに含むコンピューターが実行する方法。
  7. 請求項1に記載のコンピューターが実行する方法であって、選択する前記ステップは、
    ソースコードの選択した記部分を入力セレクターの使用を介して指定するステップ
    をさらに含む、コンピューターが実行する方法。
  8. 請求項1に記載のコンピューターが実行する方法であって、
    演算子の前記優先順位を、ソースコードの選択した前記部分が表示される視覚的ディスプレイ・ウィンドウと同じ視覚的ディスプレイ・ウィンドウ内に表示するためのグラフィカル表現を指定するステップ
    をさらに含むコンピューターが実行する方法。
  9. 請求項1に記載のコンピューターが実行する方法であって、
    演算子の前記優先順位を、ソースコードの選択した記部分が表示されるところとは異なる視覚的ディスプレイ・ウィンドウ内に表示するためのグラフィカル表現を指定するステップ
    をさらに含むコンピューターが実行する方法。
  10. 請求項1から9のうちの何れか一項に記載のコンピューターが実行する方法であって、
    演算子の前記優先順位の前記グラフィカル表現の部分が、つぶされ視覚的に表示されないようにするステップ
    さらに含む、コンピューターが実行する方法。
  11. 請求項1から9のうちの何れか一項に記載のコンピューターが実行する方法であって、
    ソースコードの選択した前記部分のうちの部分が、つぶされ視覚的に表示されないようにするステップ
    さらに含む、コンピューターが実行する方法。
  12. 少なくとも1つのプロセッサーとメモリとを含むデバイスであって、前記少なくとも1つのプロセッサーは、
    ソースコードをソースコードエディターにおいて見せ、
    見せた前記ソースコードの部分を選択し、
    ソースコードの選択した前記部分についての演算子の優先順位を示すグラフィカル表現を生成し、演算子の前記優先順位はソースコードの選択した前記部分のある演算子が、ソースコードの選択した前記部分の他の演算子に対して、ソースコードの選択した前記部分が実行されたときにどのように実行されるかの優先順位を表し、演算子の前記優先順位は前記ソースコードに関連した言語モデルに基づき決定され、
    演算子の前記優先順位の前記グラフィカル表現を、ソースコードの選択した前記部分の視覚的ディスプレイとともにインラインで表示する
    ように構成された、デバイス。
  13. 請求項12に記載のデバイスであって、前記少なくとも1つのプロセッサーは、
    演算子の前記優先順位の前記グラフィカル表現を、視覚的に表示される前記ソースコードの選択した前記部分とは別のウィンドウにおいて表示する
    ようにさらに構成された、デバイス。
  14. 請求項12に記載のデバイスであって、前記少なくとも1つのプロセッサーは、
    選択的に、演算子の前記優先順位の前記グラフィカル表現の部分を、ゴースト化されたグラフィック要素と置き換えることを可能にする
    ようにさらに構成された、デバイス。
  15. 請求項12から14のうちの何れか一項に記載のデバイスであって、前記少なくとも1つのプロセッサーは、
    選択的に、演算子の前記優先順位の前記グラフィカル表現の部分が、つぶされ視覚的に表示されないようにすることを可能にする
    ようにさらに構成された、デバイス。
  16. 請求項12から14のうちの何れか一項に記載のデバイスであって、前記少なくとも1つのプロセッサーは、
    選択的に、ソースコードの選択した前記部分のうちの部分が、つぶされ視覚的に表示されないようにすることを可能にする
    ようにさらに構成された、デバイス。
  17. 少なくとも1つのコンピューティングデバイスを含むシステムであって、前記少なくとも1つのコンピューティングデバイスは少なくとも1つの処理装置とメモリとを含み、前記少なくとも1つの処理装置は、
    ソースコードをソースコードエディターにおいて見せ、
    見せた前記ソースコードの部分を選択し、
    見せた前記ソースコードの選択した前記部分に関連した構文木を取得し、
    見せた前記ソースコードの選択した前記部分についての演算子の優先順位を示すグラフィカル表現を、前記構文木から生成し、演算子の前記優先順位は、見せた前記ソースコードの選択した前記部分のある演算子が、見せた前記ソースコードの選択した前記部分の他の演算子に対して、見せた前記ソースコードの選択した前記部分が実行されたときにどのように実行されるかの優先順位を表し、演算子の前記優先順位は前記ソースコードに関連した言語モデルに基づき決定され、
    前記グラフィカル表現に従う演算子の前記優先順位を表示し、
    演算子の前記優先順位の前記グラフィカル表現を見せた前記ソースコードの選択した前記部分とともにインラインで表示する
    ように構成された、システム。
  18. 請求項17に記載のシステムであって、前記少なくとも1つの処理装置は、前記ソースコードを、ソースコード・ビューワーにおいて、ウェブブラウザを介して見せるようにさらに構成された、システム。
  19. 請求項17に記載のシステムであって、前記少なくとも1つの処理装置は、見せた前記ソースコードの選択した前記部分に関連した前記構文木を、遠隔のソースから取得するようにさらに構成された、システム。
  20. 請求項17に記載のシステムであって、演算子の前記優先順位の前記グラフィカル表現は、線表現形式と、ツリー表現形式と、色付きテキスト表現形式と、数値による順序表現形式と、並列表現形式とのうちの少なくとも1つを含む、システム。
  21. 請求項17から20のうちの何れか一項に記載のシステムであって、前記少なくとも1つの処理装置は、
    選択的に、演算子の前記優先順位の前記グラフィカル表現の部分が、つぶされ視覚的に表示されないようにすることを可能にする
    ようにさらに構成された、システム。
  22. 請求項17から20のうちの何れか一項に記載のシステムであって、前記少なくとも1つの処理装置は、
    選択的に、ソースコードの選択した前記部分のうちの部分が、つぶされ視覚的に表示されないようにすることを可能にする
    ようにさらに構成された、システム。
JP2014554754A 2012-01-25 2013-01-21 演算子の優先順位のグラフィカル表現 Expired - Fee Related JP6199314B2 (ja)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US13/357,623 US20130191809A1 (en) 2012-01-25 2012-01-25 Graphical representation of an order of operations
US13/357,623 2012-01-25
PCT/US2013/022351 WO2013112388A1 (en) 2012-01-25 2013-01-21 Graphical representation of an order of operations

Publications (3)

Publication Number Publication Date
JP2015510181A JP2015510181A (ja) 2015-04-02
JP2015510181A5 JP2015510181A5 (ja) 2016-03-10
JP6199314B2 true JP6199314B2 (ja) 2017-09-20

Family

ID=48798312

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2014554754A Expired - Fee Related JP6199314B2 (ja) 2012-01-25 2013-01-21 演算子の優先順位のグラフィカル表現

Country Status (6)

Country Link
US (1) US20130191809A1 (ja)
EP (1) EP2807542A4 (ja)
JP (1) JP6199314B2 (ja)
KR (1) KR20140116438A (ja)
CN (1) CN104081347A (ja)
WO (1) WO2013112388A1 (ja)

Families Citing this family (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9395955B2 (en) * 2013-03-18 2016-07-19 Jayarama Marks Programming system and method
US9442968B2 (en) * 2014-03-31 2016-09-13 Sap Se Evaluation of variant configuration using in-memory technology
US9971572B2 (en) 2015-10-30 2018-05-15 International Business Machines Corporation GUI-driven symbol management and code generator
WO2017165712A1 (en) * 2016-03-23 2017-09-28 FogHorn Systems, Inc. Composition of pattern-driven reactions in real-time dataflow programming
CN108134746B (zh) * 2017-12-19 2021-11-19 深圳交控科技有限公司 轨道交通数据的处理方法及装置
CN110955810A (zh) * 2019-11-29 2020-04-03 国网福建省电力有限公司 一种基于安全隔离边界的智能变电站二次安措图形表示方法

Family Cites Families (22)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH04337843A (ja) * 1991-05-15 1992-11-25 Hitachi Ltd プログラム動作表示方法
US5410648A (en) * 1991-08-30 1995-04-25 International Business Machines Corporation Debugging system wherein multiple code views are simultaneously managed
US5826256A (en) * 1991-10-22 1998-10-20 Lucent Technologies Inc. Apparatus and methods for source code discovery
US5339433A (en) * 1992-11-19 1994-08-16 Borland International, Inc. Symbol browsing in an object-oriented development system
JPH06231081A (ja) * 1993-01-29 1994-08-19 Sharp Corp 数式表示方式
US6216143B1 (en) * 1994-12-05 2001-04-10 International Business Machines Corporation Apparatus and method for generating animated color coded software traces
US5581755A (en) * 1995-01-31 1996-12-03 Unisys Corporation Method for maintaining a history of system data and processes for an enterprise
US6275830B1 (en) * 1998-03-18 2001-08-14 Oracle Corporation Compile time variable size paging of constant pools
US7873872B1 (en) * 2001-07-10 2011-01-18 Versata Development Group, Inc. System and method for remotely debugging application programs
US7316011B1 (en) * 2002-10-10 2008-01-01 Microsoft Corporation Memory reduction for object-oriented compilers
CA2428284A1 (en) * 2003-05-07 2004-11-07 Ibm Canada Limited - Ibm Canada Limitee A method for minimizing spill in code scheduled by a list scheduler
US20060009962A1 (en) * 2004-07-09 2006-01-12 Microsoft Corporation Code conversion using parse trees
US7506320B2 (en) * 2004-09-09 2009-03-17 International Business Machines Corporation Generating sequence diagrams using call trees
US7814427B2 (en) * 2005-01-05 2010-10-12 Microsoft Corporation Object model tree diagram
JP2006195827A (ja) * 2005-01-14 2006-07-27 Toshiba Tec Corp アプリケーション開発ツール
US7984371B2 (en) * 2005-02-18 2011-07-19 Andrew Joseph Zdenek Method and system for the graphical modeling of data and calculations of a spreadsheet
KR101279179B1 (ko) * 2006-03-30 2013-06-26 아토스텍 오이 병렬 프로그램 생성 방법
JP2009265996A (ja) * 2008-04-25 2009-11-12 Toshiba Corp 検査装置、検証方法および検証プログラム
EP2261802A1 (en) * 2009-06-10 2010-12-15 ITI Scotland Limited Automated debugging system and method
US20110010690A1 (en) * 2009-07-07 2011-01-13 Howard Robert S System and Method of Automatically Transforming Serial Streaming Programs Into Parallel Streaming Programs
US8699703B2 (en) * 2011-10-19 2014-04-15 Apple Inc. System and method for pseudo-random polymorphic tree construction
US8935673B1 (en) * 2012-11-30 2015-01-13 Cadence Design Systems, Inc. System and method for debugging computer program based on execution history

Also Published As

Publication number Publication date
WO2013112388A1 (en) 2013-08-01
JP2015510181A (ja) 2015-04-02
EP2807542A4 (en) 2016-03-30
US20130191809A1 (en) 2013-07-25
CN104081347A (zh) 2014-10-01
EP2807542A1 (en) 2014-12-03
KR20140116438A (ko) 2014-10-02

Similar Documents

Publication Publication Date Title
JP6199314B2 (ja) 演算子の優先順位のグラフィカル表現
US9021428B2 (en) Troubleshooting visuals and transient expressions in executing applications
US10592211B2 (en) Generation of application behaviors
Karrer et al. Stacksplorer: Call graph navigation helps increasing code maintenance efficiency
US8589874B2 (en) Visual interface to represent scripted behaviors
JP2015043198A (ja) 解析システム、解析方法および解析プログラム
US20200150937A1 (en) Advanced machine learning interfaces
Nova et al. Tool to support computer architecture teaching and learning
US20230195825A1 (en) Browser extension with automation testing support
CN114564199A (zh) 一种生成使用页面的方法、装置、设备及可读存储介质
Jiang et al. Log-it: Supporting Programming with Interactive, Contextual, Structured, and Visual Logs
CN103473431A (zh) 一种轻量级的在线调试php程序的方法
Ganesh MeTA studio: A cross platform, programmable IDE for computational chemist
WO2023143746A1 (en) System and method for managing artifacts related to apps
CN106469050B (zh) 一种用例生成方法、页面生成方法及装置
CN113296759A (zh) 用户界面处理方法、用户界面处理系统、设备及存储介质
JP2013235508A (ja) オブジェクト指向プログラム生成装置、その方法、プログラム
CN112000315A (zh) 一种基于算子的自定义参数面板的自动生成方法
Pulido Applying behavior driven development practices and tools to low-code technology
Rashidi et al. Software development and programming tools-a survey and recommendation for organization of small industries and industrial towns of Iran
Trivedi User interface implementation of environmental data integration system with React
Radeck et al. Assisted end user development for non-programmers: Awareness, exploration and explanation of composite web application functionality
Nazareth et al. Cask HLS: A Better Development Tool for Vitis HLS
Solino Formal models based interactive prototypes
da Silva Solino Formal Models Based Interactive Prototypes

Legal Events

Date Code Title Description
A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20160121

A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20160121

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20161228

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20170125

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20170424

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20170725

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20170823

R150 Certificate of patent or registration of utility model

Ref document number: 6199314

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

S111 Request for change of ownership or part of ownership

Free format text: JAPANESE INTERMEDIATE CODE: R313113

R350 Written notification of registration of transfer

Free format text: JAPANESE INTERMEDIATE CODE: R350

LAPS Cancellation because of no payment of annual fees