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ší. |