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 @@
|
|
|
1
|
+
{"version":3,"file":"snapshot.js","sourceRoot":"","sources":["../../src/robotics/snapshot.ts"],"names":[],"mappings":"AAUA,4EAA4E;AAC5E,MAAM,UAAU,qBAAqB,CACnC,IAAiC;IAEjC,MAAM,GAAG,GAAmB,EAAE,CAAC;IAC/B,KAAK,MAAM,CAAC,IAAI,IAAI,EAAE,CAAC;QACrB,GAAG,CAAC,CAAC,CAAC,WAAW,EAAE,CAAC,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC;IACjC,CAAC;IACD,OAAO,GAAG,CAAC;AACb,CAAC"}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* H++ Robotics — tipos fundamentais da camada robótica.
|
|
3
|
+
*
|
|
4
|
+
* O core (`lexer/parser/AST/interpreter`) não conhece robótica; esta camada
|
|
5
|
+
* traduz valores da linguagem para o mundo físico (sensores, atuadores).
|
|
6
|
+
* Re-exporta os tipos canônicos sem duplicar definições.
|
|
7
|
+
*/
|
|
8
|
+
export type { SensorValue, Hardware } from '../hardware.js';
|
|
9
|
+
export type { Value, HppFunction, Builtin } from '../interpreter.js';
|
|
10
|
+
export type { Capability, ExtensionDescriptor } from '../capabilities.js';
|
|
11
|
+
export type { VersionInfo } from '../version.js';
|
|
12
|
+
//# sourceMappingURL=types.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/robotics/types.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,YAAY,EAAE,WAAW,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAC;AAC5D,YAAY,EAAE,KAAK,EAAE,WAAW,EAAE,OAAO,EAAE,MAAM,mBAAmB,CAAC;AACrE,YAAY,EAAE,UAAU,EAAE,mBAAmB,EAAE,MAAM,oBAAoB,CAAC;AAC1E,YAAY,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC"}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* H++ Robotics — tipos fundamentais da camada robótica.
|
|
3
|
+
*
|
|
4
|
+
* O core (`lexer/parser/AST/interpreter`) não conhece robótica; esta camada
|
|
5
|
+
* traduz valores da linguagem para o mundo físico (sensores, atuadores).
|
|
6
|
+
* Re-exporta os tipos canônicos sem duplicar definições.
|
|
7
|
+
*/
|
|
8
|
+
export {};
|
|
9
|
+
//# sourceMappingURL=types.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/robotics/types.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG"}
|
|
@@ -0,0 +1,81 @@
|
|
|
1
|
+
import { Hardware, SensorValue } from './hardware.js';
|
|
2
|
+
import { Program } from './index.js';
|
|
3
|
+
import { VersionInfo } from './version.js';
|
|
4
|
+
import { Capability } from './capabilities.js';
|
|
5
|
+
import { HppError } from './interpreter.js';
|
|
6
|
+
/**
|
|
7
|
+
* HppRuntime (§7): camada entre o interpretador e o adapter do robô.
|
|
8
|
+
* É um `Hardware` (o interpretador não muda), mas agrega:
|
|
9
|
+
* - `ciclo`: contador de ticks (relógio determinístico do núcleo);
|
|
10
|
+
* - capacidades do hardware + checagem didática (`exigir(...)`);
|
|
11
|
+
* - informação de versão (core + extensão ativa).
|
|
12
|
+
*
|
|
13
|
+
* Arquitetura:
|
|
14
|
+
* ```text
|
|
15
|
+
* H++ Source → Lexer → Parser → AST → Interpreter → HppRuntime → Adapter → Robô
|
|
16
|
+
* ```
|
|
17
|
+
*/
|
|
18
|
+
export declare class HppRuntime implements Hardware {
|
|
19
|
+
private hw;
|
|
20
|
+
private capabilities;
|
|
21
|
+
private extensionId;
|
|
22
|
+
private extensionVersion;
|
|
23
|
+
/** Ciclos executados desde `reset()` (relógio do núcleo). */
|
|
24
|
+
ciclo: number;
|
|
25
|
+
/**
|
|
26
|
+
* Segundos por ciclo do relógio determinístico (§6/§28).
|
|
27
|
+
* Os comandos temporais (ANDAR_POR/ESPERAR/…) contam com este `dt` —
|
|
28
|
+
* nunca com `Date.now()`, `sleep`, `setTimeout` ou `await`.
|
|
29
|
+
*/
|
|
30
|
+
dt: number;
|
|
31
|
+
constructor(hw: Hardware, capabilities?: Capability[], extensionId?: string, extensionVersion?: string);
|
|
32
|
+
/** Foto dos sensores + `ciclo` do núcleo (sempre disponível). */
|
|
33
|
+
sensors(): Record<string, SensorValue>;
|
|
34
|
+
drive(throttle: number): void;
|
|
35
|
+
turn(steer: number): void;
|
|
36
|
+
fire(): void;
|
|
37
|
+
stop(): void;
|
|
38
|
+
aimMain(): void;
|
|
39
|
+
aimSecondary(): void;
|
|
40
|
+
radioSend(msg: number): void;
|
|
41
|
+
dribble(on: boolean): void;
|
|
42
|
+
/**
|
|
43
|
+
* Comandos de motor/movimento avançado: só existem se o adapter por baixo
|
|
44
|
+
* os implementar. O getter devolve `undefined` quando não há — assim o
|
|
45
|
+
* intérprete acusa com mensagem didática em vez de estourar TypeError.
|
|
46
|
+
*/
|
|
47
|
+
get motor(): Hardware['motor'];
|
|
48
|
+
get motorLeft(): Hardware['motorLeft'];
|
|
49
|
+
get motorRight(): Hardware['motorRight'];
|
|
50
|
+
get motors(): Hardware['motors'];
|
|
51
|
+
get moveLateral(): Hardware['moveLateral'];
|
|
52
|
+
get moveXY(): Hardware['moveXY'];
|
|
53
|
+
/** Versões separadas: core ≠ extensão (§17). */
|
|
54
|
+
versions(): VersionInfo;
|
|
55
|
+
/** Capacidades declaradas por este hardware. */
|
|
56
|
+
getCapabilities(): Capability[];
|
|
57
|
+
/**
|
|
58
|
+
* Garante capacidades antes de agir; retorna mensagem PT ou null se OK.
|
|
59
|
+
* Programas/ferramentas usam para explicar "por que não funciona aqui".
|
|
60
|
+
*/
|
|
61
|
+
exigir(...need: Capability[]): string | null;
|
|
62
|
+
/**
|
|
63
|
+
* Executa 1 ciclo do programa sobre este runtime.
|
|
64
|
+
*
|
|
65
|
+
* Sempre envia as capabilities + `dt` para o intérprete (§21/§28):
|
|
66
|
+
* é o gate que barra uma ação de movimento em robô que não a suporta,
|
|
67
|
+
* com a mesma mensagem PT da checagem em tempo de compilação.
|
|
68
|
+
* Passe `caps: null` explicitamente para rodar o núcleo "puro", sem gate.
|
|
69
|
+
*/
|
|
70
|
+
runProgram(program: Program, fuel?: number, opts?: {
|
|
71
|
+
capabilities?: Capability[] | null;
|
|
72
|
+
dt?: number;
|
|
73
|
+
}): {
|
|
74
|
+
ok: boolean;
|
|
75
|
+
error?: HppError;
|
|
76
|
+
steps: number;
|
|
77
|
+
suspended?: boolean;
|
|
78
|
+
};
|
|
79
|
+
reset(): void;
|
|
80
|
+
}
|
|
81
|
+
//# sourceMappingURL=runtime.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"runtime.d.ts","sourceRoot":"","sources":["../src/runtime.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AACtD,OAAO,EAAE,OAAO,EAAE,MAAM,YAAY,CAAC;AACrC,OAAO,EAAoB,WAAW,EAAE,MAAM,cAAc,CAAC;AAC7D,OAAO,EAAE,UAAU,EAAiD,MAAM,mBAAmB,CAAC;AAC9F,OAAO,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAC;AAE5C;;;;;;;;;;;GAWG;AACH,qBAAa,UAAW,YAAW,QAAQ;IAYvC,OAAO,CAAC,EAAE;IACV,OAAO,CAAC,YAAY;IACpB,OAAO,CAAC,WAAW;IACnB,OAAO,CAAC,gBAAgB;IAd1B,6DAA6D;IAC7D,KAAK,SAAK;IAEV;;;;OAIG;IACH,EAAE,SAAW;gBAGH,EAAE,EAAE,QAAQ,EACZ,YAAY,GAAE,UAAU,EAAO,EAC/B,WAAW,SAAY,EACvB,gBAAgB,SAAU;IAGpC,iEAAiE;IACjE,OAAO,IAAI,MAAM,CAAC,MAAM,EAAE,WAAW,CAAC;IAStC,KAAK,CAAC,QAAQ,EAAE,MAAM,GAAG,IAAI;IAI7B,IAAI,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI;IAIzB,IAAI,IAAI,IAAI;IAIZ,IAAI,IAAI,IAAI;IAIZ,OAAO,IAAI,IAAI;IAIf,YAAY,IAAI,IAAI;IAIpB,SAAS,CAAC,GAAG,EAAE,MAAM,GAAG,IAAI;IAI5B,OAAO,CAAC,EAAE,EAAE,OAAO,GAAG,IAAI;IAI1B;;;;OAIG;IACH,IAAI,KAAK,IAAI,QAAQ,CAAC,OAAO,CAAC,CAE7B;IAED,IAAI,SAAS,IAAI,QAAQ,CAAC,WAAW,CAAC,CAErC;IAED,IAAI,UAAU,IAAI,QAAQ,CAAC,YAAY,CAAC,CAEvC;IAED,IAAI,MAAM,IAAI,QAAQ,CAAC,QAAQ,CAAC,CAE/B;IAED,IAAI,WAAW,IAAI,QAAQ,CAAC,aAAa,CAAC,CAEzC;IAED,IAAI,MAAM,IAAI,QAAQ,CAAC,QAAQ,CAAC,CAE/B;IAED,gDAAgD;IAChD,QAAQ,IAAI,WAAW;IAIvB,gDAAgD;IAChD,eAAe,IAAI,UAAU,EAAE;IAI/B;;;OAGG;IACH,MAAM,CAAC,GAAG,IAAI,EAAE,UAAU,EAAE,GAAG,MAAM,GAAG,IAAI;IAK5C;;;;;;;OAOG;IACH,UAAU,CACR,OAAO,EAAE,OAAO,EAChB,IAAI,SAAO,EACX,IAAI,GAAE;QAAE,YAAY,CAAC,EAAE,UAAU,EAAE,GAAG,IAAI,CAAC;QAAC,EAAE,CAAC,EAAE,MAAM,CAAA;KAAO,GAC7D;QAAE,EAAE,EAAE,OAAO,CAAC;QAAC,KAAK,CAAC,EAAE,QAAQ,CAAC;QAAC,KAAK,EAAE,MAAM,CAAC;QAAC,SAAS,CAAC,EAAE,OAAO,CAAA;KAAE;IAOxE,KAAK,IAAI,IAAI;CAGd"}
|
package/dist/runtime.js
ADDED
|
@@ -0,0 +1,150 @@
|
|
|
1
|
+
import { HPP_CORE_VERSION } from './version.js';
|
|
2
|
+
import { checkRequirements, missingCapabilitiesMessage } from './capabilities.js';
|
|
3
|
+
/**
|
|
4
|
+
* HppRuntime (§7): camada entre o interpretador e o adapter do robô.
|
|
5
|
+
* É um `Hardware` (o interpretador não muda), mas agrega:
|
|
6
|
+
* - `ciclo`: contador de ticks (relógio determinístico do núcleo);
|
|
7
|
+
* - capacidades do hardware + checagem didática (`exigir(...)`);
|
|
8
|
+
* - informação de versão (core + extensão ativa).
|
|
9
|
+
*
|
|
10
|
+
* Arquitetura:
|
|
11
|
+
* ```text
|
|
12
|
+
* H++ Source → Lexer → Parser → AST → Interpreter → HppRuntime → Adapter → Robô
|
|
13
|
+
* ```
|
|
14
|
+
*/
|
|
15
|
+
export class HppRuntime {
|
|
16
|
+
constructor(hw, capabilities = [], extensionId = 'generic', extensionVersion = '0.0.0') {
|
|
17
|
+
Object.defineProperty(this, "hw", {
|
|
18
|
+
enumerable: true,
|
|
19
|
+
configurable: true,
|
|
20
|
+
writable: true,
|
|
21
|
+
value: hw
|
|
22
|
+
});
|
|
23
|
+
Object.defineProperty(this, "capabilities", {
|
|
24
|
+
enumerable: true,
|
|
25
|
+
configurable: true,
|
|
26
|
+
writable: true,
|
|
27
|
+
value: capabilities
|
|
28
|
+
});
|
|
29
|
+
Object.defineProperty(this, "extensionId", {
|
|
30
|
+
enumerable: true,
|
|
31
|
+
configurable: true,
|
|
32
|
+
writable: true,
|
|
33
|
+
value: extensionId
|
|
34
|
+
});
|
|
35
|
+
Object.defineProperty(this, "extensionVersion", {
|
|
36
|
+
enumerable: true,
|
|
37
|
+
configurable: true,
|
|
38
|
+
writable: true,
|
|
39
|
+
value: extensionVersion
|
|
40
|
+
});
|
|
41
|
+
/** Ciclos executados desde `reset()` (relógio do núcleo). */
|
|
42
|
+
Object.defineProperty(this, "ciclo", {
|
|
43
|
+
enumerable: true,
|
|
44
|
+
configurable: true,
|
|
45
|
+
writable: true,
|
|
46
|
+
value: 0
|
|
47
|
+
});
|
|
48
|
+
/**
|
|
49
|
+
* Segundos por ciclo do relógio determinístico (§6/§28).
|
|
50
|
+
* Os comandos temporais (ANDAR_POR/ESPERAR/…) contam com este `dt` —
|
|
51
|
+
* nunca com `Date.now()`, `sleep`, `setTimeout` ou `await`.
|
|
52
|
+
*/
|
|
53
|
+
Object.defineProperty(this, "dt", {
|
|
54
|
+
enumerable: true,
|
|
55
|
+
configurable: true,
|
|
56
|
+
writable: true,
|
|
57
|
+
value: 1 / 120
|
|
58
|
+
});
|
|
59
|
+
}
|
|
60
|
+
/** Foto dos sensores + `ciclo` do núcleo (sempre disponível). */
|
|
61
|
+
sensors() {
|
|
62
|
+
// Sem spread: `hw.sensors()` já devolve objeto novo por chamada, então
|
|
63
|
+
// carimbar `ciclo` nele evita 1 alocação por robô por ciclo (GC).
|
|
64
|
+
const s = this.hw.sensors();
|
|
65
|
+
s.ciclo = this.ciclo;
|
|
66
|
+
s.cycle = this.ciclo;
|
|
67
|
+
return s;
|
|
68
|
+
}
|
|
69
|
+
drive(throttle) {
|
|
70
|
+
this.hw.drive(throttle);
|
|
71
|
+
}
|
|
72
|
+
turn(steer) {
|
|
73
|
+
this.hw.turn(steer);
|
|
74
|
+
}
|
|
75
|
+
fire() {
|
|
76
|
+
this.hw.fire();
|
|
77
|
+
}
|
|
78
|
+
stop() {
|
|
79
|
+
this.hw.stop();
|
|
80
|
+
}
|
|
81
|
+
aimMain() {
|
|
82
|
+
this.hw.aimMain();
|
|
83
|
+
}
|
|
84
|
+
aimSecondary() {
|
|
85
|
+
this.hw.aimSecondary();
|
|
86
|
+
}
|
|
87
|
+
radioSend(msg) {
|
|
88
|
+
this.hw.radioSend(msg);
|
|
89
|
+
}
|
|
90
|
+
dribble(on) {
|
|
91
|
+
this.hw.dribble(on);
|
|
92
|
+
}
|
|
93
|
+
/**
|
|
94
|
+
* Comandos de motor/movimento avançado: só existem se o adapter por baixo
|
|
95
|
+
* os implementar. O getter devolve `undefined` quando não há — assim o
|
|
96
|
+
* intérprete acusa com mensagem didática em vez de estourar TypeError.
|
|
97
|
+
*/
|
|
98
|
+
get motor() {
|
|
99
|
+
return this.hw.motor ? this.hw.motor.bind(this.hw) : undefined;
|
|
100
|
+
}
|
|
101
|
+
get motorLeft() {
|
|
102
|
+
return this.hw.motorLeft ? this.hw.motorLeft.bind(this.hw) : undefined;
|
|
103
|
+
}
|
|
104
|
+
get motorRight() {
|
|
105
|
+
return this.hw.motorRight ? this.hw.motorRight.bind(this.hw) : undefined;
|
|
106
|
+
}
|
|
107
|
+
get motors() {
|
|
108
|
+
return this.hw.motors ? this.hw.motors.bind(this.hw) : undefined;
|
|
109
|
+
}
|
|
110
|
+
get moveLateral() {
|
|
111
|
+
return this.hw.moveLateral ? this.hw.moveLateral.bind(this.hw) : undefined;
|
|
112
|
+
}
|
|
113
|
+
get moveXY() {
|
|
114
|
+
return this.hw.moveXY ? this.hw.moveXY.bind(this.hw) : undefined;
|
|
115
|
+
}
|
|
116
|
+
/** Versões separadas: core ≠ extensão (§17). */
|
|
117
|
+
versions() {
|
|
118
|
+
return { core: HPP_CORE_VERSION, extension: this.extensionVersion, extensionId: this.extensionId };
|
|
119
|
+
}
|
|
120
|
+
/** Capacidades declaradas por este hardware. */
|
|
121
|
+
getCapabilities() {
|
|
122
|
+
return [...this.capabilities];
|
|
123
|
+
}
|
|
124
|
+
/**
|
|
125
|
+
* Garante capacidades antes de agir; retorna mensagem PT ou null se OK.
|
|
126
|
+
* Programas/ferramentas usam para explicar "por que não funciona aqui".
|
|
127
|
+
*/
|
|
128
|
+
exigir(...need) {
|
|
129
|
+
const missing = checkRequirements(this.capabilities, need);
|
|
130
|
+
return missing.length > 0 ? missingCapabilitiesMessage(missing, this.extensionId) : null;
|
|
131
|
+
}
|
|
132
|
+
/**
|
|
133
|
+
* Executa 1 ciclo do programa sobre este runtime.
|
|
134
|
+
*
|
|
135
|
+
* Sempre envia as capabilities + `dt` para o intérprete (§21/§28):
|
|
136
|
+
* é o gate que barra uma ação de movimento em robô que não a suporta,
|
|
137
|
+
* com a mesma mensagem PT da checagem em tempo de compilação.
|
|
138
|
+
* Passe `caps: null` explicitamente para rodar o núcleo "puro", sem gate.
|
|
139
|
+
*/
|
|
140
|
+
runProgram(program, fuel = 5000, opts = {}) {
|
|
141
|
+
const caps = opts.capabilities === undefined ? this.capabilities : opts.capabilities;
|
|
142
|
+
const r = program.run(this, fuel, { capabilities: caps, dt: opts.dt ?? this.dt });
|
|
143
|
+
this.ciclo++;
|
|
144
|
+
return r;
|
|
145
|
+
}
|
|
146
|
+
reset() {
|
|
147
|
+
this.ciclo = 0;
|
|
148
|
+
}
|
|
149
|
+
}
|
|
150
|
+
//# sourceMappingURL=runtime.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"runtime.js","sourceRoot":"","sources":["../src/runtime.ts"],"names":[],"mappings":"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"}
|
package/dist/tokens.d.ts
ADDED
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
/** Palavras-chave bilíngues: forma canônica + apelidos PT/EN (maiúsculas). */
|
|
2
|
+
export type KeywordKind = 'IF' | 'THEN' | 'ELSE' | 'END' | 'WHILE' | 'DO' | 'REPEAT' | 'TIMES' | 'FOR' | 'FROM' | 'TO' | 'STEP' | 'FUNCTION' | 'RETURN' | 'AND' | 'OR' | 'NOT' | 'TRUE' | 'FALSE' | 'WHEN' | 'ALWAYS';
|
|
3
|
+
/** Ações-atuadores: nome canônico + nº de argumentos. */
|
|
4
|
+
export interface ActionSpec {
|
|
5
|
+
name: ActionName;
|
|
6
|
+
args: number;
|
|
7
|
+
}
|
|
8
|
+
/**
|
|
9
|
+
* Nomes canônicos de ação (PT/EN viram um destes; ver ACTIONS).
|
|
10
|
+
*
|
|
11
|
+
* Três famílias, separadas de propósito (§19 — primitiva ≠ comportamento ≠ domínio):
|
|
12
|
+
* - **Robotics** (`drive`…`moveXY`): movimento robótico universal, compartilhado
|
|
13
|
+
* por qualquer domínio ou robô físico. Ver `robotics/`.
|
|
14
|
+
* - **Extensão** (`kick`, `aimBall`, `aimGoal`, `radioSend`, `dribble`): domínio.
|
|
15
|
+
* - Comportamentos (`SEGUIR_PAREDE`…) nunca entram aqui: ficam na extensão.
|
|
16
|
+
*/
|
|
17
|
+
export type ActionName = 'drive' | 'reverse' | 'stop' | 'turn' | 'turnLeft' | 'turnRight' | 'driveFor' | 'reverseFor' | 'turnFor' | 'stopFor' | 'wait' | 'driveMeters' | 'reverseMeters' | 'turnDegrees' | 'motor' | 'motorLeft' | 'motorRight' | 'motors' | 'curve' | 'moveLateral' | 'moveXY' | 'kick' | 'aimBall' | 'aimGoal' | 'radioSend' | 'dribble';
|
|
18
|
+
export declare function lookupKeyword(word: string): KeywordKind | null;
|
|
19
|
+
/** Nome de exibição PT da ação canônica (mensagens pedagógicas de erro). */
|
|
20
|
+
export declare const ACTION_PT: Record<ActionName, string>;
|
|
21
|
+
export declare function lookupAction(word: string): ActionSpec | null;
|
|
22
|
+
export type TokenType = 'NUMBER' | 'STRING' | 'IDENT' | 'KEYWORD' | 'ACTION' | 'OP' | 'PUNCT' | 'NEWLINE' | 'EOF';
|
|
23
|
+
export interface Token {
|
|
24
|
+
type: TokenType;
|
|
25
|
+
/** Texto original (identificadores normalizados p/ minúsculas). */
|
|
26
|
+
value: string;
|
|
27
|
+
numValue?: number;
|
|
28
|
+
keyword?: KeywordKind;
|
|
29
|
+
action?: ActionSpec;
|
|
30
|
+
line: number;
|
|
31
|
+
col: number;
|
|
32
|
+
}
|
|
33
|
+
//# sourceMappingURL=tokens.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"tokens.d.ts","sourceRoot":"","sources":["../src/tokens.ts"],"names":[],"mappings":"AAAA,8EAA8E;AAC9E,MAAM,MAAM,WAAW,GACnB,IAAI,GAAG,MAAM,GAAG,MAAM,GAAG,KAAK,GAC9B,OAAO,GAAG,IAAI,GAAG,QAAQ,GAAG,OAAO,GACnC,KAAK,GAAG,MAAM,GAAG,IAAI,GAAG,MAAM,GAC9B,UAAU,GAAG,QAAQ,GACrB,KAAK,GAAG,IAAI,GAAG,KAAK,GAAG,MAAM,GAAG,OAAO,GACvC,MAAM,GAAG,QAAQ,CAAC;AA0BtB,yDAAyD;AACzD,MAAM,WAAW,UAAU;IACzB,IAAI,EAAE,UAAU,CAAC;IACjB,IAAI,EAAE,MAAM,CAAC;CACd;AAED;;;;;;;;GAQG;AACH,MAAM,MAAM,UAAU,GAElB,OAAO,GAAG,SAAS,GAAG,MAAM,GAAG,MAAM,GAAG,UAAU,GAAG,WAAW,GAEhE,UAAU,GAAG,YAAY,GAAG,SAAS,GAAG,SAAS,GAAG,MAAM,GAE1D,aAAa,GAAG,eAAe,GAAG,aAAa,GAE/C,OAAO,GAAG,WAAW,GAAG,YAAY,GAAG,QAAQ,GAE/C,OAAO,GAAG,aAAa,GAAG,QAAQ,GAElC,MAAM,GAAG,SAAS,GAAG,SAAS,GAAG,WAAW,GAAG,SAAS,CAAC;AAyC7D,wBAAgB,aAAa,CAAC,IAAI,EAAE,MAAM,GAAG,WAAW,GAAG,IAAI,CAE9D;AAED,4EAA4E;AAC5E,eAAO,MAAM,SAAS,EAAE,MAAM,CAAC,UAAU,EAAE,MAAM,CA2BhD,CAAC;AAEF,wBAAgB,YAAY,CAAC,IAAI,EAAE,MAAM,GAAG,UAAU,GAAG,IAAI,CAE5D;AAED,MAAM,MAAM,SAAS,GACjB,QAAQ,GAAG,QAAQ,GAAG,OAAO,GAC7B,SAAS,GAAG,QAAQ,GACpB,IAAI,GAAG,OAAO,GAAG,SAAS,GAAG,KAAK,CAAC;AAEvC,MAAM,WAAW,KAAK;IACpB,IAAI,EAAE,SAAS,CAAC;IAChB,mEAAmE;IACnE,KAAK,EAAE,MAAM,CAAC;IACd,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,OAAO,CAAC,EAAE,WAAW,CAAC;IACtB,MAAM,CAAC,EAAE,UAAU,CAAC;IACpB,IAAI,EAAE,MAAM,CAAC;IACb,GAAG,EAAE,MAAM,CAAC;CACb"}
|
package/dist/tokens.js
ADDED
|
@@ -0,0 +1,97 @@
|
|
|
1
|
+
const KEYWORDS = {
|
|
2
|
+
SE: 'IF', IF: 'IF',
|
|
3
|
+
ENTAO: 'THEN', THEN: 'THEN',
|
|
4
|
+
SENAO: 'ELSE', ELSE: 'ELSE',
|
|
5
|
+
FIM: 'END', END: 'END',
|
|
6
|
+
ENQUANTO: 'WHILE', WHILE: 'WHILE',
|
|
7
|
+
FACA: 'DO', DO: 'DO',
|
|
8
|
+
REPETIR: 'REPEAT', REPEAT: 'REPEAT',
|
|
9
|
+
VEZES: 'TIMES', TIMES: 'TIMES',
|
|
10
|
+
PARA: 'FOR', FOR: 'FOR',
|
|
11
|
+
DE: 'FROM', FROM: 'FROM',
|
|
12
|
+
ATE: 'TO', TO: 'TO',
|
|
13
|
+
PASSO: 'STEP', STEP: 'STEP',
|
|
14
|
+
FUNCAO: 'FUNCTION', FUNCTION: 'FUNCTION',
|
|
15
|
+
RETORNAR: 'RETURN', RETURN: 'RETURN',
|
|
16
|
+
E: 'AND', AND: 'AND',
|
|
17
|
+
OU: 'OR', OR: 'OR',
|
|
18
|
+
NAO: 'NOT', NOT: 'NOT',
|
|
19
|
+
VERDADEIRO: 'TRUE', TRUE: 'TRUE',
|
|
20
|
+
FALSO: 'FALSE', FALSE: 'FALSE',
|
|
21
|
+
QUANDO: 'WHEN', WHEN: 'WHEN',
|
|
22
|
+
SEMPRE: 'ALWAYS', ALWAYS: 'ALWAYS'
|
|
23
|
+
};
|
|
24
|
+
const ACTIONS = {
|
|
25
|
+
// ---- Robotics: movimento básico ----
|
|
26
|
+
ANDAR: { name: 'drive', args: 1 }, DRIVE: { name: 'drive', args: 1 },
|
|
27
|
+
VOLTAR: { name: 'reverse', args: 1 }, REVERSE: { name: 'reverse', args: 1 },
|
|
28
|
+
PARAR: { name: 'stop', args: 0 }, STOP: { name: 'stop', args: 0 },
|
|
29
|
+
GIRAR: { name: 'turn', args: 1 }, TURN: { name: 'turn', args: 1 },
|
|
30
|
+
VIRAR_ESQUERDA: { name: 'turnLeft', args: 1 },
|
|
31
|
+
GIRAR_ESQUERDA: { name: 'turnLeft', args: 1 },
|
|
32
|
+
TURN_LEFT: { name: 'turnLeft', args: 1 },
|
|
33
|
+
VIRAR_DIREITA: { name: 'turnRight', args: 1 },
|
|
34
|
+
GIRAR_DIREITA: { name: 'turnRight', args: 1 },
|
|
35
|
+
TURN_RIGHT: { name: 'turnRight', args: 1 },
|
|
36
|
+
// ---- Robotics: movimento temporal ----
|
|
37
|
+
ANDAR_POR: { name: 'driveFor', args: 2 }, DRIVE_FOR: { name: 'driveFor', args: 2 },
|
|
38
|
+
VOLTAR_POR: { name: 'reverseFor', args: 2 }, REVERSE_FOR: { name: 'reverseFor', args: 2 },
|
|
39
|
+
GIRAR_POR: { name: 'turnFor', args: 2 }, TURN_FOR: { name: 'turnFor', args: 2 },
|
|
40
|
+
PARAR_POR: { name: 'stopFor', args: 1 }, STOP_FOR: { name: 'stopFor', args: 1 },
|
|
41
|
+
ESPERAR: { name: 'wait', args: 1 }, WAIT: { name: 'wait', args: 1 },
|
|
42
|
+
// ---- Robotics: movimento espacial ----
|
|
43
|
+
ANDAR_METROS: { name: 'driveMeters', args: 1 }, DRIVE_METERS: { name: 'driveMeters', args: 1 },
|
|
44
|
+
VOLTAR_METROS: { name: 'reverseMeters', args: 1 }, REVERSE_METERS: { name: 'reverseMeters', args: 1 },
|
|
45
|
+
GIRAR_GRAUS: { name: 'turnDegrees', args: 1 }, TURN_DEGREES: { name: 'turnDegrees', args: 1 },
|
|
46
|
+
// ---- Robotics: controle de motores ----
|
|
47
|
+
MOTOR: { name: 'motor', args: 2 },
|
|
48
|
+
MOTOR_ESQUERDO: { name: 'motorLeft', args: 1 }, LEFT_MOTOR: { name: 'motorLeft', args: 1 },
|
|
49
|
+
MOTOR_DIREITO: { name: 'motorRight', args: 1 }, RIGHT_MOTOR: { name: 'motorRight', args: 1 },
|
|
50
|
+
MOTORES: { name: 'motors', args: 2 }, MOTORS: { name: 'motors', args: 2 },
|
|
51
|
+
// ---- Robotics: movimento avançado ----
|
|
52
|
+
CURVA: { name: 'curve', args: 2 }, CURVE: { name: 'curve', args: 2 },
|
|
53
|
+
MOVER_LATERAL: { name: 'moveLateral', args: 1 }, MOVE_LATERAL: { name: 'moveLateral', args: 1 },
|
|
54
|
+
MOVER_XY: { name: 'moveXY', args: 2 }, MOVE_XY: { name: 'moveXY', args: 2 },
|
|
55
|
+
// ---- Domínio (extensão) ----
|
|
56
|
+
CHUTAR: { name: 'kick', args: 0 }, KICK: { name: 'kick', args: 0 },
|
|
57
|
+
MIRAR_BOLA: { name: 'aimBall', args: 0 }, AIM_BALL: { name: 'aimBall', args: 0 },
|
|
58
|
+
MIRAR_GOL: { name: 'aimGoal', args: 0 }, AIM_GOAL: { name: 'aimGoal', args: 0 },
|
|
59
|
+
ENVIAR_RADIO: { name: 'radioSend', args: 1 }, RADIO_SEND: { name: 'radioSend', args: 1 },
|
|
60
|
+
DRIBLAR: { name: 'dribble', args: 1 }, DRIBBLE: { name: 'dribble', args: 1 }
|
|
61
|
+
};
|
|
62
|
+
export function lookupKeyword(word) {
|
|
63
|
+
return KEYWORDS[word.toUpperCase()] ?? null;
|
|
64
|
+
}
|
|
65
|
+
/** Nome de exibição PT da ação canônica (mensagens pedagógicas de erro). */
|
|
66
|
+
export const ACTION_PT = {
|
|
67
|
+
drive: 'ANDAR',
|
|
68
|
+
reverse: 'VOLTAR',
|
|
69
|
+
stop: 'PARAR',
|
|
70
|
+
turn: 'GIRAR',
|
|
71
|
+
turnLeft: 'VIRAR_ESQUERDA',
|
|
72
|
+
turnRight: 'VIRAR_DIREITA',
|
|
73
|
+
driveFor: 'ANDAR_POR',
|
|
74
|
+
reverseFor: 'VOLTAR_POR',
|
|
75
|
+
turnFor: 'GIRAR_POR',
|
|
76
|
+
stopFor: 'PARAR_POR',
|
|
77
|
+
wait: 'ESPERAR',
|
|
78
|
+
driveMeters: 'ANDAR_METROS',
|
|
79
|
+
reverseMeters: 'VOLTAR_METROS',
|
|
80
|
+
turnDegrees: 'GIRAR_GRAUS',
|
|
81
|
+
motor: 'MOTOR',
|
|
82
|
+
motorLeft: 'MOTOR_ESQUERDO',
|
|
83
|
+
motorRight: 'MOTOR_DIREITO',
|
|
84
|
+
motors: 'MOTORES',
|
|
85
|
+
curve: 'CURVA',
|
|
86
|
+
moveLateral: 'MOVER_LATERAL',
|
|
87
|
+
moveXY: 'MOVER_XY',
|
|
88
|
+
kick: 'CHUTAR',
|
|
89
|
+
aimBall: 'MIRAR_BOLA',
|
|
90
|
+
aimGoal: 'MIRAR_GOL',
|
|
91
|
+
radioSend: 'ENVIAR_RADIO',
|
|
92
|
+
dribble: 'DRIBLAR'
|
|
93
|
+
};
|
|
94
|
+
export function lookupAction(word) {
|
|
95
|
+
return ACTIONS[word.toUpperCase()] ?? null;
|
|
96
|
+
}
|
|
97
|
+
//# sourceMappingURL=tokens.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"tokens.js","sourceRoot":"","sources":["../src/tokens.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Versionamento explícito da linguagem (§17 do plano H++ multidomínio).
|
|
3
|
+
* Versões SEPARADAS: simulador ≠ H++ core ≠ extensões de domínio.
|
|
4
|
+
*/
|
|
5
|
+
export declare const HPP_CORE_VERSION = "0.6.0";
|
|
6
|
+
export interface VersionInfo {
|
|
7
|
+
/** Versão do núcleo H++ (lexer/parser/AST/interpreter/runtime). */
|
|
8
|
+
core: string;
|
|
9
|
+
/** Versão da extensão de domínio ativa (ex.: soccer 0.1.0). */
|
|
10
|
+
extension: string;
|
|
11
|
+
/** Id da extensão ativa (ex.: 'soccer'). */
|
|
12
|
+
extensionId: string;
|
|
13
|
+
}
|
|
14
|
+
//# sourceMappingURL=version.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"version.d.ts","sourceRoot":"","sources":["../src/version.ts"],"names":[],"mappings":"AAAA;;;GAGG;AACH,eAAO,MAAM,gBAAgB,UAAU,CAAC;AAExC,MAAM,WAAW,WAAW;IAC1B,mEAAmE;IACnE,IAAI,EAAE,MAAM,CAAC;IACb,+DAA+D;IAC/D,SAAS,EAAE,MAAM,CAAC;IAClB,4CAA4C;IAC5C,WAAW,EAAE,MAAM,CAAC;CACrB"}
|
package/dist/version.js
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"version.js","sourceRoot":"","sources":["../src/version.ts"],"names":[],"mappings":"AAAA;;;GAGG;AACH,MAAM,CAAC,MAAM,gBAAgB,GAAG,OAAO,CAAC"}
|
package/package.json
ADDED
|
@@ -0,0 +1,49 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "hpp-lang",
|
|
3
|
+
"version": "0.6.0",
|
|
4
|
+
"description": "H++, a bilingual educational programming language for autonomous robotics.",
|
|
5
|
+
"type": "module",
|
|
6
|
+
"main": "./dist/index.js",
|
|
7
|
+
"module": "./dist/index.js",
|
|
8
|
+
"types": "./dist/index.d.ts",
|
|
9
|
+
"exports": {
|
|
10
|
+
".": {
|
|
11
|
+
"types": "./dist/index.d.ts",
|
|
12
|
+
"import": "./dist/index.js"
|
|
13
|
+
}
|
|
14
|
+
},
|
|
15
|
+
"files": [
|
|
16
|
+
"dist",
|
|
17
|
+
"README.md",
|
|
18
|
+
"LICENSE"
|
|
19
|
+
],
|
|
20
|
+
"scripts": {
|
|
21
|
+
"build": "tsc -p tsconfig.build.json",
|
|
22
|
+
"prepublishOnly": "npm run build"
|
|
23
|
+
},
|
|
24
|
+
"keywords": [
|
|
25
|
+
"hpp",
|
|
26
|
+
"programming-language",
|
|
27
|
+
"dsl",
|
|
28
|
+
"robotics",
|
|
29
|
+
"simulation",
|
|
30
|
+
"education",
|
|
31
|
+
"interpreter"
|
|
32
|
+
],
|
|
33
|
+
"repository": {
|
|
34
|
+
"type": "git",
|
|
35
|
+
"url": "git+https://github.com/hsantosdias/hpp-lang.git",
|
|
36
|
+
"directory": "packages/hpp-lang"
|
|
37
|
+
},
|
|
38
|
+
"homepage": "https://github.com/hsantosdias/hpp-lang#readme",
|
|
39
|
+
"bugs": {
|
|
40
|
+
"url": "https://github.com/hsantosdias/hpp-lang/issues"
|
|
41
|
+
},
|
|
42
|
+
"engines": {
|
|
43
|
+
"node": ">=20"
|
|
44
|
+
},
|
|
45
|
+
"publishConfig": {
|
|
46
|
+
"access": "public"
|
|
47
|
+
},
|
|
48
|
+
"license": "MIT"
|
|
49
|
+
}
|