Skip to Content
Lumensalis CircuitPython framework coming soon 🎉

Vocabulary

The LCPF provides a vocabulary for defining projects.

Grammar

From the user’s perspective, an LCPF project is primarily a collection of

  • kind
    • taxonomical classifications for nouns
      • typically - but not always - refers to a python class / type
    • can have hierarchical relationships with other kinds
      • typically - but not always - based on class inheritance
      • specifically supports the concept of “is a” relationships
  • nouns
    • a “thing” (object) which
      • can have their own inner nouns (properties/attributes)
      • can provide it’s own “verbs” (typically class methods)
      • is a member of a “taxonomical classification”
        • technically usually refers to the instance class
    • VERY few of which are predifined at the global level
      • typically parts of of other nouns or created by verbs
  • proper nouns
    • named nouns “produced” by verbs
  • verbs
    • perform an action
    • this is typically a declaritive action
      • in other words, the action performed is defining the project, not defining how to do something after the project starts “running”
    • many verbs create new nouns (objects)
    • unlike nouns, there are a number of predefined verbs
    • can be restricted based on kind
      • some verbs only work with specifc kinds, i.e. they must be given a noun of that kind as the subjext/object of the verb

The “progenitor” noun in a project defintion is usually main, but can be whatever the user wants to call it. It is simply an instance of the MainManager class, produced early in the definition through some variation of

main = ProjectManager("projectName")

The MainManager contains class a variety of “verbs” provides a number of methods (verbs) to define the project.

which provides a number of methods (verbs) to define the project.

The LCPF grammar

That said, the vocabulary and grammar is designed to be as simple and intuitive as possible. Specifically, when the “normal” intuitive sense of a term for a “non-programmer” might interpret a given “term” best the LCPF is biased towards being understandable by non-programmers (even )