Projekt

Obecné

Profil

Analýza CLI » Historie » Verze 3

Duc Long Hoang, 2024-03-31 19:54

1 1 Duc Long Hoang
h1. Analýza CLI
2 2 Duc Long Hoang
3 3 Duc Long Hoang
---
4 2 Duc Long Hoang
5 3 Duc Long Hoang
h2. Commands
6 2 Duc Long Hoang
7 3 Duc Long Hoang
Všechny commandy jsou child class abtraktní třídy @AbstractCommand@.
8 1 Duc Long Hoang
9 3 Duc Long Hoang
Vnitřní členy třídy @AbstractCommand@:
10
* @string Name@
11
** název příkazu
12
** má getter
13
* @string Description@
14
** popisek příkazu
15
** má getter
16
* @void Help()@
17
** metoda vypíše do konzole pomoc k příkazu
18
* @void Execute(string args[])@
19
** args jsou parametry, každý příkaz má jiné
20
** metoda vykoná příkaz
21 2 Duc Long Hoang
22 3 Duc Long Hoang
Pro každý příkaz vytvořit vlastní třídu co dědí od @AbstractCommand@
23 2 Duc Long Hoang
24 3 Duc Long Hoang
* @CheckCommand@
25
** Zkontroluje program na syntaxi a statickou sémantiku - něco jako compile time checking
26
* @DebugCommand@
27
** debuguje program pomocí @Debugger@ třídy a metody @Step()@
28
* @MergeCommand@
29
** přidává nebo odebírá funkce z programu
30
* @TestCommand@
31
** příkaz pro unit testování
32
* @ExportCommand@
33
** Export programu do SVG - nechápu proč bychom to potřebovali
34
* @RunCommand@
35
** spustí program
36
** možné parametry - add, replace, overridde, nooutput, time
37
* @InfoCommand@
38
** vypíše informace o programu - jméno programu, autor, saved a about
39
* @ConvertCommand@
40
** konvertuje program do jiného jazyka - v našem případě do C# a Python
41 2 Duc Long Hoang
42 3 Duc Long Hoang
Třída @AbstractLoader@. To je podklad pro uložení do paměti různé typy souborů. Např, čtení .fprg souboru nebo souboru s pseudokódem.
43 2 Duc Long Hoang
To mi pravděpodobně nebudeme mít zapotřebí udělat protože máme interpretera. a nemusíme loadovat/analyzovat soubor.
44
45 3 Duc Long Hoang
Třída @ProgramDatabase@ je de facto úložiště pro metadata funkcí a příkazů. Ukládá si o jednotlivé programové řádce, z jakého souboru a funkce je. Na jakém řádku se nachází atd. To umožnuje přesouvání bloků kódu mezi soubory. ProgramDatabase si udržuje všechny soubory v Dictionary ve formě klíč = název souboru a hodnota = string[], kde každý string pŘedstavuje jednu řádku. Ostatní metody v této třídě víceméně aktualizují metadata. Nebudeme potřebovat protože máme interpretera ale bude třeba rozšířit příkazy o metadata a informace v jaké funkci se příkaz nachází, na jaké řádce je, atd.
46 2 Duc Long Hoang
47 3 Duc Long Hoang
Třída @Debugger@ která dělá debug nad programem. To mi nebudeme potřebovat protože bude mít debugger uvnitř našeho interpretera. U interpretera je ještě třeba doplnit informace ohledně současného řádku a breakpointy. V interpreterovi chybí možnost otevřít více souborů. Řešení buď jeden interpreter per soubor nebo interpreter na všechny soubory. Druhé řešení je asi lepší.