The entire file you type will be parsed as a module. MODULE Foo; IMPORT Bar, Baz; (* Top-level comment *) UI TextTool(Foo); UI SetTool(SetFont, "FontFace"); UI Param(PS.SetWidth, Width0); UI F(); UI P(2, f(NIL)); UI G((0.5, 0) REL ((10,20), (30,40)), 2 * w + 3 * z, Math.Pi, (0.5, 0) REL ((10,20), (30,40)), 2 * w + 3 * z, Math.Pi); CONST Pi = 3.14159, EVal = 2.17; PRIVATE CONST Two = 2, WordList = [ "Cat", "Dog", "Fish" ], ListSize = 19; VAR x := Pi, y, w := 2 * 2 * 3 * 3 * 5 * 27 * 27 * 27 * 31; PRIVATE VAR z := WordList, temp, foo := "Foo"; PRED RightAngle(a, b, c) IS (E y :: a = (0, y) REL (b, c)) END; PRIVATE FUNC y = Sqrt(x) IS y ~ 1 AND y * y = x END; PROC ProjTest() IS VAR a IN SKIP END; VAR a ~ (100, 200), b ~ (100,200), c ~ (100, 200), d ~ (100, 200), e ~ (100, 200) IN SKIP END; VAR a, b IN PS.MoveTo(a); PS.CurveTo(a, b, b) END; VAR a ~ (100, 200), b ~ (100,200), c ~ (100, 200), d ~ (100, 200), e ~ (100, 200) IN PS.MoveTo(a); PS.CurveTo(b, c, d); PS.LineTo(e) END END; PROC EqTr(a, b) IS IF VAR c ~ (0.5, 0.866025) REL (a, b) IN (a, b) CONG (b, c) AND (b, c) CONG (c, a) -> PS.MoveTo(a); PS.LineTo(b); PS.LineTo(c); PS.Close() END FI END; PROC z := Gcd(x, y) IS DO x > y -> x := x - y | y > x -> y := y - x OD; z := x END; (* This is a mult-paragraph comment. Here is the first paragraph. Here is the second paragraph. This one should wrap too. Finally, here is the third paragraph. Here is some verbatim text: | verbatim | text | There should be a blank line before the first one And here is the start of a new paragraph. This should wrap somewhere. | | There should not be a blank line before the start | of this verbatim text. This is a new paragraph, however. | What happens if I don't leave a blank line after | the verbatim text? Will this be considered a new paragraph? *) ^D MODULE Foo; IMPORT Bar, Baz; (* Top-level comment *) UI TextTool(Foo); UI SetTool(SetFont, "FontFace"); UI Param(PS.SetWidth, Width0); UI F(); UI P(2, f(NIL)); UI G((0.5, 0) REL ((10, 20), (30, 40)), 2 * w + 3 * z, Math.Pi, (0.5, 0) REL ((10, 20), (30, 40)), 2 * w + 3 * z, Math.Pi); CONST Pi = 3.142, EVal = 2.17; PRIVATE CONST Two = 2, WordList = ["Cat", "Dog", "Fish"], ListSize = 19; VAR x := Pi, y, w := 2 * 2 * 3 * 3 * 5 * 27 * 27 * 27 * 31; PRIVATE VAR z := WordList, temp, foo := "Foo"; PRED RightAngle(a, b, c) IS (E y :: a = (0, y) REL (b, c)) END; PRIVATE FUNC y = Sqrt(x) IS y ~ 1 AND y * y = x END; PROC ProjTest() IS VAR a IN SKIP END; VAR a ~ (100, 200), b ~ (100, 200), c ~ (100, 200), d ~ (100, 200), e ~ (100, 200) IN SKIP END; VAR a, b IN PS.MoveTo(a); PS.CurveTo(a, b, b) END; VAR a ~ (100, 200), b ~ (100, 200), c ~ (100, 200), d ~ (100, 200), e ~ (100, 200) IN PS.MoveTo(a); PS.CurveTo(b, c, d); PS.LineTo(e) END END; PROC EqTr(a, b) IS IF VAR c ~ (0.5, 0.866) REL (a, b) IN (a, b) CONG (b, c) AND (b, c) CONG (c, a) -> PS.MoveTo(a); PS.LineTo(b); PS.LineTo(c); PS.Close() END FI END; PROC z := Gcd(x, y) IS DO x > y -> x := x - y | y > x -> y := y - x OD; z := x END; (* This is a mult-paragraph comment. Here is the first paragraph. Here is the second paragraph. This one should wrap too. Finally, here is the third paragraph. Here is some verbatim text: | verbatim | text | There should be a blank line before the first one And here is the start of a new paragraph. This should wrap somewhere. | | There should not be a blank line before the start | of this verbatim text. This is a new paragraph, however. | What happens if I don't leave a blank line after | the verbatim text? Will this be considered a new paragraph? *)