私は、次のソースを解析したいと思います:Instaparseでオプションの部品を扱うにはどうすればいいですか?
問題は用途のリストがつくれなくなければならないことを、です。私は[用途]への使用を変更しようとしましたが、たとえ存在していたとしても、それは私にemtpyの使用リストを与えるでしょう。
ところで:
[:S
[:unit-decl "unit" [:identifier "SystemGeneralAR"]]
[:interface
[:uses
[:uses_list
[:uses_element [:identifier "AbstractRecord"]]
[:uses_element [:identifier "OracleData"]]
[:uses_element [:identifier "systemgeneral_auto_gen"]]]]]
[:implementation
[:impl_body [:uses [:uses_list [:uses_element [:identifier "testa"]] [:uses_element [:identifier "testb"]]]]]]]
:ちょうどそれがどのように見える使用して
[:S [:unit-decl "unit" [:identifier "SystemGeneralAR"]] [:interface]
[:implementation [:impl_body]]]
:
S = unit-decl interface<any>*implementation<any>*<'.'>
unit-decl = 'unit'<space>*identifier<space>*<';'>
unit-name = identifier
interface = <interface_dec> uses
interface_dec = <space>*'interface'<space>*
implementation = <'implementation'>impl_body
impl_body = uses
uses = <space>*<'uses'><space>*uses_list
uses_list = (uses_element<','>)*(uses_element<';'>)
uses_element = <space>*identifier<space>*
identifier = #'[A-Za-z|_]+'
space = #' '
any = #'[A-Za-z|_| |,|;|=|(|)|:]'
結果の解析ツリー、用途*はこのようになりますと:私の文法は次のようになります
ユーザが0以上のカーディナリティを持つようにする(例: 'uses *') –
usesを使用するように変更した場合、ソルーズコードに1があってもuses_listは空です* – rogergl
あなたの質問には、 ? –