Metaprogramming Use Cases - oilshell/oil GitHub Wiki

Back to Metaprogramming -- language mechanisms

  • Matrix of use case vs. metaprogramming technique: https://lobste.rs/s/aqdixr/gentle_introduction_compile_time#c_0cuoc9

  • Notes about metaprogramming use cases, e.g. polyglot type systems and partial evaluation: https://www.reddit.com/r/ProgrammingLanguages/comments/73ldwj/the_lux_programming_language_strange_loop_2017/dnx309q/

    • Python 2.7 namedtuple
      • uses exec class_definition in namespace
    • Python 3.6 namedtuple
      • each field is an operator.itemgetter,
      • put on the class dict with with type() constructor
      • itemgetter calls:
        • item = PyTuple_GET_ITEM(ig->item, i);
        • val = PyObject_GetItem(obj, item);
    • interesting change!!!
      • ASDL could use this style. Since we don't have the parser, we want to use itemgetter. what about setter?
  • Oil Startup

    • core/id_kind.py -- every token/entity in OSH/Oil
    • Lexer State machine can be frozen
    • Lexer regexes can be compiled to gotos (a la re2c)
    • OPy parse tables using pgen2 (but not the Oil parser)
    • ASDL schema
    • Builtin Flags and Help could be frozen
    • misc regexes: to validate variable names, etc.