2008-01-16 01:04:42 -05:00
										 
									 
								 
							 | 
							
								
							 | 
							
								
							 | 
							
							
								USING: xmode.loader.syntax xmode.tokens xmode.rules
							 | 
						
					
						
							
								
									
										
										
										
											2009-02-05 22:17:03 -05:00
										 
									 
								 
							 | 
							
								
									
										
									
								
							 | 
							
								
							 | 
							
							
								xmode.keyword-map xml.data xml.traversal xml assocs kernel
							 | 
						
					
						
							
								
									
										
										
										
											2008-01-16 01:04:42 -05:00
										 
									 
								 
							 | 
							
								
							 | 
							
								
							 | 
							
							
								combinators sequences math.parser namespaces parser
							 | 
						
					
						
							
								
									
										
										
										
											2009-02-12 21:42:32 -05:00
										 
									 
								 
							 | 
							
								
									
										
									
								
							 | 
							
								
							 | 
							
							
								xmode.utilities regexp io.files accessors xml.syntax ;
							 | 
						
					
						
							
								
									
										
										
										
											2007-11-28 23:34:11 -05:00
										 
									 
								 
							 | 
							
								
							 | 
							
								
							 | 
							
							
								IN: xmode.loader
							 | 
						
					
						
							| 
								
							 | 
							
								
							 | 
							
								
							 | 
							
							
								
							 | 
						
					
						
							| 
								
							 | 
							
								
							 | 
							
								
							 | 
							
							
								! Based on org.gjt.sp.jedit.XModeHandler
							 | 
						
					
						
							| 
								
							 | 
							
								
							 | 
							
								
							 | 
							
							
								
							 | 
						
					
						
							| 
								
							 | 
							
								
							 | 
							
								
							 | 
							
							
								! RULES and its children
							 | 
						
					
						
							
								
									
										
										
										
											2009-02-12 14:18:43 -05:00
										 
									 
								 
							 | 
							
								
									
										
									
								
							 | 
							
								
							 | 
							
							
								TAGS: parse-rule-tag ( rule-set tag -- )
							 | 
						
					
						
							
								
									
										
										
										
											2007-11-28 23:34:11 -05:00
										 
									 
								 
							 | 
							
								
							 | 
							
								
							 | 
							
							
								
							 | 
						
					
						
							
								
									
										
										
										
											2009-02-12 14:18:43 -05:00
										 
									 
								 
							 | 
							
								
									
										
									
								
							 | 
							
								
							 | 
							
							
								TAG: PROPS parse-rule-tag
							 | 
						
					
						
							
								
									
										
										
										
											2008-08-30 21:32:26 -04:00
										 
									 
								 
							 | 
							
								
							 | 
							
								
							 | 
							
							
								    parse-props-tag >>props drop ;
							 | 
						
					
						
							
								
									
										
										
										
											2007-11-28 23:34:11 -05:00
										 
									 
								 
							 | 
							
								
							 | 
							
								
							 | 
							
							
								
							 | 
						
					
						
							
								
									
										
										
										
											2009-02-12 14:18:43 -05:00
										 
									 
								 
							 | 
							
								
									
										
									
								
							 | 
							
								
							 | 
							
							
								TAG: IMPORT parse-rule-tag
							 | 
						
					
						
							
								
									
										
										
										
											2009-01-28 15:33:33 -05:00
										 
									 
								 
							 | 
							
								
									
										
									
								
							 | 
							
								
							 | 
							
							
								    "DELEGATE" attr swap import-rule-set ;
							 | 
						
					
						
							
								
									
										
										
										
											2007-11-28 23:34:11 -05:00
										 
									 
								 
							 | 
							
								
							 | 
							
								
							 | 
							
							
								
							 | 
						
					
						
							
								
									
										
										
										
											2009-02-12 14:18:43 -05:00
										 
									 
								 
							 | 
							
								
									
										
									
								
							 | 
							
								
							 | 
							
							
								TAG: TERMINATE parse-rule-tag
							 | 
						
					
						
							
								
									
										
										
										
											2009-01-28 15:33:33 -05:00
										 
									 
								 
							 | 
							
								
									
										
									
								
							 | 
							
								
							 | 
							
							
								    "AT_CHAR" attr string>number >>terminate-char drop ;
							 | 
						
					
						
							
								
									
										
										
										
											2007-11-28 23:34:11 -05:00
										 
									 
								 
							 | 
							
								
							 | 
							
								
							 | 
							
							
								
							 | 
						
					
						
							
								
									
										
										
										
											2009-02-12 14:18:43 -05:00
										 
									 
								 
							 | 
							
								
									
										
									
								
							 | 
							
								
							 | 
							
							
								RULE: SEQ seq-rule parse-rule-tag
							 | 
						
					
						
							
								
									
										
										
										
											2007-11-28 23:34:11 -05:00
										 
									 
								 
							 | 
							
								
							 | 
							
								
							 | 
							
							
								    shared-tag-attrs delegate-attr literal-start ;
							 | 
						
					
						
							| 
								
							 | 
							
								
							 | 
							
								
							 | 
							
							
								
							 | 
						
					
						
							
								
									
										
										
										
											2009-02-12 14:18:43 -05:00
										 
									 
								 
							 | 
							
								
									
										
									
								
							 | 
							
								
							 | 
							
							
								RULE: SEQ_REGEXP seq-rule parse-rule-tag
							 | 
						
					
						
							
								
									
										
										
										
											2007-11-28 23:34:11 -05:00
										 
									 
								 
							 | 
							
								
							 | 
							
								
							 | 
							
							
								    shared-tag-attrs delegate-attr regexp-attr regexp-start ;
							 | 
						
					
						
							| 
								
							 | 
							
								
							 | 
							
								
							 | 
							
							
								
							 | 
						
					
						
							
								
									
										
										
										
											2009-02-12 14:18:43 -05:00
										 
									 
								 
							 | 
							
								
									
										
									
								
							 | 
							
								
							 | 
							
							
								RULE: SPAN span-rule parse-rule-tag
							 | 
						
					
						
							
								
									
										
										
										
											2007-11-28 23:34:11 -05:00
										 
									 
								 
							 | 
							
								
							 | 
							
								
							 | 
							
							
								    shared-tag-attrs delegate-attr match-type-attr span-attrs parse-begin/end-tags init-span-tag ;
							 | 
						
					
						
							| 
								
							 | 
							
								
							 | 
							
								
							 | 
							
							
								
							 | 
						
					
						
							
								
									
										
										
										
											2009-02-12 14:18:43 -05:00
										 
									 
								 
							 | 
							
								
									
										
									
								
							 | 
							
								
							 | 
							
							
								RULE: SPAN_REGEXP span-rule parse-rule-tag
							 | 
						
					
						
							
								
									
										
										
										
											2007-11-28 23:34:11 -05:00
										 
									 
								 
							 | 
							
								
							 | 
							
								
							 | 
							
							
								    shared-tag-attrs delegate-attr match-type-attr span-attrs regexp-attr parse-begin/end-tags init-span-tag ;
							 | 
						
					
						
							| 
								
							 | 
							
								
							 | 
							
								
							 | 
							
							
								
							 | 
						
					
						
							
								
									
										
										
										
											2009-02-12 14:18:43 -05:00
										 
									 
								 
							 | 
							
								
									
										
									
								
							 | 
							
								
							 | 
							
							
								RULE: EOL_SPAN eol-span-rule parse-rule-tag
							 | 
						
					
						
							
								
									
										
										
										
											2007-11-28 23:34:11 -05:00
										 
									 
								 
							 | 
							
								
							 | 
							
								
							 | 
							
							
								    shared-tag-attrs delegate-attr match-type-attr literal-start init-eol-span-tag ;
							 | 
						
					
						
							| 
								
							 | 
							
								
							 | 
							
								
							 | 
							
							
								
							 | 
						
					
						
							
								
									
										
										
										
											2009-02-12 14:18:43 -05:00
										 
									 
								 
							 | 
							
								
									
										
									
								
							 | 
							
								
							 | 
							
							
								RULE: EOL_SPAN_REGEXP eol-span-rule parse-rule-tag
							 | 
						
					
						
							
								
									
										
										
										
											2007-11-28 23:34:11 -05:00
										 
									 
								 
							 | 
							
								
							 | 
							
								
							 | 
							
							
								    shared-tag-attrs delegate-attr match-type-attr regexp-attr regexp-start init-eol-span-tag ;
							 | 
						
					
						
							| 
								
							 | 
							
								
							 | 
							
								
							 | 
							
							
								
							 | 
						
					
						
							
								
									
										
										
										
											2009-02-12 14:18:43 -05:00
										 
									 
								 
							 | 
							
								
									
										
									
								
							 | 
							
								
							 | 
							
							
								RULE: MARK_FOLLOWING mark-following-rule parse-rule-tag
							 | 
						
					
						
							
								
									
										
										
										
											2007-11-28 23:34:11 -05:00
										 
									 
								 
							 | 
							
								
							 | 
							
								
							 | 
							
							
								    shared-tag-attrs match-type-attr literal-start ;
							 | 
						
					
						
							| 
								
							 | 
							
								
							 | 
							
								
							 | 
							
							
								
							 | 
						
					
						
							
								
									
										
										
										
											2009-02-12 14:18:43 -05:00
										 
									 
								 
							 | 
							
								
									
										
									
								
							 | 
							
								
							 | 
							
							
								RULE: MARK_PREVIOUS mark-previous-rule parse-rule-tag
							 | 
						
					
						
							
								
									
										
										
										
											2007-11-28 23:34:11 -05:00
										 
									 
								 
							 | 
							
								
							 | 
							
								
							 | 
							
							
								    shared-tag-attrs match-type-attr literal-start ;
							 | 
						
					
						
							| 
								
							 | 
							
								
							 | 
							
								
							 | 
							
							
								
							 | 
						
					
						
							
								
									
										
										
										
											2009-02-12 14:18:43 -05:00
										 
									 
								 
							 | 
							
								
									
										
									
								
							 | 
							
								
							 | 
							
							
								TAG: KEYWORDS parse-rule-tag
							 | 
						
					
						
							
								
									
										
										
										
											2009-01-30 20:34:31 -05:00
										 
									 
								 
							 | 
							
								
									
										
									
								
							 | 
							
								
							 | 
							
							
								    rule-set get ignore-case?>> <keyword-map>
							 | 
						
					
						
							
								
									
										
										
										
											2009-02-12 14:18:43 -05:00
										 
									 
								 
							 | 
							
								
									
										
									
								
							 | 
							
								
							 | 
							
							
								    swap children-tags [ over parse-keyword-tag ] each
							 | 
						
					
						
							
								
									
										
										
										
											2008-08-30 21:53:59 -04:00
										 
									 
								 
							 | 
							
								
							 | 
							
								
							 | 
							
							
								    swap (>>keywords) ;
							 | 
						
					
						
							
								
									
										
										
										
											2007-11-28 23:34:11 -05:00
										 
									 
								 
							 | 
							
								
							 | 
							
								
							 | 
							
							
								
							 | 
						
					
						
							
								
									
										
										
										
											2008-06-09 03:14:14 -04:00
										 
									 
								 
							 | 
							
								
							 | 
							
								
							 | 
							
							
								: ?<regexp> ( string/f -- regexp/f )
							 | 
						
					
						
							
								
									
										
										
										
											2009-02-12 21:42:32 -05:00
										 
									 
								 
							 | 
							
								
									
										
									
								
							 | 
							
								
							 | 
							
							
								    dup [ rule-set get ignore-case?>> <?insensitive-regexp> ] when ;
							 | 
						
					
						
							
								
									
										
										
										
											2007-12-06 00:23:18 -05:00
										 
									 
								 
							 | 
							
								
							 | 
							
								
							 | 
							
							
								
							 | 
						
					
						
							
								
									
										
										
										
											2007-11-28 23:34:11 -05:00
										 
									 
								 
							 | 
							
								
							 | 
							
								
							 | 
							
							
								: (parse-rules-tag) ( tag -- rule-set )
							 | 
						
					
						
							
								
									
										
										
										
											2009-01-30 20:34:31 -05:00
										 
									 
								 
							 | 
							
								
									
										
									
								
							 | 
							
								
							 | 
							
							
								    <rule-set> dup rule-set set
							 | 
						
					
						
							
								
									
										
										
										
											2007-11-28 23:34:11 -05:00
										 
									 
								 
							 | 
							
								
							 | 
							
								
							 | 
							
							
								    {
							 | 
						
					
						
							
								
									
										
										
										
											2008-08-30 21:32:26 -04:00
										 
									 
								 
							 | 
							
								
							 | 
							
								
							 | 
							
							
								        { "SET" string>rule-set-name (>>name) }
							 | 
						
					
						
							| 
								
							 | 
							
								
							 | 
							
								
							 | 
							
							
								        { "IGNORE_CASE" string>boolean (>>ignore-case?) }
							 | 
						
					
						
							| 
								
							 | 
							
								
							 | 
							
								
							 | 
							
							
								        { "HIGHLIGHT_DIGITS" string>boolean (>>highlight-digits?) }
							 | 
						
					
						
							| 
								
							 | 
							
								
							 | 
							
								
							 | 
							
							
								        { "DIGIT_RE" ?<regexp> (>>digit-re) }
							 | 
						
					
						
							
								
									
										
										
										
											2007-11-28 23:34:11 -05:00
										 
									 
								 
							 | 
							
								
							 | 
							
								
							 | 
							
							
								        { "ESCAPE" f add-escape-rule }
							 | 
						
					
						
							
								
									
										
										
										
											2008-08-30 21:32:26 -04:00
										 
									 
								 
							 | 
							
								
							 | 
							
								
							 | 
							
							
								        { "DEFAULT" string>token (>>default) }
							 | 
						
					
						
							| 
								
							 | 
							
								
							 | 
							
								
							 | 
							
							
								        { "NO_WORD_SEP" f (>>no-word-sep) }
							 | 
						
					
						
							
								
									
										
										
										
											2007-11-28 23:34:11 -05:00
										 
									 
								 
							 | 
							
								
							 | 
							
								
							 | 
							
							
								    } init-from-tag ;
							 | 
						
					
						
							| 
								
							 | 
							
								
							 | 
							
								
							 | 
							
							
								
							 | 
						
					
						
							| 
								
							 | 
							
								
							 | 
							
								
							 | 
							
							
								: parse-rules-tag ( tag -- rule-set )
							 | 
						
					
						
							
								
									
										
										
										
											2009-01-30 20:34:31 -05:00
										 
									 
								 
							 | 
							
								
									
										
									
								
							 | 
							
								
							 | 
							
							
								    [
							 | 
						
					
						
							
								
									
										
										
										
											2009-02-12 14:18:43 -05:00
										 
									 
								 
							 | 
							
								
									
										
									
								
							 | 
							
								
							 | 
							
							
								        [ (parse-rules-tag) ] [ children-tags ] bi
							 | 
						
					
						
							
								
									
										
										
										
											2009-01-30 20:34:31 -05:00
										 
									 
								 
							 | 
							
								
									
										
									
								
							 | 
							
								
							 | 
							
							
								        [ parse-rule-tag ] with each
							 | 
						
					
						
							| 
								
							 | 
							
								
							 | 
							
								
							 | 
							
							
								        rule-set get
							 | 
						
					
						
							| 
								
							 | 
							
								
							 | 
							
								
							 | 
							
							
								    ] with-scope ;
							 | 
						
					
						
							
								
									
										
										
										
											2007-11-28 23:34:11 -05:00
										 
									 
								 
							 | 
							
								
							 | 
							
								
							 | 
							
							
								
							 | 
						
					
						
							| 
								
							 | 
							
								
							 | 
							
								
							 | 
							
							
								: merge-rule-set-props ( props rule-set -- )
							 | 
						
					
						
							
								
									
										
										
										
											2008-08-30 21:53:59 -04:00
										 
									 
								 
							 | 
							
								
							 | 
							
								
							 | 
							
							
								    [ assoc-union ] change-props drop ;
							 | 
						
					
						
							
								
									
										
										
										
											2007-11-28 23:34:11 -05:00
										 
									 
								 
							 | 
							
								
							 | 
							
								
							 | 
							
							
								
							 | 
						
					
						
							| 
								
							 | 
							
								
							 | 
							
								
							 | 
							
							
								! Top-level entry points
							 | 
						
					
						
							| 
								
							 | 
							
								
							 | 
							
								
							 | 
							
							
								: parse-mode-tag ( tag -- rule-sets )
							 | 
						
					
						
							| 
								
							 | 
							
								
							 | 
							
								
							 | 
							
							
								    dup "RULES" tags-named [
							 | 
						
					
						
							
								
									
										
										
										
											2008-08-30 22:10:02 -04:00
										 
									 
								 
							 | 
							
								
							 | 
							
								
							 | 
							
							
								        parse-rules-tag dup name>> swap
							 | 
						
					
						
							
								
									
										
										
										
											2007-11-28 23:34:11 -05:00
										 
									 
								 
							 | 
							
								
							 | 
							
								
							 | 
							
							
								    ] H{ } map>assoc
							 | 
						
					
						
							| 
								
							 | 
							
								
							 | 
							
								
							 | 
							
							
								    swap "PROPS" tag-named [
							 | 
						
					
						
							| 
								
							 | 
							
								
							 | 
							
								
							 | 
							
							
								        parse-props-tag over values
							 | 
						
					
						
							
								
									
										
										
										
											2008-01-09 17:36:30 -05:00
										 
									 
								 
							 | 
							
								
							 | 
							
								
							 | 
							
							
								        [ merge-rule-set-props ] with each
							 | 
						
					
						
							
								
									
										
										
										
											2007-11-28 23:34:11 -05:00
										 
									 
								 
							 | 
							
								
							 | 
							
								
							 | 
							
							
								    ] when* ;
							 | 
						
					
						
							| 
								
							 | 
							
								
							 | 
							
								
							 | 
							
							
								
							 | 
						
					
						
							
								
									
										
										
										
											2009-02-15 21:45:06 -05:00
										 
									 
								 
							 | 
							
								
									
										
									
								
							 | 
							
								
							 | 
							
							
								: parse-mode ( filename -- rule-sets )
							 | 
						
					
						
							| 
								
							 | 
							
								
							 | 
							
								
							 | 
							
							
								    file>xml parse-mode-tag ;
							 |