@IT」にはない内容をエンジニアライフで技術紹介するコラム。広く議論する場になることを目指します。第021回_TokenManagerの実装3_コンテキスト切り替え機能TokenManagerの基本的な機能については紹介が終わりましたので、最後にコンテキスト(文脈)の切り替え機能を実装します。前回に引き続きTokenManagerの実装を行います。各条件による切り替えの呼び出しタイミングを制御するのはVisitor側の責任です。Comment(0)第019回_TokenManagerの実装1今回はVisitorからトークンリストの生成機能(役割)を分離します。Comment(0)第018回_構文の実装_EbnfDocumentNode前回までで面倒な検討が必要な構文を除いた構文の検討が完了しました。そこで今回からSampleで紹介した内容を拡張して本格的な実装に入りたいと思います。最初に取り扱うのはEBNFデータツリーの作成です。Comment(0)第017回_構文の整理4_markupdecl簡単な検討を要するもの2前回に引き続き、LL(1)でない構文について検討します。■AttlistDecl,AttDefLL(1)で解析できないので、変形が必要です。Comment(0)第016回_構文の整理3_PITarget_Contentspec簡単な検討を要するもの1今回は基底クラスで実装できない構文やLL(1)でない構文について検討します。Comment(0)第015回_構文の整理2_検討不要なものXML構文の整理LL(1)で実装するXMLの構文は次の4種類に別けて検討すると良いと思います。Comment(0)第014回_構文の整理1_基底EBNFデータツリーにて構文を実装するための整理と表現力の拡張Sample実装1~4のAnalyzeSyntax()において、構文をEbnfXXXXXNodeの組合せで表現しました。Comment(0)第013回_構文解析Sample4今回は、Sample4としてAlternative構文を解析できるようにします。Comment(0)第012回_構文解析Sample3今回は、Sample3としてRepetition構文を解析できるようにします。Comment(0)第011回_構文解析Sample1および2今回は、新説Visitorパターンの補足Sample共通処理と共通のクラスSample1:単項の構文解析Sample2:連接の構文解析を説明します。前回、EBNFデータツリー(構文)をクラス構造に変換できるようになりました。今回からクラスが表現する構造を利用して入力文字列を解析する方法について検討していきます。今回から構文をどのように解析するかについて検討します。この際、字句解析器についてはまだ説明していませんのでトークンはとれたものと仮定します。字句解析の本体は構文解析の途中でそれぞれ実装します。Comment(0)第008回_無条件字句解析これまで設計の話だけでしたが、今回からソースコードも出てきますからより具体的に説明できると思います。ソースコードの権利関係には気を付けてください。コラムの終りに述べたように、抽出したトークンに問題があるので検討します。前回の抽出する過程でも少し触れましたが、抽出したトークン同士に包含関係があります。Comment(0)第006回_トークンを抽出するこれまで長い語りや既にソフトウェア工学を学んだ方にとっては当たり前の内容が多かったので、少し退屈だったかもしれません。今回からはよりクリエイティブな内容になりますからご期待ください。Comment(0)第005回_XML構文の一覧XML構文の列挙字句解析が生成するトークン粒度を決定するためにXML構文規則をW3C勧告-XML1.1から列挙します。作成すると述べましたので、字句解析から順に検討していきます。トークンの粒度前回述べたように、字句解析はtoken(トークン)を作成します。1回目/2回目は自己紹介や意図について書きました。3回目から技術情報を書くと述べたので今回から読んでくださる方もいると思っています。このコラムではまずXMLパーサを作成します。Comment(0)第002回_テーマについてさて、第1回のコラムで自己紹介を終えました。第2回はコラムのテーマについて述べます。通信系と自動車関連のシステム開発の下請けを経て、現在は家業を継いでIT系の仕事から離れています。本コラムは趣味で研究している内容がメインです。あなたはどこ見ていますか?書籍「誰でも身につく!暗算力」を読んでみた。未成年者略取ムチャか?男気か?部下も立て続けに。利用規約ITmediaはアイティメディア株式会社の登録商標です。