mirror of
https://github.com/vim/vim.git
synced 2025-07-26 11:04:33 -04:00
147 lines
2.9 KiB
Modula-2
147 lines
2.9 KiB
Modula-2
|
(* 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.
|