Psybervillage

Psybergram

 

Psybergram (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). Psybergram source files have a .PGRM extension. Psybertags files (the sister language of Psybergram, a text markup language) have a .PTAG extension. Psybergram 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 Psybertags
  • 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

Psybertags

Psybertags is a simplified markup language used to replace HTML. Mock JSON files using Psybertags syntax have a .PGJS extension, and include no commas. Instead of myid: val, use [myid: val]. Instead of [1, 2, 3], use [arr: [: 1][: 2][: 3]]. Arbitrary Psybertags code can be embedded in the Psybergram echo statement. Psybertags 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]*
  • Psybergram call:
    • [expr: <expr>]
    • [exec: <stmt>... ]
    • [pgrm: <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.

[ Back to Top ]