你可能会考虑
Modelling Office Processes with Functional Parsers
Technical report UU-CS-1994-50
Gert Florijn
Utrecht University
[http://www.serc.nl/people/florijn/papers/UU-CS-1994-50.html][1]
这是一个片段:
3.2. 第一个例子:费用报销
考虑一个报销差旅费的程序。它由必须指定旅行细节的用户发起,特别是所花费的钱。然后将该规范发送给用户的经理,该经理必须批准报销,但也可以拒绝报销。如果获得批准,管理部门将把钱转给员工。稍微简化一下,我们可以对这个过程的顶层进行建模,如下所示:
expenseclaim = arec "expenseclaim"
(serie [expenseform, inspect, oneof [reimbursed, refused]])
reimbursed = arec "reimbursed" (serie [approved, reimbursement])
填写费用表意味着提供几条信息,进一步细分为个人信息和索赔本身的信息,例如费用所针对的项目、所涉及的差旅费金额、会议出席费和其他费用:
expenseform = arec "expenseform" (serie [personal, claim])
personal = arec "personal" (serie [requester,department,bankaccount])
claim = arec "claim" (serie [project,travel,conference,other])
中的其他解析器被建模为基本动作解析器,即
inspect = actl "inspect" approved = actl "approved"
refused = actl "refused" requester = actl "requester"
department = actl "department" bankaccount = actl "bankaccount"
project = actl "project" travel = actl "travel"
conference = actl "conference" other = actl "other"
reimbursement = actl "reimbursement"