Reports are collections of code in FiM++. A report contains all the code that will be run, as well as basic information about the program.

Contents Edit

A report must have the following:

  • A name
  • A addressee (another report from which it gets basic paragraphs)
  • A beginning
  • An end
  • The programmer's name

Related Phrases Edit

  • Report Ending
    • Your faithful student

Name Edit

Restrictions Edit

Each report name has the following restrictions:

Freedoms Edit

Each report name also has the following freedoms:

  • There is no hard limit on the length
  • May have any whitespace character in them
  • May contain literals, as long as they are not at the beginning of the name
  • May contain apostrophes
  • Encoded in UTF-8

Examples Edit

Here are some examples of good report names:

  • Princess Celestia
  • Fancy Mathematics
    • Report names don't have to start with "Princess", or even be a character's name.
  • Applejack's Drinking Song
    • Even though ' is used to declare character literals, it is used in the middle of a name, so it is okay.
  • True Facts
    • Even though true is a literal, FiM++ is case-sensitive, so True is valid for report naming.
  • Lesson 0
    • Even though 0 is always a literal, it is not the at the beginning of the name, so it's okay.

Here are some examples of bad report names:

  • A story I learned
    • I learned is always a keyword, so this will not compile.
    • The compiler sees that a keyword has been used and ends the report name, then does not see a punctuation mark and, furthermore, does not know what to do with the I learned phrase.
    • The compiler would throw an Unexpected Token Error
  • Hay, Celly!
    • compiler thinks "," is the end of the report name "Hay", and doesn't know what to do with the word "Celly"
    • The compiler would throw a Malformed Sentence Error, because "Celly" is not a complete sentence
  • 99 Jugs of Cider
    • 99 is always a literal, so it cannot be the beginning of a report name.
    • The compiler would throw an Unexpected Token Error

The Addressee Edit

Every report must have an addressee. If a report does not explicitly define an addressee, then it will not compile. The only report that does not have an addressee is the base report Princess Celestia. If you don't want to define a new addressee, use Princess Celestia.

Structure Edit

Reports must be written in the following structure:

(Optional imports; any amount)
Addressee specification; exactly one
(Optional interfaces)
Report declaration; exactly one
(Optional paragraphs; any amount)
Report closing; exactly one
Author name comment; exactly one

Imports Edit

Icon Info
Mane article: Imports

Declaration Edit

FDS Edit

Global variables Edit

Icon Info
Mane article: variables

Any variable declared inside the report that is not declared in a paragraph is a global variable. That is to say, it can be accessed form any report paragraph at any time

Paragraphs Edit

Icon Info
Mane article: Paragraphs

Paragraphs contain most of the code inside a report that runs

Closing Edit

Reports must be closed using the text Your faithful student, followed by a punctuation, followed by the programmer's name, followed by another punctuation. The programmer's name is a special comment, in that it is automatically started, ended with punctuation, and can be inserted into the final compiled file unchanged.

Your faithful student<punctuation> Programmer's name<punctuation>

See Also Edit