2014-05-06 01:25:08 +08:00

126 lines
2.6 KiB
Dylan

module: sample
comment: for make sure that does not highlight per word.
and it continues on to the next line.
define class <car> (<object>)
slot serial-number :: <integer> = unique-serial-number();
constant slot model-name :: <string>,
required-init-keyword: model:;
each-subclass slot has-sunroof? :: <boolean>,
init-keyword: sunroof?:,
init-value: #f;
keyword foo:;
required keyword bar:;
end class <car>;
define class <flying-car> (<car>)
end class <flying-car>;
let flying-car = make(<flying-car>);
let car? :: <car?> = #f;
let prefixed-car :: <vehicles/car> = #f;
let model :: <car-911> = #f;
define constant $empty-string = "";
define constant $escaped-backslash = '\\';
define constant $escaped-single-quote = '\'';
define variable *unique-serial-number* = 0;
define function unique-serial-number() => (usn :: <integer>)
let serial = *unique-serial-number*;
*unique-serial-number* := *unique-serial-number* + 1;
serial;
end function;
define constant $blue-car = make(<car>, model: "Viper");
define constant $black-car = make(<car>, model: "Town Car", sunroof?: #t);
define constant $red-car = make(<car>, model: "F40", sunroof?: #f);
define method foo() => _ :: <boolean>
#t
end method;
define method foo() => _ :: <boolean>;
#t
end method;
define method \+
(offset1 :: <time-offset>, offset2 :: <time-offset>)
=> (sum :: <time-offset>)
let sum = offset1.total-seconds + offset2.total-seconds;
make(<time-offset>, total-seconds: sum);
end method \+;
define method bar ()
1 | 2 & 3
end
if (bar)
1
elseif (foo)
2
else
3
end if;
select (foo by instance?)
<integer> => 1
otherwise => 3
end select;
/* multi
line
comment
*/
/* multi line comments
/* can be */
nested */
define constant $symbol = #"hello";
define variable *vector* = #[3.5, 5]
define constant $list = #(1, 2);
define constant $pair = #(1 . "foo")
let octal-number = #o238;
let hex-number = #x3890ADEF;
let binary-number = #b1010;
let float-exponent = 3.5e10;
block (return)
with-lock (lock)
return();
end;
exception (e :: <error>)
format-out("Oh no");
cleanup
return();
afterwards
format-out("Hello");
end;
define macro repeat
{ repeat ?:body end }
=> { block (?=stop!)
local method again() ?body; again() end;
again();
end }
end macro repeat;
define macro with-decoded-seconds
{
with-decoded-seconds
(?max:variable, ?min:variable, ?sec:variable = ?time:expression)
?:body
end
}
=> {
let (?max, ?min, ?sec) = decode-total-seconds(?time);
?body
}
end macro;
let x = "This size call should be seen as a builtin despite the odd case.".siZe;