init
This commit is contained in:
		
							
								
								
									
										219
									
								
								syntax/4gl.jsf
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										219
									
								
								syntax/4gl.jsf
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,219 @@
 | 
			
		||||
# JOE syntax highlight file for Progress 4GL
 | 
			
		||||
# by Gediminas http://proc.w3.lt
 | 
			
		||||
# Version 1.04
 | 
			
		||||
 | 
			
		||||
=Idle
 | 
			
		||||
=Comment
 | 
			
		||||
=Constant
 | 
			
		||||
=String		+Constant
 | 
			
		||||
=Number		+Constant
 | 
			
		||||
=Type
 | 
			
		||||
=Ident
 | 
			
		||||
 | 
			
		||||
# conditional operators, blocks
 | 
			
		||||
=Keyword
 | 
			
		||||
=Conditional	+Keyword
 | 
			
		||||
=Operator	+Keyword
 | 
			
		||||
 | 
			
		||||
# preprocessor include, definition, reference
 | 
			
		||||
=Preproc
 | 
			
		||||
=Include	+Preproc
 | 
			
		||||
=PreRef		+Ident
 | 
			
		||||
 | 
			
		||||
:idle Idle
 | 
			
		||||
	*		idle
 | 
			
		||||
	"/"		slash
 | 
			
		||||
	"{"		brace
 | 
			
		||||
	"&"		prep		buffer
 | 
			
		||||
	"a-zA-Z"	ident		buffer
 | 
			
		||||
	"'"		string		recolor=-1
 | 
			
		||||
	"\""		string2		recolor=-1
 | 
			
		||||
	"0-9"		number		recolor=-1 
 | 
			
		||||
	"?"		question	recolor=-1
 | 
			
		||||
 | 
			
		||||
# Comments - 2 levels of nesting allowed
 | 
			
		||||
 | 
			
		||||
:slash Idle
 | 
			
		||||
	*		idle		noeat
 | 
			
		||||
	"*"		comment		recolor=-2
 | 
			
		||||
:comment Comment comment
 | 
			
		||||
	*		comment
 | 
			
		||||
	"/"		slash2
 | 
			
		||||
	"*"		maybe_end_comment
 | 
			
		||||
	"BFHNTX"        comment         noeat call=comment_todo.comment_todo()
 | 
			
		||||
:maybe_end_comment Comment comment
 | 
			
		||||
	*		comment
 | 
			
		||||
	"/"		idle
 | 
			
		||||
	"*"		maybe_end_comment
 | 
			
		||||
 | 
			
		||||
:slash2 Idle
 | 
			
		||||
	*		comment		noeat
 | 
			
		||||
	"*"		comment2	recolor=-2
 | 
			
		||||
:comment2 Comment comment
 | 
			
		||||
	*		comment2
 | 
			
		||||
	"*"		maybe_end_comment2
 | 
			
		||||
	"BFHNTX"        comment2         noeat call=comment_todo.comment_todo()
 | 
			
		||||
:maybe_end_comment2 Comment comment
 | 
			
		||||
	*		comment2
 | 
			
		||||
	"/"		comment
 | 
			
		||||
	"*"		maybe_end_comment2
 | 
			
		||||
 | 
			
		||||
# Preprocessor
 | 
			
		||||
#     Allow preprocessor name reference inside include file reference:
 | 
			
		||||
#     {include/trace {&FILE-NAME} {&LINE-NUMBER}}
 | 
			
		||||
 | 
			
		||||
:brace Include
 | 
			
		||||
	*		include		noeat
 | 
			
		||||
	"&"		scoped		recolor=-2
 | 
			
		||||
	"}"		idle
 | 
			
		||||
 | 
			
		||||
:include Include
 | 
			
		||||
	*		include		recolor=-2
 | 
			
		||||
	"{"		brace2
 | 
			
		||||
	"}"		idle
 | 
			
		||||
 | 
			
		||||
:brace2 Include
 | 
			
		||||
	*		include2	noeat
 | 
			
		||||
	"}"		idle
 | 
			
		||||
 | 
			
		||||
:include2 Include
 | 
			
		||||
	*		include2	recolor=-2
 | 
			
		||||
	"}"		include
 | 
			
		||||
 | 
			
		||||
:scoped PreRef
 | 
			
		||||
	*		scoped
 | 
			
		||||
	"}"		idle
 | 
			
		||||
 | 
			
		||||
:prep Preproc
 | 
			
		||||
	*			idle		noeat istrings
 | 
			
		||||
	"&IF"			predir
 | 
			
		||||
	"&THEN"			predir
 | 
			
		||||
	"&ELSEIF"		predir
 | 
			
		||||
	"&ELSE"			predir
 | 
			
		||||
	"&ENDIF"		predir
 | 
			
		||||
	"&SCOPED-DEFINE"	predir
 | 
			
		||||
	"&SCOP"			predir
 | 
			
		||||
	"&GLOBAL-DEFINE"	predir
 | 
			
		||||
	"&GLOB"			predir
 | 
			
		||||
	"&MESSAGE"		predir
 | 
			
		||||
	"&UNDEFINE"		predir
 | 
			
		||||
	"&UNDEF"		predir
 | 
			
		||||
