2010-07-15 3 views
1

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

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/)

ответ

0

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

+0

, что не является для меня достаточным для меня. Я хочу, чтобы он работал на любой глагол, который я не знаю заранее. –

+0

является вашим вторым последним правилом разбора ошибки? Я не понимаю, что вы имеете в виду? –

+0

«копировать актера в« Добавить через «Connect», чтобы скопировать UseCase для завершения (добавить вывод ... », который отличается от любого другого правила, которое у вас есть. –

 Смежные вопросы

  • Нет связанных вопросов^_^