diff options
Diffstat (limited to 'lisp/cedet/srecode/srt-wy.el')
-rw-r--r-- | lisp/cedet/srecode/srt-wy.el | 64 |
1 files changed, 45 insertions, 19 deletions
diff --git a/lisp/cedet/srecode/srt-wy.el b/lisp/cedet/srecode/srt-wy.el index 8beeb04940d..6f5d73aa312 100644 --- a/lisp/cedet/srecode/srt-wy.el +++ b/lisp/cedet/srecode/srt-wy.el @@ -24,6 +24,7 @@ ;;; Code: (require 'semantic/lex) +(eval-when-compile (require 'semantic/bovine)) ;;; Prologue ;; @@ -38,6 +39,8 @@ ("context" . CONTEXT) ("template" . TEMPLATE) ("sectiondictionary" . SECTIONDICTIONARY) + ("section" . SECTION) + ("end" . END) ("prompt" . PROMPT) ("default" . DEFAULT) ("defaultmacro" . DEFAULTMACRO) @@ -48,6 +51,8 @@ ("defaultmacro" summary "prompt <symbol> \"Describe Symbol: \" [default[macro] <lispsym>|\"valuetext\"] [read <lispsym>]") ("default" summary "prompt <symbol> \"Describe Symbol: \" [default[macro] <lispsym>|\"valuetext\"] [read <lispsym>]") ("prompt" summary "prompt <symbol> \"Describe Symbol: \" [default[macro] <lispsym>|\"valuetext\"] [read <lispsym>]") + ("end" summary "section ... end") + ("section" summary "section <name>\\n <dictionary entries>\\n end") ("sectiondictionary" summary "sectiondictionary <name>\\n <dictionary entries>") ("template" summary "template <name>\\n <template definition>") ("context" summary "context <name>") @@ -73,6 +78,7 @@ '(("number" :declared t) ("string" :declared t) ("symbol" :declared t) + ("property" syntax ":\\(\\w\\|\\s_\\)*") ("property" :declared t) ("newline" :declared t) ("punctuation" syntax "\\s.+") @@ -85,7 +91,7 @@ (eval-when-compile (require 'semantic/wisent/comp)) (wisent-compile-grammar - '((SET SHOW MACRO CONTEXT TEMPLATE SECTIONDICTIONARY PROMPT DEFAULT DEFAULTMACRO READ BIND newline TEMPLATE_BLOCK property symbol string number) + '((SET SHOW MACRO CONTEXT TEMPLATE SECTIONDICTIONARY SECTION END PROMPT DEFAULT DEFAULTMACRO READ BIND newline TEMPLATE_BLOCK property symbol string number) nil (template_file ((newline) @@ -141,7 +147,7 @@ (cons 'macro (read $2)))) (template - ((TEMPLATE templatename opt-dynamic-arguments newline opt-string opt-section-dictionaries TEMPLATE_BLOCK newline opt-bind) + ((TEMPLATE templatename opt-dynamic-arguments newline opt-string section-dictionary-list TEMPLATE_BLOCK newline opt-bind) (wisent-raw-tag (semantic-tag-new-function $2 nil $3 :documentation $5 :code $7 :dictionaries $6 :binding $9)))) (templatename @@ -162,26 +168,40 @@ ((string newline) (read $1)) (nil nil)) - (opt-section-dictionaries - (nil nil) - ((section-dictionary-list))) (section-dictionary-list - ((one-section-dictionary) - (list $1)) - ((section-dictionary-list one-section-dictionary) + (nil nil) + ((section-dictionary-list flat-section-dictionary) + (append $1 + (list $2))) + ((section-dictionary-list section-dictionary) (append $1 (list $2)))) - (one-section-dictionary - ((SECTIONDICTIONARY string newline variable-list) + (flat-section-dictionary + ((SECTIONDICTIONARY string newline flat-dictionary-entry-list) + (cons + (read $2) + $4))) + (flat-dictionary-entry-list + (nil nil) + ((flat-dictionary-entry-list flat-dictionary-entry) + (append $1 $2))) + (flat-dictionary-entry + ((variable) + (wisent-cook-tag $1))) + (section-dictionary + ((SECTION string newline dictionary-entry-list END newline) (cons (read $2) $4))) - (variable-list + (dictionary-entry-list + (nil nil) + ((dictionary-entry-list dictionary-entry) + (append $1 $2))) + (dictionary-entry ((variable) (wisent-cook-tag $1)) - ((variable-list variable) - (append $1 - (wisent-cook-tag $2)))) + ((section-dictionary) + (list $1))) (opt-bind ((BIND string newline) (read $2)) @@ -205,12 +225,12 @@ ;;; Analyzers - -(define-lex-string-type-analyzer srecode-template-wy--<punctuation>-string-analyzer - "string analyzer for <punctuation> tokens." - "\\s.+" +;; +(define-lex-regex-type-analyzer srecode-template-wy--<property>-regexp-analyzer + "regexp analyzer for <property> tokens." + ":\\(\\w\\|\\s_\\)*" nil - 'punctuation) + 'property) (define-lex-regex-type-analyzer srecode-template-wy--<symbol>-regexp-analyzer "regexp analyzer for <symbol> tokens." @@ -224,6 +244,12 @@ nil 'number) +(define-lex-string-type-analyzer srecode-template-wy--<punctuation>-string-analyzer + "string analyzer for <punctuation> tokens." + "\\s.+" + nil + 'punctuation) + (define-lex-sexp-type-analyzer srecode-template-wy--<string>-sexp-analyzer "sexp analyzer for <string> tokens." "\\s\"" |