(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】
(24)【登録日】2025-02-10
(45)【発行日】2025-02-19
(54)【発明の名称】情報処理装置、検査方法、検査プログラム、およびサーバ
(51)【国際特許分類】
G06F 11/36 20060101AFI20250212BHJP
【FI】
G06F11/36 108
G06F11/36 164
(21)【出願番号】P 2020051540
(22)【出願日】2020-03-23
【審査請求日】2023-03-06
【前置審査】
(73)【特許権者】
【識別番号】000001443
【氏名又は名称】カシオ計算機株式会社
(74)【代理人】
【識別番号】110004185
【氏名又は名称】インフォート弁理士法人
(72)【発明者】
【氏名】田代 早紀
【審査官】西間木 祐紀
(56)【参考文献】
【文献】特開平08-147157(JP,A)
【文献】特開2018-037052(JP,A)
【文献】特開2019-125055(JP,A)
【文献】特開平08-016383(JP,A)
【文献】特開2019-125062(JP,A)
【文献】再公表特許第2015/019504(JP,A1)
(58)【調査した分野】(Int.Cl.,DB名)
G06F 11/36
(57)【特許請求の範囲】
【請求項1】
表示画面に表示されるプログラムを編集するための操作の入力を受け付ける受付部と、
前記プログラム内のある行から別の行に注目行を変更する注目行変更操作の入力を前記受付部が受け付けた場合、前記ある行に記述されたプログラムコードを対象として構文エラーを検査する構文検査を実行する検査部と、
を含み、
前記検査部は、
前記ある行のプログラムコードが第1の条件を満たす文字列を含む場合、前記ある行のプログラムコードより前または後に位置する所定の条件を満たす行のプログラムコードを前記ある行のプログラムコードに追加してから、前記構文検査を実行する第1制御、または、
前記ある行のプログラムコードが第2の条件を満たす文字列を含む場合、前記ある行のプログラムコードを編集してから、前記構文検査を実行する第2制御、の少なくとも何れか一方を実行する、
情報処理装置。
【請求項2】
前記検査部は、前記注目行変更操作の入力を前記受付部が受け付けた場合、前記プログラムのうちから前記ある行のプログラムコードを抽出し、抽出した前記ある行のプログラムコードを、構文エラーを検査する構文検査プログラムに処理させることで構文エラーを検査する、請求項1に記載の情報処理装置。
【請求項3】
前記受付部は、前記表示画面に表示される前記プログラム内の前記ある行に表示される前記プログラムの編集位置を示すカーソルを前記プログラム内の前記別の行に移動させる操作を、前記注目行変更操作として入力を受け付け、
前記検査部は、前記構文検査の結果、構文エラーが検出された場合、前記ある行内に前記カーソルを表示させたまま、前記構文エラーが検出されたことを示す情報および前記構文エラーが検出された行を報知する、
請求項1に記載の情報処理装置。
【請求項4】
前記受付部は、前記表示画面に表示される前記プログラム内の前記ある行に表示される前記プログラムの編集位置を示すカーソルを前記プログラム内の前記別の行に移動させる操作を、前記注目行変更操作として入力を受け付け、
前記検査部は、前記構文検査の結果、構文エラーが検出されなかった場合、前記カーソルを前記別の行に移動させる、請求項1または2に記載の情報処理装置。
【請求項5】
表示画面に表示されるプログラムを編集するための操作の入力を受け付ける受付部と、
前記プログラム内のある行から別の行に注目行を変更する注目行変更操作の入力を前記受付部が受け付けた場合、前記ある行に記述されたプログラムコードを対象として構文エラーを検査する構文検査を実行する検査部と、
を含み、前記プログラムの編集を受け付ける編集モードと、前記プログラムを実行する実行モードとを含む動作モードで動作する情報処理装置であって、
前記検査部は、
前記編集モードでの動作中に、前記注目行変更操作が前記受付部に入力された場合、前記ある行に記述されたプログラムコードを対象とする構文検査を実行し、
前記構文検査でエラーが検出された場合、前記編集モードで動作したまま、前記ある行に記述されたプログラムコードの編集を許容し、
前記ある行に記述された前記プログラムコードが編集されてから前記受付部に前記注目行変更操作が再入力された場合、前記ある行に記述された編集後の前記プログラムコードを対象とする前記構文検査を再度実行する、
情報処理装置。
【請求項6】
表示画面に表示されるプログラムを編集するための操作の入力を受け付ける受付ステップと、
前記プログラム内のある行から別の行に注目行を変更する注目行変更操作の入力を前記受付ステップで受け付けた場合、前記ある行に記述されたプログラムコードを対象として構文エラーを検査する構文検査を実行する検査ステップと、
を含み、
前記検査ステップは、前記ある行のプログラムコードが第1の条件を満たす文字列を含む場合、前記ある行のプログラムコードより前または後に位置する所定の条件を満たす行のプログラムコードを前記ある行のプログラムコードに追加、または、前記ある行のプログラムコードが第2の条件を満たす文字列を含む場合、前記ある行のプログラムコードを編集、の少なくとも何れか一方を実行してから、前記構文検査を実行する、
情報処理装置が実行する検査方法。
【請求項7】
表示画面に表示されるプログラムを編集するための操作の入力を受け付ける受付ステップと、
前記プログラム内のある行から別の行に注目行を変更する注目行変更操作の入力を前記受付ステップにおいて受け付けた場合、前記ある行に記述されたプログラムコードを対象として構文エラーを検査する構文検査を実行する検査ステップと、
を含み、前記プログラムの編集を受け付ける編集モードと、前記プログラムを実行する実行モードとを含む動作モードで動作する情報処理装置が実行する検査方法であって、
前記検査ステップは、
前記編集モードでの動作中に、前記注目行変更操作が前記受付ステップにおいて入力された場合、前記ある行に記述されたプログラムコードを対象とする構文検査を実行し、
前記構文検査でエラーが検出された場合、前記編集モードで動作したまま、前記ある行に記述されたプログラムコードの編集を許容し、
前記ある行に記述された前記プログラムコードが編集されてから前記受付ステップにおいて前記注目行変更操作が再入力された場合、前記ある行に記述された編集後の前記プログラムコードを対象とする前記構文検査を再度実行する、
検査方法。
【請求項8】
表示画面に表示されるプログラムを編集するための操作の入力を受け付ける受付ステップと、
前記プログラム内のある行から別の行に注目行を変更する注目行変更操作の入力を前記受付ステップで受け付けた場合、前記ある行に記述されたプログラムコードを対象として構文エラーを検査する構文検査を実行する検査ステップと、
を含む、処理を情報処理装置に実行させ、
前記検査ステップは、前記ある行のプログラムコードが第1の条件を満たす文字列を含む場合、前記ある行のプログラムコードより前または後に位置する所定の条件を満たす行のプログラムコードを前記ある行のプログラムコードに追加、または、前記ある行のプログラムコードが第2の条件を満たす文字列を含む場合、前記ある行のプログラムコードを編集、の少なくとも何れか一方を実行してから、前記構文検査を実行する、
検査プログラム。
【請求項9】
表示画面に表示されるプログラムを編集するための操作の入力を受け付ける受付ステップと、
前記プログラム内のある行から別の行に注目行を変更する注目行変更操作の入力を前記受付ステップにおいて受け付けた場合、前記ある行に記述されたプログラムコードを対象として構文エラーを検査する構文検査を実行する検査ステップと、
を含む処理を情報処理装置に実行させ、
前記情報処理装置に、前記プログラムの編集を受け付ける編集モードと、前記プログラムを実行する実行モードとを含む動作モードを実行させ、
前記検査ステップは、
前記編集モードでの動作中に、前記注目行変更操作が前記受付ステップにおいて入力された場合、前記ある行に記述されたプログラムコードを対象とする構文検査を実行し、
前記構文検査でエラーが検出された場合、前記編集モードで動作したまま、前記ある行に記述されたプログラムコードの編集を許容し、
前記ある行に記述された前記プログラムコードが編集されてから前記受付ステップにおいて前記注目行変更操作が再入力された場合、前記ある行に記述された編集後の前記プログラムコードを対象とする前記構文検査を再度実行する、
検査プログラム。
【請求項10】
情報処理装置と、請求項8または9に記載の検査プログラムを前記情報処理装置に配布するサーバと、を含む、システム。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、情報処理装置、検査方法、検査プログラム、およびサーバに関する。
【背景技術】
【0002】
従来、プログラムの開発を支援するために、コーディングされたプログラムの構文を検査し、構文にエラーがあれば報知する構文検査プログラムが知られている。構文検査プログラムは、例えば、プログラム言語に応じて用意されており、代表的な構文検査プログラムとしてインタプリタ、コンパイラなどがある。例えば、インタプリタは、プログラムの実行指示が入力されると、実行対象のプログラムの構文を検査する。インタプリタは、構文検査の結果、構文エラーが検出されなければ、次に実行エラーの検査を行い、実行エラーも検出されなければプログラムを実行し、実行結果を出力する。
【0003】
これに関し、プログラムの構文上の誤りを検査することに関連する技術が知られている(例えば、特許文献1)。
【先行技術文献】
【特許文献】
【0004】
【発明の概要】
【発明が解決しようとする課題】
【0005】
ところで、構文エラーを検査するタイミングとしては、必ずしも、ユーザがプログラムの実行指示を入力した場合に限られる必要はないと考えられる。しかしながら、ユーザにとって好ましいタイミングで構文の検査を実行することのできる技術はなかった。
【0006】
1つの側面では、本発明は、ユーザにとって好ましいタイミングで構文の検査を実行することを目的とする。
【課題を解決するための手段】
【0007】
本発明の一つの態様の一実施形態に係る情報処理装置は、表示画面に表示されるプログラムを編集するための操作の入力を受け付ける受付部と、前記プログラム内のある行から別の行に注目行を変更する注目行変更操作の入力を前記受付部が受け付けた場合、前記ある行に記述されたプログラムコードを対象として構文エラーを検査する構文検査を実行する検査部と、を含み、前記検査部は、前記ある行のプログラムコードが第1の条件を満たす文字列を含む場合、前記ある行のプログラムコードより前または後に位置する所定の条件を満たす行のプログラムコードを前記ある行のプログラムコードに追加してから、前記構文検査を実行する第1制御、または、前記ある行のプログラムコードが第2の条件を満たす文字列を含む場合、前記ある行のプログラムコードを編集してから、前記構文検査を実行する第2制御、の少なくとも何れか一方を実行する。
また、本発明の一つの態様の一実施形態に係る情報処理装置は、表示画面に表示されるプログラムを編集するための操作の入力を受け付ける受付部と、前記プログラム内のある行から別の行に注目行を変更する注目行変更操作の入力を前記受付部が受け付けた場合、前記ある行に記述されたプログラムコードを対象として構文エラーを検査する構文検査を実行する検査部と、を含み、前記プログラムの編集を受け付ける編集モードと、前記プログラムを実行する実行モードとを含む動作モードで動作する情報処理装置であって、前記検査部は、前記編集モードでの動作中に、前記注目行変更操作が前記受付部に入力された場合、前記ある行に記述されたプログラムコードを対象とする構文検査を実行し、前記構文検査でエラーが検出された場合、前記編集モードで動作したまま、前記ある行に記述されたプログラムコードの編集を許容し、前記ある行に記述された前記プログラムコードが編集されてから前記受付部に前記注目行変更操作が再入力された場合、前記ある行に記述された編集後の前記プログラムコードを対象とする前記構文検査を再度実行する。
【発明の効果】
【0008】
ユーザにとって好ましいタイミングで構文の検査を実行することができる。
【図面の簡単な説明】
【0009】
【
図1】実施形態に係る情報処理装置の一例を示す図である。
【
図2】実施形態に係る情報処理装置のブロック構成を例示する図である。
【
図3】実施形態に係る情報処理装置が動作する編集モードおよび実行モードの例を説明する図である。
【
図4】実施形態に係る構文検査処理の動作フローを例示する図である。
【
図5】実施形態に係るエラー表示を含む表示画面を例示する図である。
【
図6】実施形態に係る情報処理装置を実現するためのコンピュータのハードウェア構成を例示する図である。
【発明を実施するための形態】
【0010】
以下、図面を参照しながら、本発明のいくつかの実施形態について詳細に説明する。なお、複数の図面において対応する要素には同一の符号を付す。
【0011】
図1は、実施形態に係る情報処理装置100の一例を示す図である。
図1では、関数電卓が情報処理装置100として例示されている。
図1の例では情報処理装置100は、ファンクションキー(例えば、F1~F6)、関数キー、数字キー、四則演算キー、その他の機能を有する各種のキー101を含む。また、キー101は、例えば、カーソルで示される入力位置や、入力対象の行などの注目行を移動させるための移動キー102と、電卓による演算の実行を指示するためのEXEキー103とを含む。なお、情報処理装置100は、例えば、プログラムの作成および編集の操作入力を受け付ける編集モードおよびプログラムを実行するための実行モードで動作してよい。EXEキー103は、例えば、編集モードにおいて改行コードを入力するキーとして用いられてよい。
【0012】
表示画面105は、文字や画像を表示する画面であってよく、情報処理装置100は表示画面105にプログラムの編集画面や実行画面を表示してよい。
【0013】
なお、情報処理装置100は、
図1に例示した関数電卓に限定されるものではない。情報処理装置100は、例えば、パーソナルコンピュータ(PC)、モバイルPC、タブレット端末、スマートフォン、携帯電話機、サーバなどのプログラムの編集機能および実行機能などを備えるその他の装置であってもよい。
【0014】
図2は、実施形態に係る情報処理装置100のブロック構成を例示する図である。情報処理装置100は、例えば、制御部201、記憶部202、表示部203、および入力部204を含む。制御部201は、例えば、受付部211および検査部212などを含み、またその他の機能部を含んでもよい。記憶部202は、例えば、構文検査プログラム、および後述する動作フローの手順を記述したプログラムなどの情報を記憶している。表示部203は、例えば、ディスプレイなどの情報を表示する装置である。表示部203は、例えば、制御部201の指示に従って表示画面105に情報を表示する。入力部204は、例えば、ユーザからの入力を受け付ける装置である。入力部204は、一例では、キー101であってよく、また、タッチパネルなどのその他の入力装置であってもよい。これらの各部の詳細および記憶部202に格納されている情報の詳細については後述する。
【0015】
図3は、実施形態に係る情報処理装置100が動作する編集モードおよび実行モードの例を説明する図である。
図3に示すように、情報処理装置100は、プログラミングのための動作モードとして、プログラムの編集を受け付ける編集モードと、プログラムを実行する実行モードとを含んでいる。
【0016】
編集モードでは、制御部201は、プログラムを編集するための操作の入力を受け付け、ユーザは例えば情報処理装置100のキー101を操作することで、プログラムを入力することができる(
図3(1))。また、編集モードにおいて作成されたプログラムに対して実行指示が入力されると、モードの切り替えが行われ実行モードへと遷移する(
図3(2))。
【0017】
実行モードでは、制御部201は、まずプログラムの構文検査を実行し、プログラムに構文エラー(シンタックスエラー)が存在しないかをチェックする(
図3(3))。また、プログラムに構文エラーが含まれていない場合、制御部201は、次にプログラムの実行エラーを検査する(
図3(4))。
【0018】
そして、構文検査および実行エラーの検査の結果、エラーが含まれている場合には、制御部201は、エラーの内容を表示画面105に表示させる(
図3(5))。一方、プログラムにエラーが含まれていない場合には、制御部201は、プログラムの実行結果を表示画面105に表示させる(
図3(5))。そして、実行モードにおいて編集モードへの切り替え指示が入力されると(
図3(6))、制御部201は、モードを編集モードへと遷移させる。
【0019】
この様に、情報処理装置100において編集モードと実行モードとを切り替えることで、ユーザはプログラムを作成したり、その実行結果を確かめたりすることができる。
【0020】
また更に、実施形態では制御部201は、編集モードにおいても構文の検査を行う。例えば、ユーザがプログラムを作成中に、プログラム内のある行から別の行に注目行を変更する操作の入力を行ったとする。この場合に、制御部201は、ある行から別の行に注目行を変更する注目行変更操作の入力を検出し(
図3(7))、編集モードにおいて構文の検査を実行してよい(
図3(8))。そして、構文エラーが検出された場合には、制御部201は、構文エラーの内容を表示画面105に表示する(
図3(9))。
【0021】
なお、プログラム内のある行から別の行に注目行を変更する注目行変更操作は、一例では、カーソルを別の行に移動させるカーソル移動操作であってよい。以下では、プログラム内のある行から別の行に注目行を変更する注目行変更操作として、カーソルを別の行に移動させる操作を例に説明を行う。ここで、カーソルを別の行に移動させる操作は、例えば、カーソルの位置を上の行に移動させる「↑」、または下の行に移動させる「↓」のなどの移動キー102による移動を指示する操作を含んでよい。また、カーソルを別の行に移動させる操作は、例えば、改行コードを入力する操作を含んでよい。更に、カーソルを別の行に移動させる操作は、例えば、カーソルを先頭や末尾の行に移動させるショートカットキーの入力操作や、文字列の検索などによりカーソルを移動させる操作などを含んでよい。この場合に、制御部201は、行移動の操作の入力を検出し(
図3(7))、編集モードにおいて構文の検査を実行してよい(
図3(8))。そして、構文エラーが検出された場合には、制御部201は、構文エラーの内容を表示画面105に表示する(
図3(9))。
【0022】
なお、この場合の構文の検査の対象は、一例では、カーソルを別の行に移動させる操作が入力された際のカーソルの移動元の行であってよい。例えば、ユーザがプログラムコードの入力を行った場合、カーソルを別の行に移動させる操作を入力するのは、ユーザがその行のプログラムコードの入力が完了したと判断したタイミングであることが多い。そのため、上述のように、カーソルを別の行に移動させる操作の入力を検出し、そのタイミングでカーソルの移動元の行の構文を検査することで、ユーザが入力を完了したばかりの行に対して構文の検査を実行することができる。そして、構文エラーが存在する場合には構文エラーを報知することができる。そのため、ユーザは自らの入力内容と、構文エラーの結果とを対応づけて認識し易く、プログラミングの学習効果の高いタイミングで、自身のプログラミングのミスを認識することができる。また、この様にカーソルの移動元の行のプログラムコードを抽出して構文検査を実行することで、構文検査の実行にかかる処理負荷を低減しつつも、入力が行われた行を効率的に検査することができる。
【0023】
なお、構文検査を実行する別のタイミングの例として、所定時間、文字入力等の操作が行われないと自動的に構文検査を実行することも考えられる。しかしながら、このようなタイミングで構文検査を実行すると、ユーザが1行のプログラムコードの入力を完了していないタイミングでも時間が来れば構文検査を実行してしまう。この場合、1行の入力がまだ完了していないので、構文エラーが報知されてしまうが、そのようなエラーが発生して当然とユーザが認識しているような状況でエラーを報知してもユーザにとって学習効果は望めない。更には、そうしたエラーが発生して当然の状況でのエラー報知を頻繁に繰り返すと、本来ユーザが認識すべきエラー報知に対する関心も薄れてしまい、学習効果の低下を招いてしまう恐れもある。更には、時間が経過すれば構文検査を実行することになるため、必要以上に構文検査を実行することになり、処理負荷を不要に増大させてしまうことにもなる。
【0024】
また、構文検査を実行する更に別のタイミングとして、例えば、構文検査を実行するためのショートカットキーなどを設定しておき、ユーザが所望のタイミングで構文検査を実行することも考えられる。しかしながら、このようにユーザに構文検査の実行を任せてしまうと、慣れてくるとユーザが構文検査の実行を怠ることも起こり得る。そのため、ユーザにとって好ましいタイミングで構文検査を実行することができる更なる技術の提供が望まれている。
【0025】
上述したように、実施形態では、カーソルを別の行に移動させる所定の操作が入力された場合に、構文検査を実行する。そのため、ユーザが構文検査の実行を意識しなくても学習効果の高い適切なタイミングで構文検査を実行することができる。また、実施形態によれば、例えば、ユーザの1行のプログラムコードの入力を完了し、行移動操作を入力したタイミングなどで構文検査が実行される。そのため、自動的に構文の検査を実行するような場合と比較して、処理負荷を抑えつつ、適切な回数で効率的に構文検査を実行することができる。例えば、関数電卓などの情報処理装置100では、処理能力が非力であることもある。そのような場合にも、処理負荷を抑えて適切なタイミングで構文検査を実行することができ、ユーザは処理遅延等を意識せずにプログラミングを行い、構文検査の結果の報知を受けることができる。
【0026】
なお、構文検査は、例えば、制御部201が、構文検査の対象とする領域のプログラムコードを構文検査プログラムにかけることで実行されてよい。構文検査プログラムは、例えば、インタプリタ、コンパイラなどを含んでよい。プログラムの構文は、プログラミング言語に応じて異なり得るため、構文検査プログラムは、プログラミング言語に応じて用意されてよい。以下ではプログラミング言語が、Pythonである場合を例に説明を行うが、実施形態で利用可能なプログラミング言語はPythonに限定されるものではなく、C言語、Perlなどその他の言語を用いる場合にも適用することもできる。
【0027】
続いて、実施形態に係るカーソルの行移動操作が入力された場合における構文検査の実行について更に説明する。上述のように、一実施形態ではカーソルの行移動操作が入力された場合、そのカーソルの移動元の行のプログラムコードに構文検査を実行する。この様にカーソルの移動元の行のプログラムコードを抽出して構文検査を実行することで、構文検査の実行にかかる処理負荷を低減しつつも、入力が行われた行を効率的に検査することができる。
【0028】
しかしながら、例えば、プログラムコードの構文検査を実行する場合に、プログラムコードに記述される命令によっては、構文検査プログラムが、その前の行または後の行のプログラムコードを参照することがある。そして、例えば、このように構文の検査において、構文検査プログラムが、複数行にわたるプログラムコードを参照する場合、1行のプログラムコードのみを抽出して構文検査にかけると、プログラムの全体で構文検査を実行すれば構文エラーとならない場合にも、構文エラーと判定されてしまうことがある。
【0029】
そのため、実施形態では制御部201は、カーソルの移動元の行のプログラムコードが、構文検査において複数行にわたるプログラムコードの参照が行われる命令などを示す所定の文字列を含む場合、プログラムコードを加工してから構文検査にかける。なお、文字列とは、例えば、1文字以上の文字および記号、並びに改行コードなどのコードが並んだ構造のデータであってよい。
【0030】
カーソルの移動元の行のプログラムコードに実行される加工の種類としては、例えば、以下が挙げられる。
(1)カーソルの移動元の行より前の行または後の行のプログラムコードを取得して追加
(2)カーソルの移動元の行のプログラムコードを編集
【0031】
以上の編集の種類について、以下にプログラム言語がPythonである場合を例に説明する。
【0032】
(1)カーソルの移動元の行より前の行または後の行のプログラムコードを取得して追加
カーソルの移動元の行のプログラムコードが、第1の条件を満たす文字列を含む場合、制御部201は、カーソルの移動元の行のプログラムコードより前または後に位置する所定の条件を満たす行のプログラムコードを取得する。そして、制御部201は、取得したプログラムコードを、カーソルの移動元の行のプログラムコードに追加してから、構文検査プログラムに処理させることで構文エラーを検査する。それにより、構文検査プログラムは、前の行または後の行のプログラムコードの情報を参照して構文検査を実行することができ、カーソルの移動元の行のプログラムコードを抽出したことに起因する構文エラーの発生を回避することができる。
【0033】
なお、第1の条件は、例えば、構文検査の際に前の行または後の行の情報を参照する命令を検出する条件であってよい。例えば、Pythonでは、「else」、「elif」、「break」、「return」および「continue」などの文字列を含む行の構文検査では、前の行のプログラムコードの情報が参照される。この場合、前の行のプログラムコードの情報が無いと、構文エラーと判断されてしまう。そのため、カーソルの移動元の行のプログラムコードが、例えば、「else」、「elif」、「break」、「return」および「continue」などの文字列を含む場合、制御部201は、移動元の行よりも前に位置するプログラムコードのうちから、インデントの数が合致する直近の行までのプログラムコードを取得する。制御部201は、取得したプログラムコードを、カーソルの移動元の行のプログラムコードに追加してから、構文検査プログラムに処理させることで構文エラーを検査してよい。
【0034】
例えば、カーソルの移動元の行のプログラムコードが「else」を含む場合、制御部201は、「else」のインデントの数と同じ数でインデントされている直近の行を探索し、同じ数でインデントされているif文の「if」などを含む行を特定する。そして、制御部201は、特定した「if」の行から「else」の行までのプログラムコードを構文検査プログラムにかけてよい。
【0035】
なお、ここでは、カーソルのある行より前の行のプログラムコードを取得してカーソルの移動元の行のプログラムコードに追加する場合を例示したが、実施形態はこれに限定されるものではない。例えば、カーソルの移動元の行のプログラムコードが、構文検査においてカーソルの移動元の行よりも後の行のプログラムコードが参照される命令を含むとする。この場合、制御部201は、後の行のプログラムコードを、カーソルの移動元の行のプログラムコードに追加してから、構文検査プログラムに処理させることで構文エラーを検査してよい。この場合、制御部201は、例えば、カーソルの移動元の行の後の行を探索し、探索で見つかったインデントの数が一致している直近の行の1つ前の行までのプログラムコードを取得してカーソルの移動元の行のプログラムコードに追加し、構文検査にかけてよい。それにより、構文検査プログラムは、後の行のプログラムコードの情報を参照して構文検査を実行することができ、カーソルの移動元の行のプログラムコードを抽出したことに起因する構文エラーの発生を回避することができる。
【0036】
(2)カーソルの移動元の行のプログラムコードを編集
カーソルの移動元の行のプログラムコードの編集は、例えば、カーソルの移動元の行のプログラムコードへの文字列の追加、削除、および置換などを含んでよい。
【0037】
例えば、Pythonでは、「if」、「for」、および「def」といった命令を用いて複合文を記述する場合に、同じブロックでは行頭のインデントの数を揃える決まりがある。しかしながら、行頭に空白がある行のみを抽出して構文検査にかけると、構文検査プログラムは、構文エラーと判断してしまう。そのため、実施形態では制御部201は、カーソルの移動元の行のプログラムコードの行頭に空白が含まれる場合、行頭の空白を削除してから、カーソルの移動元の行のプログラムコードを構文検査プログラムにかけてよい。それにより、カーソルの移動元の行のプログラムコードの行頭がインデントされている場合に、カーソルの移動元の行のプログラムコードを抽出したことに起因して構文検査プログラムが構文エラーを検出してしまうことを回避することができる。
【0038】
なお、上述の(1)で述べたように、インデントの数に基づいて、カーソルの移動元の行よりも前の行または後の行のプログラムコードを取得し、カーソルの移動元の行のプログラムコードに追加する場合、制御部201は、カーソルの移動元の行とインデントの数が一致した追加するプログラムコードのインデントも削除してよい。
【0039】
また、上述のように構文検査プログラムが、構文エラーの判定の際に他の行のプログラムコードを参照することがある。この場合に、カーソルの移動元の行のプログラムコードに、参照先として機能する所定の文字列などを追加することで、構文エラーを回避することもできる。例えば、Pythonでは、「if」、「for」、および「def」などの命令を用いて複合文を記述する場合、次の行にブロックが続くときには行末に「:」を記載する決まりがある。そのため、例えば、カーソルの移動元の行のプログラムコードの行末が「:」である場合、構文検査において構文検査プログラムがカーソルの移動元の行のプログラムコードよりも後の行のプログラムコードを参照すると判定することができる。この場合に、実施形態では制御部201は、カーソルの移動元の行のプログラムコードを編集してよい。例えば、制御部201は、カーソルの移動元の行の行末が「:」である場合、「:」の後にブロックの中身として「pass」などを追加することで、構文エラーを回避してよい。それにより、追加した「pass」以外の行内の構文を検査することができる。
【0040】
なお、例えば、「if」、「for」、および「def」の他にも、「else」および「elif」などの場合にも、プログラムコードの行末に「:」が記載されることがある。この場合にも同様に、制御部201は、行末に「pass」を追加することで、構文エラーを回避してよい。また、上述の(1)で述べたように、制御部201は、カーソルの移動元の行よりも後の行のプログラムコードを取得して、カーソルの移動元の行のプログラムコードに追加し、構文エラーを回避してもよい。
【0041】
以上で述べたように、実施形態では制御部201は、カーソルの移動元の行のプログラムコードを加工することで、カーソルの移動元の行のプログラムコードを抽出したことに起因する構文エラーを回避してよい。
【0042】
以下、実施形態に係る構文検査処理の動作フローを説明する。
図4は、実施形態に係る構文検査処理の動作フローを例示する図である。例えば、制御部201は、編集モードに遷移すると、
図4の動作フローを開始してよい。
【0043】
ステップ401(以降、ステップを“S”と記載し、例えば、S401と表記する)において制御部201は、編集モードで開かれたファイルの全文の構文検査を実行する。例えば、過去に作成されたファイルなどを開いた場合には、編集モードで開かれたファイルに既にプログラムコードが記述されていることがある。このような場合に、制御部201は、開かれたファイルに記述されているプログラムコードの構文エラーを検査してよい。
【0044】
S402において制御部201は、構文検査プログラムによる検査の結果、検査対象に構文エラーが含まれているか否かを判定する。構文エラーが含まれていない場合(S402がNO)、フローはS404に進む。一方、構文エラーが含まれている場合(S402がYES)、フローはS403に進み、制御部201は、構文エラーの検査結果を表示部203の表示画面105に表示し、ユーザに構文エラーを報知する。例えば、制御部201は、プログラムにおいて構文エラーが最初に見つかった行と、その構文エラーの内容とを表示画面105に表示してよい。また、制御部201は、プログラムにおいて構文エラーが最初に見つかった行にカーソルを移動させてよい。制御部201が、構文エラーの検査結果を表示すると、フローはS404に進む。
【0045】
S404において制御部201は、ユーザからの入力を受け付ける。例えば、ユーザは、情報処理装置100に備えられたキー101などの入力部204を介して操作を入力し、プログラムの編集を行ってよい。ユーザからの入力を受け付けると、フローはS405に進む。
【0046】
S405において制御部201は、入力された操作が、カーソルをプログラムの別の行に移動させる所定の行移動の操作であるか否かを判定する。所定の行移動の操作は、例えば、カーソルの位置を上または下に移動させる操作の入力、改行コードの入力、カーソルを先頭行や末尾行に移動させるショートカットキーによる入力、検索による行移動の入力などのうちの少なくとも1つを含んでよい。入力が所定の行移動の操作でない場合(S405がNO)、フローはS415に進む。S415において制御部201は、入力された操作を実行し、その後、フローはS404に戻って処理を繰り返す。一方、入力が所定の行移動の操作である場合(S405がYES)、フローはS406に進む。
【0047】
S406において制御部201は、所定の行移動の操作が入力された際のカーソルの移動元の行のプログラムコードを取得する。
【0048】
S407では制御部201は、移動元の行のプログラムコードが第1の条件を満たす文字列を含むか否かを判定する。なお、第1の条件は、例えば、構文検査の際に前の行または後の行の情報が参照される命令を検出する条件であってよい。移動元の行のプログラムコードが第1条件を満たす文字列を含まない場合(S407がNO)、フローはS409に進む。一方、移動元の行のプログラムコードが第1条件を満たす文字列を含む場合(S407がYES)、フローはS408に進む。S408において制御部201は、構文検査で参照される前の行または後の行のプログラムコードを、移動元の行のプログラムコードに追加し、フローはS409に進む。
【0049】
例えば、プログラム言語がPythonであれば、検査対象の行のプログラムコードが「else」、「elif」、「break」、「return」および「continue」などを含む場合、構文検査において構文検査プログラムは前の行の情報を参照する。一例として、検査対象の行のプログラムコードが「else」や「elif」などを含めば、構文検査において構文検査プログラムは、その「else」や「elif」と対応する「if」が前にあるかなどを検査する。そのため、制御部201は、例えば、検査対象の行のプログラムコードに「else」や「elif」などの文字列が含まれる場合、その「else」や「elif」に付されたインデントの数と一致するインデント数を有する直近の「if」を含む行までのプログラムコードを抽出してよい。同様に、検査対象の行のプログラムコードに、例えば、「break」、「return」および「continue」などの文字列が含まれる場合にも、制御部201は、構文検査において参照される前の行の範囲を、インデントの数や複合文のブロックなどの情報に基づいて特定し、その範囲のプログラムコードを取得してよい。
【0050】
続いて、S409において制御部201は、移動元の行のプログラムコードが、第2の条件を満たす文字列を含むか否かを判定する。なお、第2の条件は、例えば、構文検査の際に行内のプログラムコードに編集が必要になる文字列を検出する条件であってよい。例えば、移動元の行のプログラムコードが、第2の条件を満たす文字列を含まない場合(S409がNO)、フローはS411に進む。一方、例えば、移動元の行のプログラムコードが、第2の条件を満たす文字列を含む場合(S409がYES)、フローはS410に進む。S410において制御部201は、行内の文字列を編集し、フローはS411に進む。
【0051】
なお、行内の文字列に編集が必要となる命令を検出するための第2の条件としては、上述のようにプログラム言語がPythonであれば、行末が「:」であることを含んでよい。この場合、制御部201は、行末の「:」の後ろに、「pass」を追加してよい。或いは、第2の条件は、検査対象の行のプログラムコードが行頭に空白を含むことであってよく、この場合、制御部201は、行頭の空白を削除する。なお、行頭の空白を削除する場合に、例えば、S408の処理で検査対象の行のプログラムコードとして複数行が抽出されている場合には、制御部201は、カーソルの移動元の行のプログラムコードと一致するインデント数を有する他の行の行頭の空白も削除してよい。
【0052】
そして、S411において制御部201は、検査対象の行のプログラムコードに構文検査を実行する。検査対象の行のプログラムコードは、例えば、S407およびS409の両方においてNOと判定された場合には、カーソルの移動元の行のプログラムコードであってよい。一方、S408およびS410の少なくとも一方の処理において、移動元の行のプログラムコードが加工されている場合には、制御部201は、加工後のプログラムコードを検査対象の行のプログラムコードとして構文検査を実行してよい。
【0053】
そして、S412において構文エラーがない場合(S412がNO)、フローはS413に進む。S413において制御部201は、S404で入力された行移動の操作と対応する位置にカーソルを移動し、フローはS404に戻る。一方、S412において構文エラーがある場合(S412がYES)、フローはS414に進む。S414において制御部201は、検出された構文エラーを表示画面105に表示し、フローはS404に戻る。なお、この場合、移動元の行に構文エラーが含まれることが推定されるため、制御部201は、S404で入力された行移動の操作を実行せず、カーソル位置を移動元の行に表示させたままとしてよい。
【0054】
例えば、以上で述べたように、
図4の動作フローによれば、制御部201は、カーソルをプログラムの別の行に移動させる所定の行移動の操作が入力された場合に、移動元の行のプログラムコードを対象とする構文検査を実行することができる。
【0055】
図5は、実施形態に係るエラー表示を含む表示画面500を例示する図である。表示画面500は、例えば、S414において情報処理装置100の表示部203の表示画面105に表示されてよい。
図5(a)の例では、表示画面500は、編集領域501とカーソル502とを含む。編集領域501は、例えば、プログラムの編集が行われる表示領域である。また、カーソル502は、例えば、編集領域501におけるプログラムの編集位置を示す。
図5(a)の例では表示画面500には、全行数が3行のPythonのプログラムが表示されている。そして、3行目のプログラムコードの末尾にカーソル502が表示されている。
【0056】
ここで、例えば、ユーザが情報処理装置100のEXEキー103を押して改行コードを入力するなどし、カーソル502を別の行に移動させる操作を入力したとする。この場合、
図4の動作フローで述べたように、制御部201は、3行目のプログラムコードの構文検査を実行する。そして、
図5(a)の例では、3行目のプログラムコードは末尾の「)」と対応する「(」が存在しないため、構文検査プログラムにより構文エラーと判定され、構文エラーが検出されたことを示すエラー情報503として「×」が表示されている。また、
図5(a)の例では、エラーが検出された行を示すエラー行504として行番号:003が表示されている。そのため、ユーザは現在入力していた3行目のプログラムコードに構文エラーが存在することを、行移動の操作を入力したタイミングで知ることができる。
【0057】
このように、ユーザが1行のまとまったプログラムコードの入力が完了したと判断したタイミングで構文検査を行い、ユーザに報知することで、ユーザは入力したばかりのプログラムコードに存在する構文エラーを知ることができる。そのため、高い学習効果を期待することができる。
【0058】
なお、
図5(a)に示すように、構文エラーが検出された場合、制御部201は、入力された移動操作と対応するカーソル502の移動を取り消すなどして、移動操作が入力された際の移動元の行内にカーソルを表示したままとしてよい。それにより、ユーザはエラーが検出された行のプログラムコードを即座に修正することができる。
【0059】
一方で、構文エラーが検出されなかった場合には、制御部201は、入力された移動操作と対応するカーソル502の移動を実行する。それにより、ユーザは正しい構文でプログラムを入力した場合には、構文検査が実行されたことを意識せずにプログラミングを継続することができる。
【0060】
また、
図3を参照して述べたように、実施形態では構文検査を編集モードにおいて実行するため、プログラムの編集と構文検査とを実行する際にモードの切り替えなどの余計な操作をせずにプログラムコードの修正を行うことができる。そして、例えば、
図5(a)においてユーザが3行目を「print(“again!”)」に修正し、再度、カーソル502を別の行に移動させる操作を入力した場合、制御部201は、3行目のプログラムコードに構文検査を再度実行する。そして、制御部201は、再度構文検査を実行した結果、エラーが検出されなければ、カーソル502を別の行に移動させる。この様に、実施形態によれば、行ごとにプログラムコードの構文検査を実行し、構文エラーが検出されなくなるまで、ユーザに構文エラーを報知するため、プログラムの作成の際に各行のプログラムコードの完成度を高めることができる。その結果として、プログラム全体の完成度も効率的に高めることができる。
【0061】
なお、実施形態に係るエラー情報503およびエラー行504は、
図5(a)の例に限定されるものではない。例えば、別の実施形態では、
図5(b)に示す表示画面510のように、制御部201は、エラー報知のための表示画面510においてエラー情報503およびエラー行504を報知してもよい。表示画面510は、例えば、S403において表示されてもよい。
【0062】
なお、上記においては、プログラムの編集機能および実行機能を備える情報処理装置100に、実施形態に係る構文検査の機能が実装される例に説明しているが、実施形態はこれに限定されるものではない。例えば、上述の構文検査の機能は、情報処理装置100上で動作するエディタアプリケーションなどに実装されてもよい。または、例えば、サーバがネットワーク上で提供するプログラミングの学習サービスなどにおいて実施形態に係る構文検査の機能が実装されてもよい。
【0063】
なお、上述の実施形態では、プログラム内のある行から別の行に注目行を変更する注目行変更操作として、カーソルを別の行に移動させるカーソル移動操作を例に説明を行っている。しかしながら、実施形態はこれに限定されるものではない。例えば、入力対象の行などの注目行を示すのに、カーソル以外が利用されてもよい。一例として、注目行の全体の色を、他の行の色と異なる色で表示するなどにより注目行を強調表示して、注目行を識別する場合などが考えられる。例えば、このような場合にも、プログラム内のある行から別の行に注目行を変更する注目行変更操作が入力されると、実施形態に係る構文の検査が実行されてよい。
【0064】
以上に述べたように、上述の実施形態によれば、制御部201は、表示画面105に表示されるプログラムを編集するための操作の入力を受け付ける。そして、制御部201は、プログラム内のある行から別の行に注目行を変更する注目行変更操作の入力を受け付けた場合に、ある行に記述されたプログラムコードを対象とする構文検査を実行する。そのため、ユーザが入力を完了したばかりの行に対して構文の検査を実行することができる。
【0065】
また、上述の実施形態では、制御部201は、注目行変更操作の入力を受け付けた場合、プログラムのうちから注目行となっているある行のプログラムコードを抽出し、抽出したある行のプログラムコードを、構文エラーを検査する構文検査プログラムに処理させることで構文エラーを検査する。そのため、構文検査の実行にかかる処理負荷を低減しつつも、注目行を効率的に検査することができる。
【0066】
また、例えば、注目行となっているある行のプログラムコードが第1の条件を満たす文字列を含むとする。なお、第1の条件は、例えば、構文検査の際に前の行または後の行の情報を参照する命令を検出する条件であってよい。この場合に、上述の実施形態によれば、制御部201は、ある行のプログラムコードより前または後に位置する所定の条件を満たす行のプログラムコードをある行のプログラムコードに追加してから、構文検査プログラムに処理させることで構文エラーを検査する。それにより、注目行のプログラムコードを抽出したことに起因する構文エラーの発生を回避することができる。
【0067】
また、例えば、注目行となっているある行のプログラムコードが第2の条件を満たす文字列を含むとする。なお、第2の条件は、例えば、構文検査の際に行内のプログラムコードに編集が必要になる文字列を検出する条件であってよい。この場合に、上述の実施形態によれば、制御部201は、ある行のプログラムコードを編集してから、構文検査プログラムに処理させることで構文エラーを検査する。それにより、注目行のプログラムコードを抽出したことに起因する構文エラーの発生を回避することができる。
【0068】
また、上述の実施形態では、情報処理装置100は、例えば、プログラムの編集を受け付ける編集モードと、プログラムを実行する実行モードとを含む動作モードで動作する。そして、制御部201は、編集モードでの動作中に、注目行変更操作が入力された場合、注目行となっているある行に記述されたプログラムコードを対象とする構文検査を実行する。構文検査でエラーが検出された場合、制御部201は、編集モードで動作したまま、ある行に記述されたプログラムコードの編集を許容する。そして、制御部201は、ある行に記述されたプログラムコードが編集されてから注目行変更操作が再入力された場合、ある行に記述された編集後のプログラムコードを対象とする構文検査を再度実行する。そのため、プログラム全体の完成度も効率的に高めることができる。
【0069】
以上において、実施形態を例示したが、実施形態はこれに限定されるものではない。例えば、上述の動作フローは例示であり、実施形態はこれに限定されるものではない。可能な場合には、動作フローは、処理の順番を変更して実行されてもよく、別に更なる処理を含んでもよく、または、一部の処理が省略されてもよい。例えば、プログラムを記録するファイルを新規作成する場合などのように状況に応じて、
図4のS401からS403の処理は実行されなくてもよい。
【0070】
また、上述の実施形態では、構文検査の対象として、カーソルを別の行に移動させる入力が行われた際のカーソルの移動元の行を対象とする例を述べているが、実施形態は、これに限定されるものではない。別の実施形態では制御部201は、例えば、プログラムの全文など、カーソルの移動元の行以外も含むその他の範囲を対象として構文検査を実行してもよい。
【0071】
また、例えば、プログラムには、プログラムの作成者がメモなどを記載するためのコメントアウトされた領域が含まれることがある。例えば、Pythonでは、プログラムにおいて「#」から行末までに記述された内容は実行時に無視される。そのため、上述の実施形態においてプログラムおよびプログラムコードといった場合に、構文検査において無視されるコメントアウトされた領域は含まれなくてよい。例えば、上述のS409の処理では、コメントアウトされた領域よりも前に記述されたプログラムコードにおいて行末が「:」であるかの判定が実行されてよい。
【0072】
また、上述の実施形態において、カーソルを別の行に移動する操作が入力された際の構文検査の実行は、必ずしもカーソルを別の行に移動させる全ての操作に対して実行される必要はない。例えば、制御部201は、一部のカーソルを別の行に移動させる操作の入力では構文検査を実行しなくてもよい。
【0073】
また、上述の実施形態では、プログラミング言語がPythonである場合を例に説明を行っているが、実施形態はこれに限定されるものではなく、例えば、C言語、Perlなどその他の言語に実施形態を適用することもできる。その場合に、例えば、上述のPythonではインデントにより前後の行からプログラムコードを抽出する範囲を特定する例を述べているが、C言語、Perlなどでは括弧の対応によりプログラムコードを抽出する範囲を特定してもよい。
【0074】
図6は、実施形態に係る情報処理装置100を実現するためのコンピュータ600のハードウェア構成を例示する図である。
図6の情報処理装置100を実現するためのハードウェア構成は、例えば、プロセッサ601、メモリ602、記憶装置603、読取装置604、通信インタフェース606、入出力インタフェース607、入力装置611、および表示装置612を備える。なお、プロセッサ601、メモリ602、記憶装置603、読取装置604、通信インタフェース606、入出力インタフェース607は、例えば、バス608を介して互いに接続されている。
【0075】
プロセッサ601は、例えば、シングルプロセッサであっても、マルチプロセッサやマルチコアであってもよい。プロセッサ601は、メモリ602を利用して例えば上述の動作フローの手順を記述したプログラムを実行することにより、上述した制御部201の一部または全部の機能を提供する。例えば、情報処理装置100のプロセッサ601は、記憶装置603に格納されているプログラムを読み出して実行することで、受付部211、検査部212として動作してよい。また、プロセッサ601は、構文検査プログラムを実行することで、プログラムの構文検査を実行してよい。
【0076】
メモリ602は、例えば半導体メモリであり、RAM領域およびROM領域を含んでよい。記憶装置603は、例えばハードディスク、フラッシュメモリ等の半導体メモリ、または外部記憶装置である。なお、RAMは、Random Access Memoryの略称である。また、ROMは、Read Only Memoryの略称である。
【0077】
読取装置604は、プロセッサ601の指示に従って着脱可能記憶媒体605にアクセスする。着脱可能記憶媒体605は、例えば、半導体デバイス、磁気的作用により情報が入出力される媒体、光学的作用により情報が入出力される媒体などにより実現される。なお、半導体デバイスは、例えば、USB(Universal Serial Bus)メモリである。また、磁気的作用により情報が入出力される媒体は、例えば、磁気ディスクである。光学的作用により情報が入出力される媒体は、例えば、CD-ROM、DVD、Blu-ray Disc等(Blu-rayは登録商標)である。CDは、Compact Discの略称である。DVDは、Digital Versatile Diskの略称である。
【0078】
記憶部202は、例えばメモリ602、記憶装置603、および着脱可能記憶媒体605を含んでよい。例えば、情報処理装置100の記憶装置603には、構文検査プログラム、および上述の動作フローの手順を記述したプログラムなどが格納されている。
【0079】
通信インタフェース606は、プロセッサ601の指示に従って有線または無線通信で他の装置と通信する。
【0080】
入出力インタフェース607は、例えば、入力および出力を行う装置との間のインタフェースであってよい。
図6の例では、入出力インタフェース607は、入力装置611と接続されている。入力装置611は、例えばユーザからの指示を受け付けるキー、ボタン、キーボード、タッチパネル、マイク、カメラなどのデバイスである。なお、マイクは、一例では、音声入力に利用されてよい。また、カメラは、一例では、ジェスチャー入力に利用されてよい。入力装置611は、上述の入力部204の一例である。また、
図6の例では、入出力インタフェース607は、表示装置612と接続されている。表示装置612は、例えば、ディスプレイ、プロジェクタなどの表示を行うデバイスであってよく、プロセッサ601の指示に従って、表示画面に情報を表示する。表示装置612は、上述の表示部203の一例である。また、入出力インタフェース607は、例えば、スピーカなどの音声装置、およびプリンタなどの印刷装置といったその他の装置と接続されていてもよい。
【0081】
実施形態に係る各プログラムは、例えば、下記の形態で情報処理装置100に提供される。
(1)記憶装置603に予めインストールされている。
(2)着脱可能記憶媒体605により提供される。
(3)プログラムサーバなどのサーバ630からネットワーク620を介して提供される。
【0082】
なお、
図6を参照して述べた情報処理装置100を実現するためのコンピュータ600のハードウェア構成は、例示であり、実施形態はこれに限定されるものではない。例えば、上述の構成の一部が、削除されてもよく、また、新たな構成が追加されてもよい。また、別の実施形態では、例えば、上述の制御部201の一部または全部の機能がFPGA、SoC、ASIC、およびPLDなどによるハードウェアとして実装されてもよい。なお、FPGAは、Field Programmable Gate Arrayの略称である。SoCは、System-on-a-chipの略称である。ASICは、Application Specific Integrated Circuitの略称である。PLDは、Programmable Logic Deviceの略称である。
【0083】
以上において、いくつかの実施形態が説明される。しかしながら、実施形態は上記の実施形態に限定されるものではなく、上述の実施形態の各種変形形態および代替形態を包含するものとして理解されるべきである。例えば、各種実施形態は、その趣旨および範囲を逸脱しない範囲で構成要素を変形して具体化できることが理解されよう。また、前述した実施形態に開示されている複数の構成要素を適宜組み合わせることにより、種々の実施形態が実施され得ることが理解されよう。更には、実施形態に示される全構成要素からいくつかの構成要素を削除して、または実施形態に示される構成要素にいくつかの構成要素を追加して種々の実施形態が実施され得ることが当業者には理解されよう。
【0084】
以上の実施形態に関し、更に以下の付記を開示する。
[付記1]
表示画面に表示されるプログラムを編集するための操作の入力を受け付ける受付部と、
前記プログラム内のある行から別の行に注目行を変更する注目行変更操作の入力を前記受付部が受け付けた場合、前記ある行に記述されたプログラムコードを対象とする構文検査を実行する検査部と、
を含む、情報処理装置。
[付記2]
前記検査部は、前記注目行変更操作の入力を前記受付部が受け付けた場合、前記プログラムのうちから前記ある行のプログラムコードを抽出し、抽出した前記ある行のプログラムコードを、構文エラーを検査する構文検査プログラムに処理させることで構文エラーを検査する、付記1に記載の情報処理装置。
[付記3]
前記検査部は、前記ある行のプログラムコードが第1の条件を満たす文字列を含む場合、前記ある行のプログラムコードより前または後に位置する所定の条件を満たす行のプログラムコードを前記ある行のプログラムコードに追加してから、前記構文検査プログラムに処理させることで構文エラーを検査する、付記2に記載の情報処理装置。
[付記4]
前記検査部は、前記ある行のプログラムコードが第2の条件を満たす文字列を含む場合、前記ある行のプログラムコードを編集してから、前記構文検査プログラムに処理させることで構文エラーを検査する、付記2または3に記載の情報処理装置。
[付記5]
前記受付部は、前記表示画面に表示される前記プログラム内の前記ある行に表示される前記プログラムの編集位置を示すカーソルを前記プログラム内の前記別の行に移動させる操作を、前記注目行変更操作として入力を受け付け、
前記検査部は、前記構文検査の結果、構文エラーが検出された場合、前記ある行内に前記カーソルを表示させたまま、前記構文エラーが検出されたことを示す情報および前記構文エラーが検出された行を報知する、
付記1から4のいずれかに記載の情報処理装置。
[付記6]
前記受付部は、前記表示画面に表示される前記プログラム内の前記ある行に表示される前記プログラムの編集位置を示すカーソルを前記プログラム内の前記別の行に移動させる操作を、前記注目行変更操作として入力を受け付け、
前記検査部は、前記構文検査の結果、構文エラーが検出されなかった場合、前記カーソルを前記別の行に移動させる、付記1から5のいずれかに記載の情報処理装置。
[付記7]
前記情報処理装置は、前記プログラムの編集を受け付ける編集モードと、前記プログラムを実行する実行モードとを含む動作モードで動作し、
前記検査部は、
前記編集モードでの動作中に、前記注目行変更操作が前記受付部に入力された場合、前記ある行に記述されたプログラムコードを対象とする構文検査を実行し、
前記構文検査でエラーが検出された場合、前記編集モードで動作したまま、前記ある行に記述されたプログラムコードの編集を許容し、
前記ある行に記述された前記プログラムコードが編集されてから前記受付部に前記注目行変更操作が再入力された場合、前記ある行に記述された編集後の前記プログラムコードを対象とする前記構文検査を再度実行する、
ことを特徴とする、付記1から6のいずれかに記載の情報処理装置。
[付記8]
表示画面に表示されるプログラムを編集するための操作の入力を受け付ける受付ステップと、
前記プログラム内のある行から別の行に注目行を変更する注目行変更操作の入力を前記受付部が受け付けた場合、前記ある行に記述されたプログラムコードを対象とする構文検査を実行する検査ステップと、
を含む、情報処理装置が実行する検査方法。
[付記9]
表示画面に表示されるプログラムを編集するための操作の入力を受け付ける受付ステップと、
前記プログラム内のある行から別の行に注目行を変更する注目行変更操作の入力を前記受付部が受け付けた場合、前記ある行に記述されたプログラムコードを対象とする構文検査を実行する検査ステップと、
を含む、処理を情報処理装置に実行させる検査プログラム。
[付記10]
付記9に記載の検査プログラムを配布するサーバ。
【符号の説明】
【0085】
100 情報処理装置
101 キー
102 移動キー
103 EXEキー
105 表示画面
201 制御部
202 記憶部
203 表示部
204 入力部
211 受付部
212 検査部
401 ステップ
501 編集領域
502 カーソル
503 エラー情報
504 エラー行
600 コンピュータ
601 プロセッサ
602 メモリ
603 記憶装置
604 読取装置
605 着脱可能記憶媒体
606 通信インタフェース
607 入出力インタフェース
608 バス
611 入力装置
612 表示装置
620 ネットワーク
630 サーバ