forked from aniani/vim
patch 9.1.0013: Modula2 filetype support lacking
Problem: Modula2 filetype support lacking Solution: Improve the Modula-2 runtime support, add additional modula2 dialects, add compiler plugin, update syntax highlighting, include syntax tests, update Makefiles (Doug Kearns) closes: #6796 closes: #8115 Signed-off-by: Doug Kearns <dougkearns@gmail.com> Signed-off-by: Benjamin Kowarsch <trijezdci@users.noreply.github.com> Signed-off-by: Christian Brabandt <cb@256bit.org>
This commit is contained in:
committed by
Christian Brabandt
parent
3779516988
commit
68a8947069
114
runtime/syntax/testdir/input/modula2_iso.def
Normal file
114
runtime/syntax/testdir/input/modula2_iso.def
Normal file
@@ -0,0 +1,114 @@
|
||||
(* Modula-2 ISO Test File for Vim Syntax Colouring *)
|
||||
|
||||
(* --------------------------------------------------
|
||||
* THIS FILE IS LICENSED UNDER THE VIM LICENSE
|
||||
* see https://github.com/vim/vim/blob/master/LICENSE
|
||||
* -------------------------------------------------- *)
|
||||
|
||||
|
||||
DEFINITION MODULE Foobar; (*!m2iso*)
|
||||
|
||||
FROM SYSTEM IMPORT LOC, WORD, ADDRESS;
|
||||
|
||||
CONST MaxFoo = 1.0; LF = CHR(10);
|
||||
|
||||
TYPE Foo = POINTER TO Bar;
|
||||
|
||||
(* predefined constants *)
|
||||
FALSE NIL TRUE INTERRUPTIBLE UNINTERRUPTIBLE
|
||||
|
||||
(* predefined types *)
|
||||
BITSET BOOLEAN CHAR PROC CARDINAL INTEGER LONGINT REAL LONGREAL
|
||||
COMPLEX LONGCOMPLEX PROTECTION
|
||||
|
||||
(* predefined procedures *)
|
||||
CAP DEC EXCL HALT INC INCL
|
||||
|
||||
(* predefined functions *)
|
||||
ABS CHR CMPLX FLOAT HIGH IM INT LENGTH LFLOAT MAX MIN ODD ORD RE SIZE TRUNC VAL
|
||||
|
||||
(* predefined macros *)
|
||||
NEW DISPOSE
|
||||
|
||||
(* unsafe builtins *)
|
||||
ADDRESS BYTE LOC WORD ADR CAST TSIZE SYSTEM
|
||||
MAKEADR ADDADR SUBADR DIFADR ROTATE SHIFT
|
||||
|
||||
(* non-standard language extensions *)
|
||||
LONGCARD LONGBITSET
|
||||
|
||||
(* user defined identifiers *)
|
||||
foobar Foobar FooBar foo123 foo_bar
|
||||
|
||||
(* string literals *)
|
||||
str := "foo 'bar' baz";
|
||||
str := 'foo "bar" baz';
|
||||
|
||||
(* numeric literals *)
|
||||
0FFFH, 1.23, 1.23e-45, 1000
|
||||
|
||||
(* octal literals *)
|
||||
n := 0377B; ch := 0377C;
|
||||
|
||||
(* pragmas *)
|
||||
<*$foo*>
|
||||
|
||||
(* block comments with emphasis *)
|
||||
(* copyright (c) Jurrasic Inc.
|
||||
author Fred Flintstone Sr.
|
||||
license see LICENSE file. *)
|
||||
|
||||
(* pre-conditions: foo bar baz bam boo doodle wah.
|
||||
post-conditions: foodle babble bozo bim bam dang.
|
||||
error-conditions: dada jingle jungle boggle dee boo. *)
|
||||
|
||||
(* technical debt markers *)
|
||||
(* TODO: ... *)
|
||||
(* FIXME *)
|
||||
(* DEPRECATED *)
|
||||
|
||||
(* procedures *)
|
||||
PROCEDURE NewFooWithBar ( VAR foo: Foo; bar : INTEGER );
|
||||
BEGIN
|
||||
NEW(foo);
|
||||
foo^.bar := bar;
|
||||
RETURN
|
||||
END SetBar;
|
||||
|
||||
(* functions *)
|
||||
PROCEDURE bar ( foo : Foo ) : INTEGER;
|
||||
BEGIN
|
||||
IF foo = NIL THEN
|
||||
HALT
|
||||
ELSE
|
||||
RETURN foo^.bar
|
||||
END (* IF *)
|
||||
END bar;
|
||||
|
||||
(* disabled code *)
|
||||
?<
|
||||
WHILE foo = bar DO
|
||||
baz(bam, boo)
|
||||
END (* WHILE *);
|
||||
>?
|
||||
|
||||
(* synonyms *)
|
||||
@ & ~
|
||||
|
||||
(* illegal characters *)
|
||||
` ! $ % \ ? _
|
||||
|
||||
(* illegal identifiers *)
|
||||
|
||||
_bar _bar_baz _bar_baz__bam _bar_baz__bam_boo
|
||||
|
||||
bar_ bar_baz_ bar_baz__bam_ bar_baz__bam_boo_
|
||||
|
||||
__bar __bar_baz __bar_baz__bam __bar_baz__bam_boo
|
||||
|
||||
bar__ bar_baz__ bar_baz__bam__ bar_baz__bam_boo__
|
||||
|
||||
bar__baz __bar_baz__ __bar__baz__ __
|
||||
|
||||
|
||||
END Foobar.
|
111
runtime/syntax/testdir/input/modula2_pim.def
Normal file
111
runtime/syntax/testdir/input/modula2_pim.def
Normal file
@@ -0,0 +1,111 @@
|
||||
(* Modula-2 PIM Test File for Vim Syntax Colouring *)
|
||||
|
||||
(* --------------------------------------------------
|
||||
* THIS FILE IS LICENSED UNDER THE VIM LICENSE
|
||||
* see https://github.com/vim/vim/blob/master/LICENSE
|
||||
* -------------------------------------------------- *)
|
||||
|
||||
DEFINITION MODULE Foobar; (*!m2pim*)
|
||||
|
||||
FROM SYSTEM IMPORT WORD, ADDRESS;
|
||||
|
||||
CONST MaxFoo = 1.0; LF = CHR(10);
|
||||
|
||||
TYPE Foo = POINTER TO Bar;
|
||||
|
||||
(* predefined constants *)
|
||||
FALSE NIL TRUE
|
||||
|
||||
(* predefined types *)
|
||||
BITSET BOOLEAN CHAR PROC CARDINAL INTEGER LONGINT REAL LONGREAL
|
||||
|
||||
(* predefined procedures *)
|
||||
CAP DEC EXCL HALT INC INCL
|
||||
|
||||
(* predefined functions *)
|
||||
ABS CHR FLOAT HIGH MAX MIN ODD ORD SIZE TRUNC VAL
|
||||
|
||||
(* predefined macros *)
|
||||
NEW DISPOSE
|
||||
|
||||
(* unsafe builtins *)
|
||||
ADDRESS PROCESS WORD ADR TSIZE NEWPROCESS TRANSFER SYSTEM
|
||||
|
||||
(* non-standard language extensions *)
|
||||
BYTE LONGCARD LONGBITSET
|
||||
|
||||
(* user defined identifiers *)
|
||||
foobar Foobar FooBar foo123 foo_bar
|
||||
|
||||
(* string literals *)
|
||||
str := "foo 'bar' baz";
|
||||
str := 'foo "bar" baz';
|
||||
|
||||
(* numeric literals *)
|
||||
0FFFH, 1.23, 1.23e-45, 1000
|
||||
|
||||
(* octal literals *)
|
||||
n := 0377B; ch := 0377C;
|
||||
|
||||
(* pragmas *)
|
||||
(*$foo*)
|
||||
|
||||
(* block comments with emphasis *)
|
||||
(* copyright (c) Jurrasic Inc.
|
||||
author Fred Flintstone Sr.
|
||||
license see LICENSE file. *)
|
||||
|
||||
(* pre-conditions: foo bar baz bam boo doodle wah.
|
||||
post-conditions: foodle babble bozo bim bam dang.
|
||||
error-conditions: dada jingle jungle boggle dee boo. *)
|
||||
|
||||
(* technical debt markers *)
|
||||
(* TODO: ... *)
|
||||
(* FIXME *)
|
||||
(* DEPRECATED *)
|
||||
|
||||
(* procedures *)
|
||||
PROCEDURE NewFooWithBar ( VAR foo: Foo; bar : INTEGER );
|
||||
BEGIN
|
||||
NEW(foo);
|
||||
foo^.bar := bar;
|
||||
RETURN
|
||||
END SetBar;
|
||||
|
||||
(* functions *)
|
||||
PROCEDURE bar ( foo : Foo ) : INTEGER;
|
||||
BEGIN
|
||||
IF foo = NIL THEN
|
||||
HALT
|
||||
ELSE
|
||||
RETURN foo^.bar
|
||||
END (* IF *)
|
||||
END bar;
|
||||
|
||||
(* disabled code *)
|
||||
?<
|
||||
WHILE foo = bar DO
|
||||
baz(bam, boo)
|
||||
END (* WHILE *);
|
||||
>?
|
||||
|
||||
(* synonyms *)
|
||||
& ~
|
||||
|
||||
(* illegal characters *)
|
||||
` ! @ $ % \ ? _
|
||||
|
||||
(* illegal identifiers *)
|
||||
|
||||
_bar _bar_baz _bar_baz__bam _bar_baz__bam_boo
|
||||
|
||||
bar_ bar_baz_ bar_baz__bam_ bar_baz__bam_boo_
|
||||
|
||||
__bar __bar_baz __bar_baz__bam __bar_baz__bam_boo
|
||||
|
||||
bar__ bar_baz__ bar_baz__bam__ bar_baz__bam_boo__
|
||||
|
||||
bar__baz __bar_baz__ __bar__baz__ __
|
||||
|
||||
|
||||
END Foobar.
|
146
runtime/syntax/testdir/input/modula2_r10.def
Normal file
146
runtime/syntax/testdir/input/modula2_r10.def
Normal file
@@ -0,0 +1,146 @@
|
||||
(* Modula-2 R10 Test File for Vim Syntax Colouring *)
|
||||
|
||||
(* --------------------------------------------------
|
||||
* THIS FILE IS LICENSED UNDER THE VIM LICENSE
|
||||
* see https://github.com/vim/vim/blob/master/LICENSE
|
||||
* -------------------------------------------------- *)
|
||||
|
||||
DEFINITION MODULE Foobar; (*!m2r10*)
|
||||
|
||||
IMPORT UNSAFE ALIAS BYTE, WORD, ADDRESS;
|
||||
|
||||
CONST MaxFoo = 1.0;
|
||||
|
||||
TYPE Foo = ALIAS OF Bar;
|
||||
|
||||
(* predefined constants *)
|
||||
NIL FALSE TRUE
|
||||
|
||||
(* predefined types *)
|
||||
BOOLEAN CHAR UNICHAR OCTET CARDINAL LONGCARD INTEGER LONGINT REAL LONGREAL
|
||||
|
||||
(* predefined procedures *)
|
||||
APPEND INSERT REMOVE SORT SORTNEW
|
||||
|
||||
(* predefined functions *)
|
||||
CHR ORD ODD ABS SGN MIN MAX LOG2 POW2 ENTIER PRED SUCC PTR CAPACITY COUNT LENGTH
|
||||
|
||||
(* predefined macros *)
|
||||
NOP TMIN TMAX TSIZE TLIMIT
|
||||
|
||||
(* unsafe builtins *)
|
||||
UNSAFE
|
||||
|
||||
(* unsafe builtin types *)
|
||||
BYTE WORD LONGWORD ADDRESS OCTETSEQ
|
||||
|
||||
(* unsafe builtin procedures *)
|
||||
ADD SUB DEC INC SETBIT HALT
|
||||
|
||||
(* unsafe builtin functions *)
|
||||
ADR CAST BIT SHL SHR BWNOT BWAND BWOR
|
||||
|
||||
(* non-portable language extensions *)
|
||||
ASSEMBLER ASM REG
|
||||
|
||||
(* user defined identifiers *)
|
||||
foobar Foobar FooBar foo_bar foo0
|
||||
|
||||
|
||||
(* string literals *)
|
||||
str := "foo 'bar' baz";
|
||||
str := 'foo "bar" baz';
|
||||
|
||||
(* numeric literals *)
|
||||
0b0110'0011'0110'0000, 0u0A, 0x0123, 0xCAFE'D00D
|
||||
1'000'000.00, 1.23, 1.23e+10, 1.234'567'890e-1'000
|
||||
|
||||
|
||||
(* language defined pragmas *)
|
||||
<*MSG=INFO:"foobar"*> <*ENCODING="UTF8"*> <*INLINE*> <*NOINLINE*> <*FFI="C"*>
|
||||
|
||||
(* implementation defined pragmas *)
|
||||
<*GM2.Foobar|W=Bazbam*>
|
||||
|
||||
|
||||
(* single line comment *)
|
||||
! foo bar baz bam boo
|
||||
|
||||
(* block comments with emphasis *)
|
||||
(* copyright (c) 2016 Modula-2 Foundation.
|
||||
authors B.Kowarsch and R.Sutcliffe
|
||||
license see LICENSE *)
|
||||
|
||||
(* pre-conditions: foo bar baz bam boo doodle wah.
|
||||
post-conditions: foodle babble bozo bim bam dang.
|
||||
error-conditions: dada jingle jungle boggle dee boo. *)
|
||||
|
||||
(* (* *) *)
|
||||
|
||||
(* bindings *)
|
||||
PROCEDURE [+] sum ( a, b : BCD ) : BCD;
|
||||
|
||||
PROCEDURE [MOD] modulus ( n, m : INT64 ) : INT64;
|
||||
|
||||
PROCEDURE [RETAIN] Retain ( foo : Foo );
|
||||
|
||||
PROCEDURE [LENGTH] length ( str : String ) : LONGCARD;
|
||||
|
||||
|
||||
(* procedures *)
|
||||
PROCEDURE NewFooWithBar ( VAR foo: Foo; bar : INTEGER );
|
||||
BEGIN
|
||||
NEW(foo);
|
||||
foo^.bar := bar;
|
||||
RETURN
|
||||
END NewFooWithBar;
|
||||
|
||||
END END;
|
||||
|
||||
(* functions *)
|
||||
PROCEDURE bar ( foo : Foo ) : INTEGER;
|
||||
BEGIN
|
||||
IF foo = NIL THEN
|
||||
UNSAFE.HALT
|
||||
ELSE
|
||||
RETURN foo^.bar
|
||||
END (* IF *)
|
||||
END bar;
|
||||
|
||||
|
||||
(* technical debt *)
|
||||
TO DO ( 1234, Weight.Major ) (* foo *)
|
||||
"redesign foo", 2d;
|
||||
"replace foo", 2d;
|
||||
"test new foo", 1d
|
||||
END (* TO DO *);
|
||||
|
||||
PROCEDURE SetBaba <*DEPRECATED*> ( n : CARDINAL );
|
||||
|
||||
|
||||
(* disabled code *)
|
||||
?<
|
||||
WHILE foo = bar DO
|
||||
baz(bam, boo)
|
||||
END (* WHILE *);
|
||||
>?
|
||||
|
||||
|
||||
(* illegal characters *)
|
||||
` ~ $ % ? _
|
||||
|
||||
(* illegal identifiers *)
|
||||
|
||||
_bar _bar_baz _bar_baz__bam _bar_baz__bam_boo
|
||||
|
||||
bar_ bar_baz_ bar_baz__bam_ bar_baz__bam_boo_
|
||||
|
||||
__bar __bar_baz __bar_baz__bam __bar_baz__bam_boo
|
||||
|
||||
bar__ bar_baz__ bar_baz__bam__ bar_baz__bam_boo__
|
||||
|
||||
bar__baz __bar_baz__ __bar__baz__ __
|
||||
|
||||
|
||||
(* module end *)
|
||||
END Foobar.
|
Reference in New Issue
Block a user