Thread: Re: [CEDET-devel] semantic-find-doc-snarf-comment problem
Brought to you by:
zappo
From: David P. <Dav...@wa...> - 2002-11-15 14:20:50
|
Eric, > Of course, for the situation in `semantic-find-doc-snarf-comment', > we could probably just replace use of the full lexer with a mini > comment-only lexer common between languages. That may be more useful > and simpler.. Good idea! Following is a patch (and the change log) to semantic-lex.el and semantic-util.el to do that ;-) I also fixed some nasty bugs in semantic-lex! If you don't have objection I will check it in. Thanks! David --------------- Change log: * semantic-lex.el: (semantic-lex-map-symbols): Fixed misplaced right parenthesis. (semantic-lex-keywords) (semantic-lex-types): Fixed missing `setq'. (semantic-comment-lexer): New predefined lexer. * semantic-util.el: (semantic-find-doc-snarf-comment): Use `semantic-comment-lexer as default lexer. --------------- Patch: *** semantic-lex.el.ori=09Wed Oct 2 17:04:38 2002 --- semantic-lex.el=09Fri Nov 15 15:00:22 2002 *************** *** 65,72 **** (mapatoms #'(lambda (symbol) (if (or (null property) (get symbol property)) ! (funcall fun symbol)))) ! table)) ;;; Keyword table handling. ;; --- 65,72 ---- (mapatoms #'(lambda (symbol) (if (or (null property) (get symbol property)) ! (funcall fun symbol))) ! table))) ;;; Keyword table handling. ;; *************** *** 156,162 **** PROPERTY set." (let (keywords) (semantic-lex-map-keywords ! #'(lambda (symbol) (cons symbol keywords)) property) keywords)) ;;; Type table handling. --- 156,163 ---- PROPERTY set." (let (keywords) (semantic-lex-map-keywords ! #'(lambda (symbol) (setq keywords (cons symbol keywords))) ! property) keywords)) ;;; Type table handling. *************** *** 269,278 **** "Return a list of lexical type symbols. If optional PROPERTY is non-nil, return only type symbols which have PROPERTY set." ! (let (tokens) (semantic-lex-map-types ! #'(lambda (symbol) (cons symbol tokens)) property) ! tokens)) ;;;###autoload (defvar semantic-lex-analyzer 'semantic-flex --- 270,280 ---- "Return a list of lexical type symbols. If optional PROPERTY is non-nil, return only type symbols which have PROPERTY set." ! (let (types) (semantic-lex-map-types ! #'(lambda (symbol) (setq types (cons symbol types))) ! property) ! types)) ;;;###autoload (defvar semantic-lex-analyzer 'semantic-flex *************** *** 913,918 **** --- 915,932 ---- =09(error "Strange comment syntax prevents lexical analysis")) (setq end-point (point)))) + ;;; Comment lexer + ;; + (define-lex semantic-comment-lexer + "A simple lexical analyzer that handles comments. + This lexer will only return comment tokens. It is the default lexer + used by `semantic-find-doc-snarf-comment' to snarf up the comment at + point." + semantic-lex-ignore-whitespace + semantic-lex-ignore-newline + semantic-lex-comments + semantic-lex-default-action) + ;;; Test Lexer ;; (define-lex semantic-simple-lexer *** semantic-util.el.ori=09Sat Sep 7 08:35:31 2002 --- semantic-util.el=09Fri Nov 15 14:25:43 2002 *************** *** 1722,1728 **** Attempt to strip out comment syntactic sugar. Argument NOSNARF means don't modify the found text. If NOSNARF is 'flex, then return the flex token." ! (let ((semantic-ignore-comments nil)) (if (eq nosnarf 'flex) =09(car (semantic-lex (point) (1+ (point)))) (let ((ct (semantic-flex-text --- 1722,1729 ---- Attempt to strip out comment syntactic sugar. Argument NOSNARF means don't modify the found text. If NOSNARF is 'flex, then return the flex token." ! (let* ((semantic-ignore-comments nil) ! =09 (semantic-lex-analyzer #'semantic-comment-lexer)) (if (eq nosnarf 'flex) =09(car (semantic-lex (point) (1+ (point)))) (let ((ct (semantic-flex-text |
From: Eric M. L. <er...@si...> - 2002-11-15 20:20:23
|
>>> "David PONCE" <Dav...@wa...> seems to think that: >Eric, > >> Of course, for the situation in `semantic-find-doc-snarf-comment', >> we could probably just replace use of the full lexer with a mini >> comment-only lexer common between languages. That may be more useful >> and simpler.. > >Good idea! Following is a patch (and the change log) to >semantic-lex.el and semantic-util.el to do that ;-) > >I also fixed some nasty bugs in semantic-lex! > >If you don't have objection I will check it in. [ ... ] This looks like good stuff to me. >--- 1722,1729 ---- > Attempt to strip out comment syntactic sugar. > Argument NOSNARF means don't modify the found text. > If NOSNARF is 'flex, then return the flex token." >! (let* ((semantic-ignore-comments nil) >! (semantic-lex-analyzer #'semantic-comment-lexer)) > (if (eq nosnarf 'flex) > (car (semantic-lex (point) (1+ (point)))) > (let ((ct (semantic-flex-text [ ... ] Do we still need `semantic-ignore-comments nil' in here anymore? Thanks! Eric -- Eric Ludlam: za...@gn..., er...@si... Home: http://www.ludlam.net Siege: www.siege-engine.com Emacs: http://cedet.sourceforge.net GNU: www.gnu.org |
From: David P. <dav...@wa...> - 2002-11-15 19:07:42
|
[...] >>If you don't have objection I will check it in. > > [ ... ] > > This looks like good stuff to me. Thanks! I will commit it. [...] >> If NOSNARF is 'flex, then return the flex token." >>! (let* ((semantic-ignore-comments nil) >>! (semantic-lex-analyzer #'semantic-comment-lexer)) [...] > Do we still need `semantic-ignore-comments nil' in here anymore? Yes I think so, in case `semantic-lex-analyzer' is overrode to use `semantic-flex'! IMO we should keep it until we remove the old `semantic-flex' stuff. David |