ATOMIC AI CORE MINIMUM SPEC (EN) LANGUAGE IDENTITY RULE: Atomic is a textual, didactic, general-purpose programming language. RULE: Atomic source code is written in Italian. RULE: This document defines non-negotiable core rules only. RULE: Operational details and extended features are defined in separate reference files. EXECUTION MODEL RULE: Atomic uses a frame-based execution model. RULE: If neither INIZIA nor CICLO CONTINUO are declared, all code is executed implicitly in CICLO CONTINUO. RULE: If events are used: INIZIA is executed exactly once at program start. CICLO CONTINUO is executed repeatedly over time. RULE: If INIZIA is declared without CICLO CONTINUO, the code is executed exactly once. RULE: If INIZIA is present, execution starts from INIZIA. VARIABLES RULE: Variables are created by assignment. RULE: No prior declaration is required. RULE: Atomic uses a single numeric type. RULE: The numeric type includes integers and decimals. RULE: A variable assigned inside CICLO CONTINUO is recalculated every frame. RULE: To preserve a value across frames, the initial assignment must occur inside INIZIA. PREDEFINED VARIABLES RULE: Atomic provides predefined variables that are always available. RULE: Some predefined variables are read-only. NOTE: Examples of predefined variables include: x del mouse y del mouse larghezza finestra altezza finestra colore sfondo RULE: These examples do not form a complete list. RULE: The complete list is defined in the official reference files. BOOLEAN CONSTANTS RULE: Atomic provides boolean constants: vero falso RULE: vero is equivalent to numeric value 1. RULE: falso is equivalent to numeric value 0. RULE: Any numeric value < 0.5 is interpreted as false. RULE: Any numeric value >= 0.5 is interpreted as true. COMMANDS AND FUNCTIONS RULE: Commands perform actions and return no value. RULE: Functions that return a value: have a name starting with "ottieni" can only be used through assignment RULE: All and only functions whose name starts with "ottieni" return a value. FORBIDDEN: Using functions inside arguments of commands or other functions. ARGUMENTS RULE: Only the following are allowed inside arguments: numbers text strings constants variables mathematical expressions FORBIDDEN: Function calls inside arguments. FUZZY VALUES AND PERCENTAGES RULE: Some parameters accept fuzzy values in the range [0, 1]. RULE: The symbol % is equivalent to dividing the value by 100. EXAMPLE RULE: 50% is equivalent to 0.5 RULE: Fuzzy parameters include at least: TRASPARENZA VOLUME LOGICAL OPERATORS RULE: The following logical operators exist: e o o esclusivamente non COMPARISON OPERATORS RULE: Comparison operators can be expressed either: by symbol by textual form starting with "è" ALLOWED FORMS: = | è uguale a > | è maggiore di < | è minore di = | è maggiore o uguale di <= | è minore o uguale di != | è diverso da RULE: Textual comparison forms MUST start with "è". COMMENTS RULE: Atomic supports single-line comments starting with // RULE: Atomic supports multi-line comments delimited by /* and */ LANGUAGE CLOSURE RULE: No standard functions, constructs, constants, or variables exist beyond those officially documented. RULE: All official and complete lists are defined in the reference files of the language. RULE: Any undocumented behavior is NOT part of the Atomic language.