hpp-lang 0.6.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/LICENSE +21 -0
- package/README.md +29 -0
- package/dist/ast.d.ts +89 -0
- package/dist/ast.d.ts.map +1 -0
- package/dist/ast.js +2 -0
- package/dist/ast.js.map +1 -0
- package/dist/capabilities.d.ts +75 -0
- package/dist/capabilities.d.ts.map +1 -0
- package/dist/capabilities.js +181 -0
- package/dist/capabilities.js.map +1 -0
- package/dist/errors.d.ts +21 -0
- package/dist/errors.d.ts.map +1 -0
- package/dist/errors.js +27 -0
- package/dist/errors.js.map +1 -0
- package/dist/examples.d.ts +9 -0
- package/dist/examples.d.ts.map +1 -0
- package/dist/examples.js +780 -0
- package/dist/examples.js.map +1 -0
- package/dist/extensions/line/index.d.ts +45 -0
- package/dist/extensions/line/index.d.ts.map +1 -0
- package/dist/extensions/line/index.js +99 -0
- package/dist/extensions/line/index.js.map +1 -0
- package/dist/extensions/maze/index.d.ts +37 -0
- package/dist/extensions/maze/index.d.ts.map +1 -0
- package/dist/extensions/maze/index.js +43 -0
- package/dist/extensions/maze/index.js.map +1 -0
- package/dist/extensions/soccer/index.d.ts +8 -0
- package/dist/extensions/soccer/index.d.ts.map +1 -0
- package/dist/extensions/soccer/index.js +93 -0
- package/dist/extensions/soccer/index.js.map +1 -0
- package/dist/hardware.d.ts +44 -0
- package/dist/hardware.d.ts.map +1 -0
- package/dist/hardware.js +2 -0
- package/dist/hardware.js.map +1 -0
- package/dist/index.d.ts +59 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +69 -0
- package/dist/index.js.map +1 -0
- package/dist/interpreter.d.ts +88 -0
- package/dist/interpreter.d.ts.map +1 -0
- package/dist/interpreter.js +795 -0
- package/dist/interpreter.js.map +1 -0
- package/dist/lexer.d.ts +21 -0
- package/dist/lexer.d.ts.map +1 -0
- package/dist/lexer.js +175 -0
- package/dist/lexer.js.map +1 -0
- package/dist/parser.d.ts +60 -0
- package/dist/parser.d.ts.map +1 -0
- package/dist/parser.js +569 -0
- package/dist/parser.js.map +1 -0
- package/dist/robotics/actions.d.ts +13 -0
- package/dist/robotics/actions.d.ts.map +1 -0
- package/dist/robotics/actions.js +38 -0
- package/dist/robotics/actions.js.map +1 -0
- package/dist/robotics/contracts.d.ts +88 -0
- package/dist/robotics/contracts.d.ts.map +1 -0
- package/dist/robotics/contracts.js +31 -0
- package/dist/robotics/contracts.js.map +1 -0
- package/dist/robotics/index.d.ts +21 -0
- package/dist/robotics/index.d.ts.map +1 -0
- package/dist/robotics/index.js +19 -0
- package/dist/robotics/index.js.map +1 -0
- package/dist/robotics/motion.d.ts +139 -0
- package/dist/robotics/motion.d.ts.map +1 -0
- package/dist/robotics/motion.js +248 -0
- package/dist/robotics/motion.js.map +1 -0
- package/dist/robotics/sensors.d.ts +15 -0
- package/dist/robotics/sensors.d.ts.map +1 -0
- package/dist/robotics/sensors.js +12 -0
- package/dist/robotics/sensors.js.map +1 -0
- package/dist/robotics/snapshot.d.ts +12 -0
- package/dist/robotics/snapshot.d.ts.map +1 -0
- package/dist/robotics/snapshot.js +9 -0
- package/dist/robotics/snapshot.js.map +1 -0
- package/dist/robotics/types.d.ts +12 -0
- package/dist/robotics/types.d.ts.map +1 -0
- package/dist/robotics/types.js +9 -0
- package/dist/robotics/types.js.map +1 -0
- package/dist/runtime.d.ts +81 -0
- package/dist/runtime.d.ts.map +1 -0
- package/dist/runtime.js +150 -0
- package/dist/runtime.js.map +1 -0
- package/dist/tokens.d.ts +33 -0
- package/dist/tokens.d.ts.map +1 -0
- package/dist/tokens.js +97 -0
- package/dist/tokens.js.map +1 -0
- package/dist/version.d.ts +14 -0
- package/dist/version.d.ts.map +1 -0
- package/dist/version.js +6 -0
- package/dist/version.js.map +1 -0
- package/package.json +49 -0
|
@@ -0,0 +1,88 @@
|
|
|
1
|
+
import { Stmt } from './ast.js';
|
|
2
|
+
import { Hardware } from './hardware.js';
|
|
3
|
+
import type { Capability } from './capabilities.js';
|
|
4
|
+
import { HppError } from './errors.js';
|
|
5
|
+
export type { HppError } from './errors.js';
|
|
6
|
+
export { RuntimeError } from './errors.js';
|
|
7
|
+
/**
|
|
8
|
+
* Opções de execução fornecidas pelo `HppRuntime` (§7/§28).
|
|
9
|
+
* Sem elas o Core roda "puro", sem checagem de capability — é o caminho
|
|
10
|
+
* dos testes de núcleo; o runtime sempre envia as duas.
|
|
11
|
+
*/
|
|
12
|
+
export interface RunOptions {
|
|
13
|
+
/**
|
|
14
|
+
* Capacidades declaradas pelo hardware (habilita a checagem em runtime).
|
|
15
|
+
* `null` (ou omitido) = núcleo puro, sem gate de capability.
|
|
16
|
+
*/
|
|
17
|
+
capabilities?: Capability[] | null;
|
|
18
|
+
/** Segundos por ciclo do relógio determinístico (nunca `Date.now()`). */
|
|
19
|
+
dt?: number;
|
|
20
|
+
}
|
|
21
|
+
export type Value = number | boolean | string | HppFunction | Builtin;
|
|
22
|
+
export interface HppFunction {
|
|
23
|
+
__fn: true;
|
|
24
|
+
name: string;
|
|
25
|
+
params: string[];
|
|
26
|
+
body: Stmt[];
|
|
27
|
+
}
|
|
28
|
+
export interface Builtin {
|
|
29
|
+
__builtin: true;
|
|
30
|
+
name: string;
|
|
31
|
+
arity: number;
|
|
32
|
+
impl: (args: Value[]) => Value;
|
|
33
|
+
}
|
|
34
|
+
/** Resultado de 1 ciclo. `suspended` = temporal em andamento (§6). */
|
|
35
|
+
export interface RunResult {
|
|
36
|
+
ok: boolean;
|
|
37
|
+
error?: HppError;
|
|
38
|
+
steps: number;
|
|
39
|
+
suspended?: boolean;
|
|
40
|
+
}
|
|
41
|
+
/**
|
|
42
|
+
* Intérprete por árvore (tree-walk). Cada `run()` = 1 ciclo:
|
|
43
|
+
* foto dos sensores → (avalia o relógio do movimento) → executa o programa
|
|
44
|
+
* com combustível → ações saem na hora pelo hardware. Variáveis do aluno
|
|
45
|
+
* sobrevivem entre ciclos.
|
|
46
|
+
*
|
|
47
|
+
* **Movimentos temporais (§6)** tornam o programa um gerador: ao encontrar
|
|
48
|
+
* `ANDAR_POR`/`ESPERAR` o interpretador SUSPENDE a execução e guarda o
|
|
49
|
+
* ponto exato (dentro de `SE`, `REPETIR`, função…). Nos ciclos seguintes ele
|
|
50
|
+
* só soma `dt` no relógio — quando o tempo vence, conclui o movimento e
|
|
51
|
+
* RETOMA de onde parou. Nada bloqueia: `sleep`/`setTimeout`/`await` não
|
|
52
|
+
* existem aqui.
|
|
53
|
+
*/
|
|
54
|
+
export declare class Interpreter {
|
|
55
|
+
private globals;
|
|
56
|
+
private fuel;
|
|
57
|
+
/** Execução suspensa entre ciclos (null = programa parou no topo). */
|
|
58
|
+
private gen;
|
|
59
|
+
private motion;
|
|
60
|
+
private caps;
|
|
61
|
+
private dt;
|
|
62
|
+
/** Linha do movimento em curso (p/ erros de sensor ausente). */
|
|
63
|
+
private pendingLine;
|
|
64
|
+
private steps;
|
|
65
|
+
private snapshot;
|
|
66
|
+
/** Limpa a memória do aluno e a execução em curso (recomeçar). */
|
|
67
|
+
reset(): void;
|
|
68
|
+
run(program: Stmt[], hw: Hardware, fuel?: number, opts?: RunOptions): RunResult;
|
|
69
|
+
/** Sensores genéricos de estado de movimento (§14). */
|
|
70
|
+
private injectMotionState;
|
|
71
|
+
/** Conclusão de um temporal: para o robô (§6 — "executar PARAR"). */
|
|
72
|
+
private finishTimed;
|
|
73
|
+
/** Lê um sensor numérico do snapshot atual, na ordem de preferência. */
|
|
74
|
+
private readSensorNum;
|
|
75
|
+
/**
|
|
76
|
+
* Avalia a meta de um comando espacial. `true` = meta atingida.
|
|
77
|
+
* Sem leitura real o movimento é ABORTADO com erro — o H++ nunca finge
|
|
78
|
+
* que uma distância/ângulo foi alcançado (§8).
|
|
79
|
+
*/
|
|
80
|
+
private advanceSpatial;
|
|
81
|
+
private burn;
|
|
82
|
+
private execList;
|
|
83
|
+
private execStmt;
|
|
84
|
+
private execAction;
|
|
85
|
+
private evalExpr;
|
|
86
|
+
private evalBinary;
|
|
87
|
+
}
|
|
88
|
+
//# sourceMappingURL=interpreter.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"interpreter.d.ts","sourceRoot":"","sources":["../src/interpreter.ts"],"names":[],"mappings":"AAAA,OAAO,EAAQ,IAAI,EAAE,MAAM,UAAU,CAAC;AACtC,OAAO,EAAE,QAAQ,EAAe,MAAM,eAAe,CAAC;AACtD,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAC;AAWpD,OAAO,EAAE,QAAQ,EAAgB,MAAM,aAAa,CAAC;AAErD,YAAY,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAC;AAC5C,OAAO,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAE3C;;;;GAIG;AACH,MAAM,WAAW,UAAU;IACzB;;;OAGG;IACH,YAAY,CAAC,EAAE,UAAU,EAAE,GAAG,IAAI,CAAC;IACnC,yEAAyE;IACzE,EAAE,CAAC,EAAE,MAAM,CAAC;CACb;AAED,MAAM,MAAM,KAAK,GAAG,MAAM,GAAG,OAAO,GAAG,MAAM,GAAG,WAAW,GAAG,OAAO,CAAC;AAEtE,MAAM,WAAW,WAAW;IAC1B,IAAI,EAAE,IAAI,CAAC;IACX,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,MAAM,EAAE,CAAC;IACjB,IAAI,EAAE,IAAI,EAAE,CAAC;CACd;AAED,MAAM,WAAW,OAAO;IACtB,SAAS,EAAE,IAAI,CAAC;IAChB,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,EAAE,CAAC,IAAI,EAAE,KAAK,EAAE,KAAK,KAAK,CAAC;CAChC;AAMD,sEAAsE;AACtE,MAAM,WAAW,SAAS;IACxB,EAAE,EAAE,OAAO,CAAC;IACZ,KAAK,CAAC,EAAE,QAAQ,CAAC;IACjB,KAAK,EAAE,MAAM,CAAC;IACd,SAAS,CAAC,EAAE,OAAO,CAAC;CACrB;AAqED;;;;;;;;;;;;GAYG;AACH,qBAAa,WAAW;IACtB,OAAO,CAAC,OAAO,CAAa;IAC5B,OAAO,CAAC,IAAI,CAAK;IACjB,sEAAsE;IACtE,OAAO,CAAC,GAAG,CAA4C;IACvD,OAAO,CAAC,MAAM,CAAqB;IACnC,OAAO,CAAC,IAAI,CAA6B;IACzC,OAAO,CAAC,EAAE,CAAW;IACrB,gEAAgE;IAChE,OAAO,CAAC,WAAW,CAAK;IACxB,OAAO,CAAC,KAAK,CAAK;IAClB,OAAO,CAAC,QAAQ,CAAmC;IAEnD,kEAAkE;IAClE,KAAK,IAAI,IAAI;IAMb,GAAG,CAAC,OAAO,EAAE,IAAI,EAAE,EAAE,EAAE,EAAE,QAAQ,EAAE,IAAI,SAAO,EAAE,IAAI,CAAC,EAAE,UAAU,GAAG,SAAS;IAiE7E,uDAAuD;IACvD,OAAO,CAAC,iBAAiB;IAmBzB,qEAAqE;IACrE,OAAO,CAAC,WAAW;IAOnB,wEAAwE;IACxE,OAAO,CAAC,aAAa;IAQrB;;;;OAIG;IACH,OAAO,CAAC,cAAc;IAwBtB,OAAO,CAAC,IAAI;IAWZ,OAAO,CAAE,QAAQ;IAIjB,OAAO,CAAE,QAAQ;IAmFjB,OAAO,CAAE,UAAU;IA0QnB,OAAO,CAAE,QAAQ;IA+DjB,OAAO,CAAE,UAAU;CAwDpB"}
|