Euphegram (implemented in Java) is an open source Python dialect in which all operators precede their operands, and parentheses are used for all grouping (except string literals, which are delimited with double quotes, also statements are separated by semicolons). Euphegram source files have a .EGRM extension. EGML files (the sister language of Euphegram: EupheGram Markup Language) have a .EGML extension. Euphegram boasts an ultra-simple Lisp-like syntax unlike all other languages.
Special Characters
- Core:
- () grouping
- - word separator
- ; end of stmt.
- : dot operator
- " string delimiter
- \ escape char.
- Operators:
- + - * / %
- = < >
- & | ^ ~ ! ?
- Other:
- # comment
- {} block comment
- _ used in identifiers
- $ string prefix char.
Differences from Python
- Parentheses, not whitespace
- Operators come before their operands
- Integration with EGML
- Information hiding (public/private)
- Single, not multiple inheritance
- Adds interfaces ("hedron" defs.)
- Drops iterators and generators
- Adds lambdas
- Adds quote and list-compile functions, treating code as data
- Adds cons, car and cdr functionality
EGML
EGML is a simplified markup language used to replace HTML. Mock JSON files using EGML syntax have a .EGJS extension, and include no commas. Instead of myid: val, use [myid: val]. Instead of [1, 2, 3], use [arr: [: 1][: 2][: 3]]. Arbitrary EGML code can be embedded in the Euphegram echo statement. EGML syntax, where asterisk (*) means occurs zero or more times, is defined as follows:
- Tags:
- [tag]
- [tag (fld val)*: body]
- [tag (fld val)*| body |tag]
- Body:
- text
- [(fld val)*: text]*
- Euphegram call:
- [expr: <expr>]
- [exec: <stmt>... ]
- [egrm: <path>]
- Note:
- for fld = style, corresponding val = (fld val)*
Keyboard Aid
This optional feature enables hyphens, open parentheses, and close parentheses to be entered by typing semicolons, commas, and periods, respectively. When enabled, keyboard aid can be temporarily suppressed by using the Ctrl key in conjunction with typing semicolons, commas, and periods (no character substitution takes place). By convention, hyphens are used to separate words in multi-word identifiers, but semicolons are easier to type than hyphens. Similarly, commas and periods are easier to type than parentheses. Typing semicolon converts previous hyphen to a semicolon, and previous semicolon to a hyphen (use the Ctrl key to override this behaviour). Typing semicolon after close parenthesis simply inserts semicolon. Typing space after hyphen at end of identifier converts hyphen to underscore. The close delim switch automatically inserts a closing parenthesis/brace/double quote when the open delimiter is inserted.