@IT」にはない内容をエンジニアライフで技術紹介するコラム。広く議論する場になることを目指します。AnalyzeSyntax()において、構文をEbnfXXXXXNodeの組合せで表現しました。XMLの構文は数が多く全てを1箇所で実装するとメンテが大変です。(1)でない構文もあり、そのままでは実装できませんので構文を整理します。今後の実装に備えてEBNF構文の表現を拡張します。EBNF構文と対応するEBNFデータツリーの基本クラスの扱いEBNF構文の連接、繰り返し、選択について(はSampleで説明済みですが、一応)説明します。連接EBNFデータツリーの連接は、EbnfSequenceNodeを使って表現します。EBNF構文が読みにくくなるので表記上は特に明記しません。A,B,C繰り返しEBNFデータツリーの繰り返しは、EbnfRepetitionNodeを使って表現し、EBNF構文の繰り返しに対応します。グループに対応します。A,B,C,DEBNF構文と対応するEBNFデータツリーの拡張クラスの定義EBNF構文の*,+,?については、*:EbnfAsterRepetitionNode+:EbnfPlusRepetitionNode?:EbnfQuestionNodeを用意します。次の4つのトークンについては補助的な機能を用意し、EBNF構文上も対応の表現を用意します。1.LITERALトークンLITERALトークンに対して特定の文字パターンを指定する:EbnfLimitedLiteralNodeを用意します。EbnfLimitedLiteralNode2.WORDトークンWORDトークンに対して特定の文字パターンを指定する:EbnfLimitedWordNodeを用意します。EbnfLimitedWordNode3.SYMBOLトークンSYMBOLトークンに対して特定の文字列を指定する:EbnfSymbolNodeを用意します。EbnfSymbolNode4.WHITE_SPACEトークンWHITE_SPACEトークンとして、:EbnfWhiteSpaceNodeを用意します。EbnfSQuestionNodeを用意します。本来出現しないはずのS*とS+は今後の構文の変形の中で出現することになりますので別途用意します。EbnfSPlusNodeXML構文にあってもEBNFデータツリーのクラスとして用意しないもの以下の構文はWORDトークンの文字パターン(正規表現Patternに与える文字列)として表現します。通信系と自動車関連のシステム開発の下請けを経て、現在は家業を継いでIT系の仕事から離れています。本コラムは趣味で研究している内容がメインです。