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