Re[1]: [CEDET-devel] javascript parser again
Brought to you by:
zappo
From: Eric M. L. <er...@si...> - 2005-01-06 02:29:54
|
>>> Joakim Verona <jo...@ve...> seems to think that: >Ok, so I just added the "block" stuff I didnt quite understand from >the wisent java parser, and now my problem is gone. Hmm. > >The parser is aproaching useful status now I think, if anyone wants to look. Hi, I was able to get your parser to run. You need to start using those block statements you mention above. Here is a patch that got the unmatched-syntax out of my javascript file. You will need to follow that model for all occurrences of a BLOCK, or some parenthetical list. Also, your main program start point needs to only parse one single entity. The wisent harness automatically iterates which improves the robustness of the parser over bogus inputs. You will see that EXPANDFULL macro also does this. Once you have your scripts parsing, you can then create some tags. I added the function tag parse in the patch below. Good Luck Eric --------------- projectile:~/cedet> diff contrib/wisent-javascript-jv.wy /tmp/wisent-javascript-jv.wy.orig 24d23 < %start FormalParameterList 226c225 < Program : SourceElement --- > Program : SourceElements 228,231c227,229 < < ;;SourceElements : SourceElement < ;; | SourceElements SourceElement < ;; ; --- > SourceElements : SourceElement > | SourceElements SourceElement > ; 249,250c247,248 < FunctionDeclaration : FUNCTION VARIABLE FormalParameterListBlock Block < (FUNCTION-TAG $2 nil $3) --- > FunctionDeclaration : FUNCTION VARIABLE OPEN_PARENTHESIS FormalParameterList CLOSE_PARENTHESIS Block > | FUNCTION VARIABLE OPEN_PARENTHESIS CLOSE_PARENTHESIS Block 253,266c251,253 < < FormalParameterListBlock : PAREN_BLOCK < (EXPANDFULL $1 FormalParameterList) < ; < < FormalParameterList: OPEN_PARENTHESIS < () < | VARIABLE < (VARIABLE-TAG $1 nil nil) < | CLOSE_PARENTHESIS < () < | COMMA < () < ; --- > FormalParameterList : VARIABLE > | FormalParameterList COMMA VARIABLE > ; 272,274c259,260 < Block : BRACE_BLOCK < ;; If you want to parse the body of the function < ;; ( EXPANDFULL $1 BlockExpand ) --- > Block : START_BLOCK StatementList END_BLOCK > | START_BLOCK END_BLOCK 277,280d262 < BlockExpand: START_BLOCK StatementList END_BLOCK < | START_BLOCK END_BLOCK < ; < -- 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 |