Как обобщить это правило синтаксического анализа, чтобы включить любые глаголы для этого диалекта UML? - PullRequest
1 голос
/ 15 июля 2010

Я хочу создать правило PARSE (use-rule) для включения нескольких глаголов: Соединить , Использовать , Список , Показать и т. д.

use-rule: [
     some [
        copy Actor to 'Connect
        thru 'Connect 'to
        copy UseCase to end (
             append output rejoin ["[" Actor "]-(" "Connect to " UseCase ")"]
        )
     ]
|
    [
        copy Actor to 'Use 
        thru 'Use 
        copy UseCase to end (
            append output rejoin ["[" Actor "]-(" "Use " UseCase ")"]
        )
    ]
|
    [
         copy Actor to 'List
         thru 'List 
         copy UseCase to end (
             append output rejoin ["[" Actor "]-(" "List " UseCase ")"]
         )
    ]
|

;; ...
;; same for Show, Search, Select, Checkout, Pay, Delete, Modify, Add, Manage
;; ...

]

Как сделать его родовым, чтобы он мог принимать любые глаголы?Что-то вроде:

[
    copy Actor to 'Any-Verb
    thru 'Any-Verb copy UseCase to end (
        append output rejoin ["[" Actor "]-(" "Any-Verb " UseCase ")"]
    )
]

Таким образом, мне не нужно будет добавлять новый раздел в правило каждый раз, когда мне нужен новый глагол?

(Примечание: это правилочасть глобального правила разбора, используемого здесь http://askuml.com/blog/e-commerce/)

1 Ответ

0 голосов
/ 16 июля 2010

Вместо того, чтобы делать это, я предпочел бы написать функцию, которая принимает все глаголы в качестве входных данных и генерирует для вас правило разбора. Итак, если есть новый глагол, вы просто добавляете его в список глаголов, а не изменяете правило. И это также позволило бы избежать ошибок ... ваше второе-последнее правило анализа - ошибка?

...