0
我需要從腳本的一組輸入中爲例程和子例程生成一種腳本(星號OBD腳本),這是一種shell腳本。我需要用Java來完成。代碼生成使用哪種設計模式?我試圖模板模式和命令模式,但一半迷茫,停止。任何想法,設計,文檔和其他人將不勝感激。代碼生成 - 設計模式
下面是示例代碼。 注1:<>是作爲輸入提供的參數。 注2:嵌套的dtmf信息,取決於子程序的編碼。 讓我知道是否需要更多解釋。
[<context_name>]
exten => answered,1,set(actionid=actionid:${ACTIONID})
same => n, wait(1)
same => n, read(input,<file path>/<file>,1,,,10)
same => n, gotoif($[${input}=1]?1pressed,1)
same => n, gotoif($[${input}=2]?2pressed,1)
same => n, noop("No/Invalid input")
same => n,hangup
exten => 1pressed,1,read(inputsub,<file path>/<play1>,1,,,10)
same => n, gotoif($[${input}=1]?1subpressed,1)
same => n, gotoif($[${input}=2]?2subpressed,1)
same => n, noop("No/Invalid input")
same => n,hangup
same => n(1subpressed),playback(<file path>/<playsub11>)
same => n,hangup
same => n(2subpressed),playback(<file path>/<playsub12>)
same => n,hangup
exten => 2pressed,1,playback(<file path>/<play2>)
same => n,hangup
exten =>h,1, set(CDR(userfield)=$actionid)
same => n, hangup
完全取決於代碼生成過程的規範。例如,如果您只需要吐出總是相同的代碼單元,那麼您就會採用其他技術,而不是生成針對給定語法的解析器的代碼。所以,不知道輸入是什麼,以及生成的腳本應該覆蓋什麼,沒有人能提供一個好的答案。發佈迄今爲止已經嘗試過的代碼可能是一個好主意,不管它給你帶來多麼困惑。 – TheBlastOne
我編輯了提供要生成的示例輸出腳本代碼的問題。 –