第021回_TokenManagerの実装3_コンテキスト切り替え機能 TokenManagerの基本的な機能については紹介が終わりましたので、最後にコンテキスト(文脈)の切り替え機能を実装します。ただ、この機能の必要性がわかり難いのでまずは処理中のコンテキストが切り替わ... 2017/06/12 Comment(0) 第020回_TokenManagerの実装2_notify系の追加 前回に引き続きTokenManagerの実装を行います。4.条件付字句解析を適切に呼び出す機能条件付字句解析器の各条件による切り替えの呼び出しタイミングを制御するのはVisitor側の責任です。Vis... 2017/06/05 Comment(0) 第019回_TokenManagerの実装1 今回はVisitorからトークンリストの生成機能(役割)を分離します。TokenManager以前に述べたSample1~4の実装例は字句解析が本来生成するトークン列をVisitorが直に持っています... 2017/05/29 Comment(0) 第018回_構文の実装_EbnfDocumentNode 前回までで面倒な検討が必要な構文を除いた構文の検討が完了しました。そこで今回からSampleで紹介した内容を拡張して本格的な実装に入りたいと思います。最初に取り扱うのはEBNFデータツリーの作成です。... 2017/05/22 Comment(0) 第017回_構文の整理4_markupdecl 簡単な検討を要するもの2前回に引き続き、LL(1)でない構文について検討します。■AttlistDecl,AttDefLL(1)で解析できないので、変形が必要です。まずは単純に変形すると、Attlis... 2017/05/15 Comment(0) 第016回_構文の整理3_PITarget_Contentspec 簡単な検討を要するもの1今回は基底クラスで実装できない構文やLL(1)でない構文について検討します。■PITargetPITargetは、EbnfLimitedWordNodeを使って正しく解釈できな... 2017/05/08 Comment(0) 第015回_構文の整理2_検討不要なもの XML構文の整理LL(1)で実装するXMLの構文は次の4種類に別けて検討すると良いと思います。種類1:トークンとして切り出すだけのもの種類2:SYMBOLやWORD、LITERALへの置き換えだけで済... 2017/05/01 Comment(0) 第014回_構文の整理1_基底 EBNFデータツリーにて構文を実装するための整理と表現力の拡張Sample実装1~4のAnalyzeSyntax()において、構文をEbnfXXXXXNodeの組合せで表現しました。しかし、XMLの構... 2017/04/24 Comment(0) 第013回_構文解析Sample4 今回は、Sample4としてAlternative構文を解析できるようにします。Sample4Alternative構文を解析するEBNFの生成規則の内、選択を表現するためにEBNFデータツリーのAl... 2017/04/17 Comment(0) 第012回_構文解析Sample3 今回は、Sample3としてRepetition構文を解析できるようにします。Sample3Repetition構文を解析するEBNFの生成規則の内、繰り返しを表現するためにEBNFデータツリーのRe... 2017/04/10 Comment(0) 第011回_構文解析Sample1および2 今回は、新説Visitorパターンの補足Sample共通処理と共通のクラスSample1:単項の構文解析Sample2:連接の構文解析を説明します。新説Visitorパターンの補足は前回投稿の時点で気... 2017/04/03 Comment(0) 第010回_新説Visitorパターンを適用する状況 前回、EBNFデータツリー(構文)をクラス構造に変換できるようになりました。今回からクラスが表現する構造を利用して入力文字列を解析する方法について検討していきます。本コラムではその方法としてGoFのデ... 2017/03/27 Comment(0) 第009回_EBNFデータツリーを使った構文解析器 今回から構文をどのように解析するかについて検討します。この際、字句解析器についてはまだ説明していませんのでトークンはとれたものと仮定します。また、字句解析の本体は構文解析の途中でそれぞれ実装します。構... 2017/03/20 Comment(0) 第008回_無条件字句解析 これまで設計の話だけでしたが、今回からソースコードも出てきますからより具体的に説明できると思います。ソースコードの権利関係には気を付けてください。責任を持てません。全体に対する差集合への対処・無条件字... 2017/03/13 Comment(0) 第007回_包含関係への対処・条件付字句解析 前回のコラムの終りに述べたように、抽出したトークンに問題があるので検討します。前回の抽出する過程でも少し触れましたが、抽出したトークン同士に包含関係があります。トークンAの集合とトークンBの集合に包含... 2017/03/06 Comment(0) 第006回_トークンを抽出する これまで長い語りや既にソフトウェア工学を学んだ方にとっては当たり前の内容が多かったので、少し退屈だったかもしれません。今回からはよりクリエイティブな内容になりますからご期待ください。XML構文における... 2017/02/27 Comment(0) 第005回_XML構文の一覧 XML構文の列挙字句解析が生成するトークン粒度を決定するためにXML構文規則をW3C勧告-XML1.1から列挙します。[1]document::=(prologelementMisc*)-(Char*... 2017/02/20 Comment(0) 第004回_字句解析_トークン粒度/EBNFについて 前回のコラムで字句解析、構文解析、意味解析を作成すると述べましたので、字句解析から順に検討していきます。トークンの粒度前回述べたように、字句解析はtoken(トークン)を作成します。トークンは入力スト... 2017/02/13 Comment(0) 第003回_マイルストーン、パーサの特徴・設計・解析手法 1回目/2回目は自己紹介や意図について書きました。3回目から技術情報を書くと述べたので今回から読んでくださる方もいると思っています。このコラムではまずXMLパーサを作成します。マイルストーンXMLパー... 2017/02/06 Comment(0) 第002回_テーマについて さて、第1回のコラムで自己紹介を終えました。第2回はコラムのテーマについて述べます。また、第1回の最後に述べたように今回も「なぜこのテーマにしたのか」という意図について長々と説明しますが、本来、紹介す... 2017/01/30 Comment(1) 前のページへ 1 2 3 4 次のページへ SpecialPR
第021回_TokenManagerの実装3_コンテキスト切り替え機能 TokenManagerの基本的な機能については紹介が終わりましたので、最後にコンテキスト(文脈)の切り替え機能を実装します。ただ、この機能の必要性がわかり難いのでまずは処理中のコンテキストが切り替わ... 2017/06/12 Comment(0)
第020回_TokenManagerの実装2_notify系の追加 前回に引き続きTokenManagerの実装を行います。4.条件付字句解析を適切に呼び出す機能条件付字句解析器の各条件による切り替えの呼び出しタイミングを制御するのはVisitor側の責任です。Vis... 2017/06/05 Comment(0)
第019回_TokenManagerの実装1 今回はVisitorからトークンリストの生成機能(役割)を分離します。TokenManager以前に述べたSample1~4の実装例は字句解析が本来生成するトークン列をVisitorが直に持っています... 2017/05/29 Comment(0)
第018回_構文の実装_EbnfDocumentNode 前回までで面倒な検討が必要な構文を除いた構文の検討が完了しました。そこで今回からSampleで紹介した内容を拡張して本格的な実装に入りたいと思います。最初に取り扱うのはEBNFデータツリーの作成です。... 2017/05/22 Comment(0)
第017回_構文の整理4_markupdecl 簡単な検討を要するもの2前回に引き続き、LL(1)でない構文について検討します。■AttlistDecl,AttDefLL(1)で解析できないので、変形が必要です。まずは単純に変形すると、Attlis... 2017/05/15 Comment(0)
第016回_構文の整理3_PITarget_Contentspec 簡単な検討を要するもの1今回は基底クラスで実装できない構文やLL(1)でない構文について検討します。■PITargetPITargetは、EbnfLimitedWordNodeを使って正しく解釈できな... 2017/05/08 Comment(0)
第015回_構文の整理2_検討不要なもの XML構文の整理LL(1)で実装するXMLの構文は次の4種類に別けて検討すると良いと思います。種類1:トークンとして切り出すだけのもの種類2:SYMBOLやWORD、LITERALへの置き換えだけで済... 2017/05/01 Comment(0)
第014回_構文の整理1_基底 EBNFデータツリーにて構文を実装するための整理と表現力の拡張Sample実装1~4のAnalyzeSyntax()において、構文をEbnfXXXXXNodeの組合せで表現しました。しかし、XMLの構... 2017/04/24 Comment(0)
第013回_構文解析Sample4 今回は、Sample4としてAlternative構文を解析できるようにします。Sample4Alternative構文を解析するEBNFの生成規則の内、選択を表現するためにEBNFデータツリーのAl... 2017/04/17 Comment(0)
第012回_構文解析Sample3 今回は、Sample3としてRepetition構文を解析できるようにします。Sample3Repetition構文を解析するEBNFの生成規則の内、繰り返しを表現するためにEBNFデータツリーのRe... 2017/04/10 Comment(0)
第011回_構文解析Sample1および2 今回は、新説Visitorパターンの補足Sample共通処理と共通のクラスSample1:単項の構文解析Sample2:連接の構文解析を説明します。新説Visitorパターンの補足は前回投稿の時点で気... 2017/04/03 Comment(0)
第010回_新説Visitorパターンを適用する状況 前回、EBNFデータツリー(構文)をクラス構造に変換できるようになりました。今回からクラスが表現する構造を利用して入力文字列を解析する方法について検討していきます。本コラムではその方法としてGoFのデ... 2017/03/27 Comment(0)
第009回_EBNFデータツリーを使った構文解析器 今回から構文をどのように解析するかについて検討します。この際、字句解析器についてはまだ説明していませんのでトークンはとれたものと仮定します。また、字句解析の本体は構文解析の途中でそれぞれ実装します。構... 2017/03/20 Comment(0)
第008回_無条件字句解析 これまで設計の話だけでしたが、今回からソースコードも出てきますからより具体的に説明できると思います。ソースコードの権利関係には気を付けてください。責任を持てません。全体に対する差集合への対処・無条件字... 2017/03/13 Comment(0)
第007回_包含関係への対処・条件付字句解析 前回のコラムの終りに述べたように、抽出したトークンに問題があるので検討します。前回の抽出する過程でも少し触れましたが、抽出したトークン同士に包含関係があります。トークンAの集合とトークンBの集合に包含... 2017/03/06 Comment(0)
第006回_トークンを抽出する これまで長い語りや既にソフトウェア工学を学んだ方にとっては当たり前の内容が多かったので、少し退屈だったかもしれません。今回からはよりクリエイティブな内容になりますからご期待ください。XML構文における... 2017/02/27 Comment(0)
第005回_XML構文の一覧 XML構文の列挙字句解析が生成するトークン粒度を決定するためにXML構文規則をW3C勧告-XML1.1から列挙します。[1]document::=(prologelementMisc*)-(Char*... 2017/02/20 Comment(0)
第004回_字句解析_トークン粒度/EBNFについて 前回のコラムで字句解析、構文解析、意味解析を作成すると述べましたので、字句解析から順に検討していきます。トークンの粒度前回述べたように、字句解析はtoken(トークン)を作成します。トークンは入力スト... 2017/02/13 Comment(0)
第003回_マイルストーン、パーサの特徴・設計・解析手法 1回目/2回目は自己紹介や意図について書きました。3回目から技術情報を書くと述べたので今回から読んでくださる方もいると思っています。このコラムではまずXMLパーサを作成します。マイルストーンXMLパー... 2017/02/06 Comment(0)
第002回_テーマについて さて、第1回のコラムで自己紹介を終えました。第2回はコラムのテーマについて述べます。また、第1回の最後に述べたように今回も「なぜこのテーマにしたのか」という意図について長々と説明しますが、本来、紹介す... 2017/01/30 Comment(1)