done
 | 
			
		||||
	"-a-zA-Z0-9_"		prep
 | 
			
		||||
 | 
			
		||||
:predir Preproc
 | 
			
		||||
	*		idle		noeat
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
# String constants, copied from pascal.jsf with " added
 | 
			
		||||
 | 
			
		||||
:string String string
 | 
			
		||||
	*		string
 | 
			
		||||
	"\n"		idle
 | 
			
		||||
	"'"		maybe_end_string
 | 
			
		||||
 | 
			
		||||
:maybe_end_string String string
 | 
			
		||||
	*		idle		recolor=-1 noeat
 | 
			
		||||
	"'"		string
 | 
			
		||||
 | 
			
		||||
:string2 String string
 | 
			
		||||
	*		string2
 | 
			
		||||
	"\n"		idle
 | 
			
		||||
	"\""		maybe_end_string2
 | 
			
		||||
 | 
			
		||||
:maybe_end_string2 String string
 | 
			
		||||
	*		idle		recolor=-1 noeat
 | 
			
		||||
	"\""		string2
 | 
			
		||||
 | 
			
		||||
# Numeric constant, same as pascal.jsf
 | 
			
		||||
 | 
			
		||||
:number Number
 | 
			
		||||
	*		idle		noeat
 | 
			
		||||
	"0-9"		number
 | 
			
		||||
	"eE"		epart
 | 
			
		||||
	"."		dot
 | 
			
		||||
 | 
			
		||||
:dot Number
 | 
			
		||||
	*		idle	noeat
 | 
			
		||||
	"0-9"		float
 | 
			
		||||
 | 
			
		||||
:float Number
 | 
			
		||||
	*		idle	noeat
 | 
			
		||||
	"eE"		epart
 | 
			
		||||
	"0-9"		float
 | 
			
		||||
 | 
			
		||||
:epart Number
 | 
			
		||||
	*		idle	noeat
 | 
			
		||||
	"0-9+\-"	enum
 | 
			
		||||
 | 
			
		||||
:enum Number
 | 
			
		||||
	*		idle	noeat
 | 
			
		||||
	"0-9"		enum
 | 
			
		||||
 | 
			
		||||
:question Constant
 | 
			
		||||
	*		idle noeat
 | 
			
		||||
 | 
			
		||||
# Keywords
 | 
			
		||||
# Available jumps: cond type oper kw
 | 
			
		||||
 | 
			
		||||
# TODO: This needs to be vastly expanded, it seems like every other
 | 
			
		||||
# token in this language is a keyword.
 | 
			
		||||
 | 
			
		||||
:ident Ident
 | 
			
		||||
	*		idle		noeat istrings
 | 
			
		||||
	"assign"	cond
 | 
			
		||||
	"case"		cond
 | 
			
		||||
	"cha"		type
 | 
			
		||||
	"char"		type
 | 
			
		||||
	"character"	type
 | 
			
		||||
	"create"	reserved
 | 
			
		||||
	"dat"		type
 | 
			
		||||
	"date"		type
 | 
			
		||||
	"dec"		type
 | 
			
		||||
	"decimal"	type
 | 
			
		||||
	"defined"	oper
 | 
			
		||||
	"delete"	reserved
 | 
			
		||||
	"do"		reserved
 | 
			
		||||
	"else"		cond
 | 
			
		||||
	"end"		cond
 | 
			
		||||
	"find"		reserved
 | 
			
		||||
	"for"		reserved
 | 
			
		||||
	"function"	cond
 | 
			
		||||
	"get"		reserved
 | 
			
		||||
	"handle"	type
 | 
			
		||||
	"if"		cond
 | 
			
		||||
	"int"		type
 | 
			
		||||
	"integer"	type
 | 
			
		||||
	"leave"		cond
 | 
			
		||||
	"log"		type
 | 
			
		||||
	"logical"	type
 | 
			
		||||
	"memptr"	type
 | 
			
		||||
	"next"		cond
 | 
			
		||||
	"otherwise"	cond
 | 
			
		||||
	"param"		cond
 | 
			
		||||
	"parameter"	cond
 | 
			
		||||
	"procedure"	cond
 | 
			
		||||
	"raw"		type
 | 
			
		||||
	"rec"		type
 | 
			
		||||
	"repeat"	cond
 | 
			
		||||
	"reposition"	reserved
 | 
			
		||||
	"return"	cond
 | 
			
		||||
	"rowid"		type
 | 
			
		||||
	"run"		cond
 | 
			
		||||
	"then"		cond
 | 
			
		||||
	"when"		cond
 | 
			
		||||
	"widget-handle"	type
 | 
			
		||||
done
 | 
			
		||||
	"-a-zA-Z0-9_"	ident
 | 
			
		||||
 | 
			
		||||
:cond Conditional
 | 
			
		||||
	*	idle	noeat
 | 
			
		||||
 | 
			
		||||
:type Type
 | 
			
		||||
	*	idle	noeat
 | 
			
		||||
 | 
			
		||||
:oper Operator
 | 
			
		||||
	*	idle	noeat
 | 
			
		||||
 | 
			
		||||
:reserved Keyword
 | 
			
		||||
	*	idle	noeat
 | 
			
		||||
		Reference in New Issue
	
	Block a user