----------------------------------------------------------------------------- Polemy 0.1.0 by k.inaba (www.kmonos.net) Nov 8, 2010 ----------------------------------------------------------------------------- <> - Install DMD http://www.digitalmars.com/d/2.0/changelog.html Version 2.050 is recommended. Older and/or newer version may not work. - Build (for Windows) Run build.bat (for Unix) Run build.sh or use your favorite build tools upon main.d and polemy/*.d. Then you will get the executable "polemy" in the "bin" directory. <> d2stacktrace/* is written by Benjamin Thaut and licensed under 2-clause BSD License. See http://3d.benjamin-thaut.de/?p=15 for the detail. (this package is used only for enabling stack-traces during printing exceptions; it is not used for release builds.) polemy/* main.d All the other parts are written by Kazuhiro Inaba and licensed under NYSL 0.9982 ( http://www.kmonos.net/nysl/ ). <> > polemy starts REPL > polemy foo.pmy executes foo.pmy <> syntax E ::= ("var"|"let"|"def"|LAYER) ID "=" E ; E | "fun" "(" PARAMS ")" "{" E "}" | E "(" ARGS ")" | LAYER "(" E ")" | "(" E ")" | E BINOP E | "if" "(" E ")" "{" E "}" | "if" "(" E ")" "{" E "}" "else "{" E "}" | ("var"|"let"|"def"|LAYER) ID "(" PARAMS ")" "{" E "}" ARGS ::= ","-separated E's PARAMS ::= ","-separated VAR's LAYER ::= "@" ID if-then-else is a syntax sugar for a function call: if( E, fun(){E}, fun(){E} ) binary ops (e.g., E + E) is a syntax sugar: +(E, E) comment is "# ... \n"