mirror of
				https://github.com/KevinMidboe/linguist.git
				synced 2025-10-29 17:50:22 +00:00 
			
		
		
		
	added .moo (parser definitions) to Mercury extension list
This commit is contained in:
		| @@ -1102,6 +1102,7 @@ Mercury: | |||||||
|   lexer: Prolog |   lexer: Prolog | ||||||
|   extensions: |   extensions: | ||||||
|   - .m |   - .m | ||||||
|  |   - .moo | ||||||
|  |  | ||||||
| MiniD: # Legacy | MiniD: # Legacy | ||||||
|   searchable: false |   searchable: false | ||||||
|   | |||||||
| @@ -217,6 +217,9 @@ | |||||||
|     "ABAP": [ |     "ABAP": [ | ||||||
|       ".abap" |       ".abap" | ||||||
|     ], |     ], | ||||||
|  |     "Moocode": [ | ||||||
|  |       ".moo" | ||||||
|  |     ], | ||||||
|     "Java": [ |     "Java": [ | ||||||
|       ".java" |       ".java" | ||||||
|     ], |     ], | ||||||
| @@ -340,7 +343,8 @@ | |||||||
|       ".bsv" |       ".bsv" | ||||||
|     ], |     ], | ||||||
|     "Mercury": [ |     "Mercury": [ | ||||||
|       ".m" |       ".m", | ||||||
|  |       ".moo" | ||||||
|     ], |     ], | ||||||
|     "Erlang": [ |     "Erlang": [ | ||||||
|       ".erl", |       ".erl", | ||||||
| @@ -563,8 +567,8 @@ | |||||||
|       "zshrc" |       "zshrc" | ||||||
|     ] |     ] | ||||||
|   }, |   }, | ||||||
|   "tokens_total": 484777, |   "tokens_total": 485338, | ||||||
|   "languages_total": 561, |   "languages_total": 564, | ||||||
|   "tokens": { |   "tokens": { | ||||||
|     "Groovy": { |     "Groovy": { | ||||||
|       "SHEBANG#!groovy": 1, |       "SHEBANG#!groovy": 1, | ||||||
| @@ -24491,6 +24495,41 @@ | |||||||
|       "pos": 2, |       "pos": 2, | ||||||
|       "endclass.": 1 |       "endclass.": 1 | ||||||
|     }, |     }, | ||||||
|  |     "Moocode": { | ||||||
|  |       "@verb": 1, | ||||||
|  |       "toy": 3, | ||||||
|  |       "do_the_work": 3, | ||||||
|  |       "this": 5, | ||||||
|  |       "none": 1, | ||||||
|  |       "@program": 2, | ||||||
|  |       "if": 4, | ||||||
|  |       "(": 13, | ||||||
|  |       "this.wound": 8, | ||||||
|  |       ")": 13, | ||||||
|  |       "object_utils": 1, | ||||||
|  |       "isa": 1, | ||||||
|  |       "this.location": 3, | ||||||
|  |       "room": 1, | ||||||
|  |       "announce_all": 2, | ||||||
|  |       "this.name": 4, | ||||||
|  |       "continue_msg": 1, | ||||||
|  |       ";": 8, | ||||||
|  |       "-": 1, | ||||||
|  |       "fork": 1, | ||||||
|  |       "endfork": 1, | ||||||
|  |       "else": 1, | ||||||
|  |       "wind_down_msg": 1, | ||||||
|  |       "endif": 4, | ||||||
|  |       "<": 1, | ||||||
|  |       ".": 2, | ||||||
|  |       "wind": 1, | ||||||
|  |       "+": 1, | ||||||
|  |       "player": 1, | ||||||
|  |       "tell": 1, | ||||||
|  |       "player.location": 1, | ||||||
|  |       "announce": 1, | ||||||
|  |       "player.name": 1 | ||||||
|  |     }, | ||||||
|     "Java": { |     "Java": { | ||||||
|       "package": 6, |       "package": 6, | ||||||
|       "clojure.lang": 1, |       "clojure.lang": 1, | ||||||
| @@ -36959,29 +36998,29 @@ | |||||||
|     }, |     }, | ||||||
|     "Mercury": { |     "Mercury": { | ||||||
|       "%": 416, |       "%": 416, | ||||||
|       "-": 6914, |       "-": 6967, | ||||||
|       "module": 45, |       "module": 46, | ||||||
|       "rot13_verbose.": 1, |       "rot13_verbose.": 1, | ||||||
|       "interface.": 12, |       "interface.": 13, | ||||||
|       "import_module": 124, |       "import_module": 126, | ||||||
|       "io.": 8, |       "io.": 8, | ||||||
|       "pred": 253, |       "pred": 255, | ||||||
|       "main": 15, |       "main": 15, | ||||||
|       "(": 3284, |       "(": 3351, | ||||||
|       "io__state": 4, |       "io__state": 4, | ||||||
|       ")": 3284, |       ")": 3351, | ||||||
|       ".": 592, |       ".": 610, | ||||||
|       "mode": 6, |       "mode": 8, | ||||||
|       "di": 54, |       "di": 54, | ||||||
|       "uo": 58, |       "uo": 58, | ||||||
|       "is": 244, |       "is": 246, | ||||||
|       "det.": 182, |       "det.": 184, | ||||||
|       "implementation.": 11, |       "implementation.": 12, | ||||||
|       "char": 7, |       "char": 10, | ||||||
|       "int": 124, |       "int": 129, | ||||||
|       "require.": 5, |       "require.": 6, | ||||||
|       "rot13a/2": 1, |       "rot13a/2": 1, | ||||||
|       "A": 6, |       "A": 14, | ||||||
|       "table": 1, |       "table": 1, | ||||||
|       "to": 16, |       "to": 16, | ||||||
|       "map": 7, |       "map": 7, | ||||||
| @@ -36996,8 +37035,8 @@ | |||||||
|       "input": 1, |       "input": 1, | ||||||
|       "not": 7, |       "not": 7, | ||||||
|       "rot13a": 55, |       "rot13a": 55, | ||||||
|       "in": 506, |       "in": 510, | ||||||
|       "out": 334, |       "out": 337, | ||||||
|       "semidet.": 10, |       "semidet.": 10, | ||||||
|       "rot13/2": 1, |       "rot13/2": 1, | ||||||
|       "Applies": 1, |       "Applies": 1, | ||||||
| @@ -37011,13 +37050,13 @@ | |||||||
|       "else": 8, |       "else": 8, | ||||||
|       "io__read_char": 1, |       "io__read_char": 1, | ||||||
|       "Res": 8, |       "Res": 8, | ||||||
|       "{": 23, |       "{": 27, | ||||||
|       "ok": 3, |       "ok": 3, | ||||||
|       "}": 24, |       "}": 28, | ||||||
|       "io__write_char": 1, |       "io__write_char": 1, | ||||||
|       ";": 898, |       ";": 913, | ||||||
|       "eof": 3, |       "eof": 6, | ||||||
|       "error": 6, |       "error": 7, | ||||||
|       "ErrorCode": 4, |       "ErrorCode": 4, | ||||||
|       "io__error_message": 2, |       "io__error_message": 2, | ||||||
|       "ErrorMessage": 4, |       "ErrorMessage": 4, | ||||||
| @@ -37041,10 +37080,10 @@ | |||||||
|       "sub_string_search": 1, |       "sub_string_search": 1, | ||||||
|       "Index": 3, |       "Index": 3, | ||||||
|       "NewIndex": 2, |       "NewIndex": 2, | ||||||
|       "+": 125, |       "+": 127, | ||||||
|       "mod": 1, |       "mod": 1, | ||||||
|       "*": 18, |       "*": 20, | ||||||
|       "//": 1, |       "//": 2, | ||||||
|       "index_det": 1, |       "index_det": 1, | ||||||
|       "read_char": 1, |       "read_char": 1, | ||||||
|       "print": 3, |       "print": 3, | ||||||
| @@ -37056,9 +37095,9 @@ | |||||||
|       "store": 52, |       "store": 52, | ||||||
|       "T": 52, |       "T": 52, | ||||||
|       "where": 8, |       "where": 8, | ||||||
|       "[": 184, |       "[": 203, | ||||||
|       "]": 184, |       "]": 203, | ||||||
|       "type": 56, |       "type": 57, | ||||||
|       "S": 133, |       "S": 133, | ||||||
|       "instance": 4, |       "instance": 4, | ||||||
|       "io.state": 3, |       "io.state": 3, | ||||||
| @@ -37132,7 +37171,7 @@ | |||||||
|       "store_ref": 1, |       "store_ref": 1, | ||||||
|       "store.new_ref": 1, |       "store.new_ref": 1, | ||||||
|       "store.ref_functor": 1, |       "store.ref_functor": 1, | ||||||
|       "string": 114, |       "string": 115, | ||||||
|       "store.arg_ref": 1, |       "store.arg_ref": 1, | ||||||
|       "ArgT": 4, |       "ArgT": 4, | ||||||
|       "store.new_arg_ref": 3, |       "store.new_arg_ref": 3, | ||||||
| @@ -37203,7 +37242,7 @@ | |||||||
|       "representation": 1, |       "representation": 1, | ||||||
|       "pragma": 41, |       "pragma": 41, | ||||||
|       "foreign_type": 10, |       "foreign_type": 10, | ||||||
|       "C": 24, |       "C": 34, | ||||||
|       "MR_Word": 24, |       "MR_Word": 24, | ||||||
|       "can_pass_as_mercury_type": 5, |       "can_pass_as_mercury_type": 5, | ||||||
|       "equality": 5, |       "equality": 5, | ||||||
| @@ -37287,7 +37326,7 @@ | |||||||
|       "FieldInfo": 1, |       "FieldInfo": 1, | ||||||
|       "Constructors": 2, |       "Constructors": 2, | ||||||
|       "init": 8, |       "init": 8, | ||||||
|       "num": 8, |       "num": 11, | ||||||
|       "setField": 4, |       "setField": 4, | ||||||
|       "Set": 2, |       "Set": 2, | ||||||
|       "according": 2, |       "according": 2, | ||||||
| @@ -37409,7 +37448,7 @@ | |||||||
|       "mdbcomp.prim_data.": 3, |       "mdbcomp.prim_data.": 3, | ||||||
|       "parse_tree.": 1, |       "parse_tree.": 1, | ||||||
|       "parse_tree.prog_data.": 2, |       "parse_tree.prog_data.": 2, | ||||||
|       "list.": 3, |       "list.": 4, | ||||||
|       "maybe.": 3, |       "maybe.": 3, | ||||||
|       "term.": 3, |       "term.": 3, | ||||||
|       "polymorphism_process_module": 2, |       "polymorphism_process_module": 2, | ||||||
| @@ -37425,7 +37464,7 @@ | |||||||
|       "pred_info": 20, |       "pred_info": 20, | ||||||
|       "proc_info": 11, |       "proc_info": 11, | ||||||
|       "proc_id": 12, |       "proc_id": 12, | ||||||
|       "list": 77, |       "list": 82, | ||||||
|       "prog_var": 58, |       "prog_var": 58, | ||||||
|       "builtin_state": 1, |       "builtin_state": 1, | ||||||
|       "maybe": 20, |       "maybe": 20, | ||||||
| @@ -37547,7 +37586,7 @@ | |||||||
|       "ArgTypes": 6, |       "ArgTypes": 6, | ||||||
|       "pred_info_set_arg_types": 1, |       "pred_info_set_arg_types": 1, | ||||||
|       "PredInfo1": 5, |       "PredInfo1": 5, | ||||||
|       "|": 28, |       "|": 38, | ||||||
|       "OldHeadVarTypes": 2, |       "OldHeadVarTypes": 2, | ||||||
|       "type_list_subsumes": 2, |       "type_list_subsumes": 2, | ||||||
|       "Subn": 3, |       "Subn": 3, | ||||||
| @@ -38292,6 +38331,32 @@ | |||||||
|       "NonLocals1": 2, |       "NonLocals1": 2, | ||||||
|       "CallGoalExpr": 2, |       "CallGoalExpr": 2, | ||||||
|       "CallGoal": 2, |       "CallGoal": 2, | ||||||
|  |       "expr.": 1, | ||||||
|  |       "token": 5, | ||||||
|  |       "parse": 1, | ||||||
|  |       "exprn/1": 1, | ||||||
|  |       "xx": 1, | ||||||
|  |       "scan": 16, | ||||||
|  |       "rule": 3, | ||||||
|  |       "exprn": 7, | ||||||
|  |       "Num": 18, | ||||||
|  |       "term": 10, | ||||||
|  |       "B": 8, | ||||||
|  |       "factor": 6, | ||||||
|  |       "/": 1, | ||||||
|  |       "Chars": 2, | ||||||
|  |       "Toks": 13, | ||||||
|  |       "Toks0": 11, | ||||||
|  |       "list__reverse": 1, | ||||||
|  |       "Cs": 9, | ||||||
|  |       "char__is_whitespace": 1, | ||||||
|  |       "char__is_digit": 2, | ||||||
|  |       "takewhile": 1, | ||||||
|  |       "Digits": 2, | ||||||
|  |       "Rest": 2, | ||||||
|  |       "string__from_char_list": 1, | ||||||
|  |       "NumStr": 2, | ||||||
|  |       "string__det_to_int": 1, | ||||||
|       "char.": 1, |       "char.": 1, | ||||||
|       "getopt_io.": 1, |       "getopt_io.": 1, | ||||||
|       "short_option": 36, |       "short_option": 36, | ||||||
| @@ -38378,7 +38443,6 @@ | |||||||
|       "debug_code_gen_pred_id": 3, |       "debug_code_gen_pred_id": 3, | ||||||
|       "debug_opt": 3, |       "debug_opt": 3, | ||||||
|       "debug_term": 4, |       "debug_term": 4, | ||||||
|       "term": 1, |  | ||||||
|       "termination": 3, |       "termination": 3, | ||||||
|       "analysis": 1, |       "analysis": 1, | ||||||
|       "debug_opt_pred_id": 3, |       "debug_opt_pred_id": 3, | ||||||
| @@ -51924,6 +51988,7 @@ | |||||||
|     "Org": 358, |     "Org": 358, | ||||||
|     "Turing": 44, |     "Turing": 44, | ||||||
|     "ABAP": 1500, |     "ABAP": 1500, | ||||||
|  |     "Moocode": 93, | ||||||
|     "Java": 8987, |     "Java": 8987, | ||||||
|     "Omgrofl": 57, |     "Omgrofl": 57, | ||||||
|     "GAS": 133, |     "GAS": 133, | ||||||
| @@ -51960,7 +52025,7 @@ | |||||||
|     "RMarkdown": 19, |     "RMarkdown": 19, | ||||||
|     "Stylus": 76, |     "Stylus": 76, | ||||||
|     "Bluespec": 1298, |     "Bluespec": 1298, | ||||||
|     "Mercury": 30628, |     "Mercury": 31096, | ||||||
|     "Erlang": 2928, |     "Erlang": 2928, | ||||||
|     "NSIS": 725, |     "NSIS": 725, | ||||||
|     "Arduino": 20, |     "Arduino": 20, | ||||||
| @@ -52072,6 +52137,7 @@ | |||||||
|     "Org": 1, |     "Org": 1, | ||||||
|     "Turing": 1, |     "Turing": 1, | ||||||
|     "ABAP": 1, |     "ABAP": 1, | ||||||
|  |     "Moocode": 2, | ||||||
|     "Java": 6, |     "Java": 6, | ||||||
|     "Omgrofl": 1, |     "Omgrofl": 1, | ||||||
|     "GAS": 1, |     "GAS": 1, | ||||||
| @@ -52108,7 +52174,7 @@ | |||||||
|     "RMarkdown": 1, |     "RMarkdown": 1, | ||||||
|     "Stylus": 1, |     "Stylus": 1, | ||||||
|     "Bluespec": 2, |     "Bluespec": 2, | ||||||
|     "Mercury": 8, |     "Mercury": 9, | ||||||
|     "Erlang": 5, |     "Erlang": 5, | ||||||
|     "NSIS": 2, |     "NSIS": 2, | ||||||
|     "Arduino": 1, |     "Arduino": 1, | ||||||
| @@ -52155,5 +52221,5 @@ | |||||||
|     "Protocol Buffer": 1, |     "Protocol Buffer": 1, | ||||||
|     "Scheme": 2 |     "Scheme": 2 | ||||||
|   }, |   }, | ||||||
|   "md5": "1c540f92a03ec13cf822b38473b5a4ff" |   "md5": "9dbc6271b8d729f78fea54760082d89a" | ||||||
| } | } | ||||||
							
								
								
									
										72
									
								
								samples/Mercury/expr.moo
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										72
									
								
								samples/Mercury/expr.moo
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,72 @@ | |||||||
|  | :- module expr. | ||||||
|  |  | ||||||
|  | :- interface. | ||||||
|  |  | ||||||
|  | :- import_module char, int, list. | ||||||
|  |  | ||||||
|  | :- type token | ||||||
|  | 	--->	('+') | ||||||
|  | 	;	('-') | ||||||
|  | 	;	('*') | ||||||
|  | 	;	('/') | ||||||
|  | 	;	num(int) | ||||||
|  | 	;	('(') | ||||||
|  | 	;	(')') | ||||||
|  | 	;	eof | ||||||
|  | 	. | ||||||
|  |  | ||||||
|  | :- parse(exprn/1, token, eof, xx, in, out). | ||||||
|  |  | ||||||
|  | :- pred scan(list(char), list(token)). | ||||||
|  | :- mode scan(in, out) is det. | ||||||
|  |  | ||||||
|  | :- implementation. | ||||||
|  |  | ||||||
|  | :- import_module string, require. | ||||||
|  |  | ||||||
|  | :- rule exprn(int). | ||||||
|  | exprn(Num)	--->	exprn(A), [+], term(B), { Num = A + B }. | ||||||
|  | exprn(Num)	--->	exprn(A), [-], term(B), { Num = A - B }. | ||||||
|  | exprn(Num)	--->	term(Num). | ||||||
|  |  | ||||||
|  | :- rule term(int). | ||||||
|  | term(Num)	--->	term(A), [*], factor(B), { Num = A * B }. | ||||||
|  | term(Num)	--->	term(A), [/], factor(B), { Num = A // B }. | ||||||
|  | term(Num)	--->	factor(Num). | ||||||
|  |  | ||||||
|  | :- rule factor(int). | ||||||
|  | factor(Num)	--->	['('], exprn(Num), [')']. | ||||||
|  | factor(Num)	--->	[num(Num)]. | ||||||
|  |  | ||||||
|  | scan(Chars, Toks) :- | ||||||
|  | 	scan(Chars, [], Toks0), | ||||||
|  | 	list__reverse(Toks0, Toks). | ||||||
|  |  | ||||||
|  | :- pred scan(list(char), list(token), list(token)). | ||||||
|  | :- mode scan(in, in, out) is det. | ||||||
|  |  | ||||||
|  | scan([], Toks, [eof|Toks]). | ||||||
|  | scan([C|Cs], Toks0, Toks) :- | ||||||
|  | 	( char__is_whitespace(C) -> | ||||||
|  | 		scan(Cs, Toks0, Toks) | ||||||
|  | 	; char__is_digit(C) -> | ||||||
|  | 		takewhile(char__is_digit, [C|Cs], Digits, Rest), | ||||||
|  | 		string__from_char_list(Digits, NumStr), | ||||||
|  | 		Num = string__det_to_int(NumStr), | ||||||
|  | 		scan(Rest, [num(Num)|Toks0], Toks) | ||||||
|  | 	; C = ('+') -> | ||||||
|  | 		scan(Cs, ['+'|Toks0], Toks) | ||||||
|  | 	; C = ('-') -> | ||||||
|  | 		scan(Cs, ['-'|Toks0], Toks) | ||||||
|  | 	; C = ('*') -> | ||||||
|  | 		scan(Cs, ['*'|Toks0], Toks) | ||||||
|  | 	; C = ('/') -> | ||||||
|  | 		scan(Cs, ['/'|Toks0], Toks) | ||||||
|  | 	; C = ('(') -> | ||||||
|  | 		scan(Cs, ['('|Toks0], Toks) | ||||||
|  | 	; C = (')') -> | ||||||
|  | 		scan(Cs, [')'|Toks0], Toks) | ||||||
|  | 	; | ||||||
|  | 		error("expr: syntax error in input") | ||||||
|  | 	). | ||||||
|  |  | ||||||
							
								
								
									
										5
									
								
								samples/Moocode/hello.moo
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										5
									
								
								samples/Moocode/hello.moo
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,5 @@ | |||||||
|  | @program toy:wind | ||||||
|  | this.wound = this.wound + 2; | ||||||
|  | player:tell("You wind up the ", this.name,"."); | ||||||
|  | player.location:announce(player.name, " winds up the ", this.name,"."); | ||||||
|  | . | ||||||
							
								
								
									
										19
									
								
								samples/Moocode/toy.moo
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										19
									
								
								samples/Moocode/toy.moo
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,19 @@ | |||||||
|  | @verb toy:do_the_work this none this | ||||||
|  | @program toy:do_the_work | ||||||
|  | if (this.wound) | ||||||
|  |   if ($object_utils:isa(this.location,$room)) | ||||||
|  |     this.location:announce_all(this.name," ", this:continue_msg()); | ||||||
|  |     this.wound = this.wound - 1; | ||||||
|  |     if (this.wound) | ||||||
|  |       fork (15) | ||||||
|  |         this:do_the_work(); | ||||||
|  |       endfork | ||||||
|  |     else | ||||||
|  |       this.location:announce_all(this.name, " ", this:wind_down_msg()); | ||||||
|  |     endif | ||||||
|  |   endif | ||||||
|  |   if (this.wound < 0) | ||||||
|  |     this.wound = 0; | ||||||
|  |   endif | ||||||
|  | endif | ||||||
|  | . | ||||||
		Reference in New Issue
	
	Block a user