summaryrefslogtreecommitdiffstats
path: root/runtime/syntax/testdir/input/modula2_r10.def
blob: 0872d5dfb91cc11060dd763f4fa0dfce8f141bf1 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
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.