Menu

Diff of /syntax/4gl.jsf [000000] .. [517113]  Maximize  Restore

Switch to side-by-side view

--- a
+++ b/syntax/4gl.jsf
@@ -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
Want the latest updates on software, tech news, and AI?
Get latest updates about software, tech news, and AI from SourceForge directly in your inbox once a month.