mirror of
				https://github.com/KevinMidboe/linguist.git
				synced 2025-10-29 17:50:22 +00:00 
			
		
		
		
	Sample file for Rebol .r extension
This commit is contained in:
		
							
								
								
									
										217
									
								
								samples/Rebol/GCP-datatypes.r
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										217
									
								
								samples/Rebol/GCP-datatypes.r
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,217 @@ | ||||
| Rebol [Title: "Google Code Prettify Datatypes"] | ||||
|  | ||||
| re: func [s /i] [rejoin compose ["/^^" (s) "/" either i ["i"][""]]]   ; little helper for standard grammar regex used | ||||
|  | ||||
| date-re: "\d{1,2}[\-\/](\d{1,2}|\w{3,9})[\-\/]\d{2,4}"  ; naive date! regex | ||||
|  | ||||
| string-re: {\"(?:[^^\"\\]|\\[\s\S])*(?:\"|$)} | ||||
| brace-re:  "\{(?:[^^\}\^^]|\^^[\s\S])*(?:\}|$)"   ; TODO - could build this from string-re | ||||
| block-re:  "\[(?:[^^\]\\]|\\[\s\S])*(?:\]|$)" | ||||
| tag-re:    "\<(?:[^^\>\\]|\\[\s\S])*(?:\>|$)"   ; TODO - could build this from string-re | ||||
| number-re: "(?:[.,]\d+|\d+['\d]*(?:[.,]\d*)?)(?:e[-+]?\d+)?" | ||||
| word-re: "[A-Za-z=\-?!_*+.`~&][A-Za-z0-9=\-!?_*+.`~&]*" | ||||
|  | ||||
| |: "|" | ||||
|  | ||||
| types: compose/deep [ | ||||
|     ;  comments | ||||
|     comment! [ | ||||
|         PR_LITERAL | ||||
|     ;      comment_shebang -- Script tag (shebang!) | ||||
|         (re/i "#![^^\r\n]+") | ||||
|     ;      comment_line -- A line comment that starts with ; | ||||
|         (re ";[^^\r\n]*") | ||||
|     ;      comment_multiline_string -- Multi-line comment | ||||
|         (re ["comment\s*" brace-re]) | ||||
|     ;      comment_multiline_block | ||||
|         (re ["comment\s*" block-re]) | ||||
|     ] | ||||
|     ;  type_literal | ||||
|      | ||||
|     ;  logic | ||||
|     logic! [ | ||||
|         PR_LITERAL | ||||
|         (re "#\[(?:true|false|yes|no|on|off)\]") | ||||
|     ] | ||||
|      | ||||
|     ;  none | ||||
|     none! [ | ||||
|         PR_LITERAL | ||||
|         (re "#\[none\]") | ||||
|     ] | ||||
|      | ||||
|     ;  strings | ||||
|     ;      character | ||||
|     char! [ | ||||
|         PR_LITERAL | ||||
|         (re/i "#^"(?:[^^^^^"]|\^^(?:[\^^^"\/\-A-Z]|\((?:[0-9A-F]{2,4}|tab|newline)\)))^"") | ||||
|     ] | ||||
|      | ||||
|     string! [ | ||||
|         PR_LITERAL | ||||
|     ;      string_quoted | ||||
|         (re "^"(?:[^^^"\\]|\\[\s\S])*(?:^"|$)") | ||||
|     ;      string_multiline -- Multi-line string {braces} - allowed within:  { ^{ ^} | ||||
|         (re brace-re) | ||||
|     ] | ||||
|      | ||||
|     ;      string_tag_comment | ||||
|     comment! [ | ||||
|         PR_LITERAL | ||||
|         (re "<!--(?:[^^-]|-(?!->))+-->") | ||||
|     ] | ||||
|      | ||||
|     ;      string_tag | ||||
|     tag! [ | ||||
|         PR_LITERAL | ||||
|         (re "<[^^^"<=>\x00\x09\x0A\x0D\x20\u005D\u007F][^^>\x00]*>") | ||||
|     ] | ||||
|      | ||||
|     file! [ | ||||
|         PR_LITERAL | ||||
|     ;      string_file | ||||
|         (re "%(?:[a-zA-Z?!.*&|=_~0-9'+\-,:\/\\@]|%[0-9A-F]{2})+") | ||||
|     ;      string_file_quoted | ||||
|         (re "%^"(?:[^^^"])*^"") | ||||
|     ] | ||||
|      | ||||
|     url! [ | ||||
|         PR_LITERAL | ||||
|     ;      string_url | ||||
|         (re "[a-zA-Z?!.*&|=_~][a-zA-Z?!.*&|=_~0-9'+-,]*:(?:[a-zA-Z?!.*&|=_~0-9'+\-,:\/@]|%[0-9A-F]{2})+") | ||||
|     ] | ||||
|      | ||||
|     email! [ | ||||
|         PR_LITERAL | ||||
|     ;      string_email | ||||
|         (re "[\w\d\+\-\.]+\@[\w\d\+\-\.]+\b") | ||||
|     ] | ||||
|      | ||||
|     binary! [ | ||||
|         PR_LITERAL | ||||
|     ;      binary_base_two | ||||
|         (re "2#\{(?:[01\r\n\t ])*\}") | ||||
|     ;      binary_base_sixty_four | ||||
|         (re "64#\{(?:[0-9+\/a-yA-Z=\r\n\t ])*\}") | ||||
|     ;      binary_base_sixteen | ||||
|         (re/i "(?:16)?#\{(?:[0-9a-f\r\n\t ])*\}") | ||||
|     ] | ||||
|      | ||||
|     issue! [ | ||||
|         PR_LITERAL | ||||
|     ;      string_issue | ||||
|         (re "#[\w\d\-]+(?=[\s\n\t]|$)") | ||||
|     ] | ||||
|      | ||||
|     ;  values | ||||
|     date! [ | ||||
|         PR_LITERAL | ||||
|     ;      value_date | ||||
|         (re [date-re "\/\d{1,2}\:\d{1,2}\:\d{1,2}(\+|\-)\d{1,2}\:(00|30)\b"]) | ||||
|         (re [date-re "\/\d{1,2}\:\d{1,2}\:\d{1,2}\b"]) | ||||
|         (re [date-re "\b"]) | ||||
|         (re "\d{2,4}[\/\-](\d{1,2}|\w{3,9})[\/\-]\d{1,2}(?:\/\d{1,2}\:\d{1,2}(?:\:\d{1,2})?(?:[-+]\d{1,2}:[03]0)?)?") | ||||
|     ] | ||||
|      | ||||
|     time! [ | ||||
|         PR_LITERAL | ||||
|     ;      value_time | ||||
|         (re "[-+]?\d{1,2}:\d{1,2}(?::\d{1,2}(?:\.\d+)?)?\b") | ||||
|     ] | ||||
|      | ||||
|     tuple! [ | ||||
|         PR_LITERAL | ||||
|     ;      value_tuple | ||||
|         (re "\d+(?:\.\d+){2,9}") | ||||
|     ] | ||||
|      | ||||
|     pair! [ | ||||
|         PR_LITERAL | ||||
|     ;      value_pair | ||||
|         (re/i ["[-+]?" number-re "x[-+]?" number-re]) | ||||
|     ] | ||||
|     ;  [PR['PR_LITERAL'], /^\d(?:[\.\,\'\d]*)x\d(?:[\.\,\'\d]*)\b/] | ||||
|      | ||||
|     money! [ | ||||
|         PR_LITERAL | ||||
|     ;      value_money | ||||
|         (re ["[-+]?[A-Z]{0,3}\$" number-re]) | ||||
|         ;  [PR['PR_LITERAL'], /^\$\d[\d\.\,\']*\b/] | ||||
|         ;  [PR['PR_LITERAL'], /^[\+\-\w]{1,4}\$\d[\d\.\,\']*\b/] | ||||
|     ] | ||||
|      | ||||
|     ;      value_number | ||||
|     number! [ | ||||
|         PR_LITERAL | ||||
|         (re/i ["[-+]?" number-re "%?"]) | ||||
|         ;  percent! [PR_LITERAL (re "(\+|\-|\d)(?:[\.\,\'\d]*)\%\b")] | ||||
|         ;  decimal! [PR_LITERAL (re "(\+|\-|\d)\d*(?:[\.\,]\d+)\b")] | ||||
|         ;  integer! [PR_LITERAL (re "(\+|\-|\d)\d*\b")] | ||||
|     ] | ||||
|      | ||||
|     ;  words | ||||
|     datatype! [ | ||||
|         PR_LITERAL | ||||
|     ;      word_datatype | ||||
|         (re "(?:[A-Za-z\-]+)\!(?![A-Za-z0-9\-])") | ||||
|     ] | ||||
|      | ||||
|     set-word! [ | ||||
|         PR_LITERAL | ||||
|     ;      word_set | ||||
|         (re [word-re "(?:\/" word-re "|\/\d+)*:"]) | ||||
|     ] | ||||
|      | ||||
|     ;  -- get-word! | ||||
|     get-word! [ | ||||
|         PR_LITERAL | ||||
|     ;      word_get | ||||
|         (re [":" word-re]) | ||||
|     ] | ||||
|      | ||||
|     ;  -- lit-word! | ||||
|     lit-word! [ | ||||
|         PR_LITERAL | ||||
|     ;      word_lit | ||||
|         (re ["'" word-re]) | ||||
|     ] | ||||
|      | ||||
|     refinement! [ | ||||
|         PR_LITERAL | ||||
|     ;      word_refine | ||||
|         (re reduce ["\/" replace copy find next word-re "[" "]*" "]+" "(?![A-Za-z0-9\-])"]) | ||||
|     ] | ||||
|  | ||||
|     op! [ | ||||
|         PR_LITERAL | ||||
|     ;      word_native | ||||
|         (re "(?:!=?=?|\*\*?|[+-]|\/\/?|<[=>]?|=[=?]?|>=?)(?![A-Za-z0-9\-])") | ||||
|     ] | ||||
|      | ||||
|     function! [ | ||||
|         PR_LITERAL | ||||
|         (re make-keywords-string) | ||||
|         ; [REB['function!'], /\b(?:to\-relative\-file\/as\-local|or\~|pwd|abs|map|not|rm|at|do|dp|ds|dt|cd|in|ls|to|or|if)\s/] | ||||
|     ] | ||||
|      | ||||
|     rebol! [ | ||||
|         PR_LITERAL | ||||
|     ;      word_header | ||||
|         (re/i "(?:rebol|red(?:\/system)?|world|topaz)$") | ||||
|     ] | ||||
|      | ||||
|     logic! [ | ||||
|         PR_LITERAL | ||||
|     ;      word_logic | ||||
|         (re "(?:true|false|yes|no|on|off)$") | ||||
|     ] | ||||
|      | ||||
|     ;      word_none | ||||
|     none! [PR_LITERAL (re "none$")] | ||||
|      | ||||
|     ;      word | ||||
|     word! [PR_LITERAL (re word-re)] | ||||
|  | ||||
|     ;  -- literal! | ||||
|     ; literal! [PR_LITERAL (re ["#" block-re])] | ||||
| ] | ||||
		Reference in New Issue
	
	Block a user