| (* 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. |