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.
Files changed (91) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +29 -0
  3. package/dist/ast.d.ts +89 -0
  4. package/dist/ast.d.ts.map +1 -0
  5. package/dist/ast.js +2 -0
  6. package/dist/ast.js.map +1 -0
  7. package/dist/capabilities.d.ts +75 -0
  8. package/dist/capabilities.d.ts.map +1 -0
  9. package/dist/capabilities.js +181 -0
  10. package/dist/capabilities.js.map +1 -0
  11. package/dist/errors.d.ts +21 -0
  12. package/dist/errors.d.ts.map +1 -0
  13. package/dist/errors.js +27 -0
  14. package/dist/errors.js.map +1 -0
  15. package/dist/examples.d.ts +9 -0
  16. package/dist/examples.d.ts.map +1 -0
  17. package/dist/examples.js +780 -0
  18. package/dist/examples.js.map +1 -0
  19. package/dist/extensions/line/index.d.ts +45 -0
  20. package/dist/extensions/line/index.d.ts.map +1 -0
  21. package/dist/extensions/line/index.js +99 -0
  22. package/dist/extensions/line/index.js.map +1 -0
  23. package/dist/extensions/maze/index.d.ts +37 -0
  24. package/dist/extensions/maze/index.d.ts.map +1 -0
  25. package/dist/extensions/maze/index.js +43 -0
  26. package/dist/extensions/maze/index.js.map +1 -0
  27. package/dist/extensions/soccer/index.d.ts +8 -0
  28. package/dist/extensions/soccer/index.d.ts.map +1 -0
  29. package/dist/extensions/soccer/index.js +93 -0
  30. package/dist/extensions/soccer/index.js.map +1 -0
  31. package/dist/hardware.d.ts +44 -0
  32. package/dist/hardware.d.ts.map +1 -0
  33. package/dist/hardware.js +2 -0
  34. package/dist/hardware.js.map +1 -0
  35. package/dist/index.d.ts +59 -0
  36. package/dist/index.d.ts.map +1 -0
  37. package/dist/index.js +69 -0
  38. package/dist/index.js.map +1 -0
  39. package/dist/interpreter.d.ts +88 -0
  40. package/dist/interpreter.d.ts.map +1 -0
  41. package/dist/interpreter.js +795 -0
  42. package/dist/interpreter.js.map +1 -0
  43. package/dist/lexer.d.ts +21 -0
  44. package/dist/lexer.d.ts.map +1 -0
  45. package/dist/lexer.js +175 -0
  46. package/dist/lexer.js.map +1 -0
  47. package/dist/parser.d.ts +60 -0
  48. package/dist/parser.d.ts.map +1 -0
  49. package/dist/parser.js +569 -0
  50. package/dist/parser.js.map +1 -0
  51. package/dist/robotics/actions.d.ts +13 -0
  52. package/dist/robotics/actions.d.ts.map +1 -0
  53. package/dist/robotics/actions.js +38 -0
  54. package/dist/robotics/actions.js.map +1 -0
  55. package/dist/robotics/contracts.d.ts +88 -0
  56. package/dist/robotics/contracts.d.ts.map +1 -0
  57. package/dist/robotics/contracts.js +31 -0
  58. package/dist/robotics/contracts.js.map +1 -0
  59. package/dist/robotics/index.d.ts +21 -0
  60. package/dist/robotics/index.d.ts.map +1 -0
  61. package/dist/robotics/index.js +19 -0
  62. package/dist/robotics/index.js.map +1 -0
  63. package/dist/robotics/motion.d.ts +139 -0
  64. package/dist/robotics/motion.d.ts.map +1 -0
  65. package/dist/robotics/motion.js +248 -0
  66. package/dist/robotics/motion.js.map +1 -0
  67. package/dist/robotics/sensors.d.ts +15 -0
  68. package/dist/robotics/sensors.d.ts.map +1 -0
  69. package/dist/robotics/sensors.js +12 -0
  70. package/dist/robotics/sensors.js.map +1 -0
  71. package/dist/robotics/snapshot.d.ts +12 -0
  72. package/dist/robotics/snapshot.d.ts.map +1 -0
  73. package/dist/robotics/snapshot.js +9 -0
  74. package/dist/robotics/snapshot.js.map +1 -0
  75. package/dist/robotics/types.d.ts +12 -0
  76. package/dist/robotics/types.d.ts.map +1 -0
  77. package/dist/robotics/types.js +9 -0
  78. package/dist/robotics/types.js.map +1 -0
  79. package/dist/runtime.d.ts +81 -0
  80. package/dist/runtime.d.ts.map +1 -0
  81. package/dist/runtime.js +150 -0
  82. package/dist/runtime.js.map +1 -0
  83. package/dist/tokens.d.ts +33 -0
  84. package/dist/tokens.d.ts.map +1 -0
  85. package/dist/tokens.js +97 -0
  86. package/dist/tokens.js.map +1 -0
  87. package/dist/version.d.ts +14 -0
  88. package/dist/version.d.ts.map +1 -0
  89. package/dist/version.js +6 -0
  90. package/dist/version.js.map +1 -0
  91. 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"}
@@ -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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"}
@@ -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":"AASA,MAAM,QAAQ,GAAgC;IAC5C,EAAE,EAAE,IAAI,EAAE,EAAE,EAAE,IAAI;IAClB,KAAK,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM;IAC3B,KAAK,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM;IAC3B,GAAG,EAAE,KAAK,EAAE,GAAG,EAAE,KAAK;IACtB,QAAQ,EAAE,OAAO,EAAE,KAAK,EAAE,OAAO;IACjC,IAAI,EAAE,IAAI,EAAE,EAAE,EAAE,IAAI;IACpB,OAAO,EAAE,QAAQ,EAAE,MAAM,EAAE,QAAQ;IACnC,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,OAAO;IAC9B,IAAI,EAAE,KAAK,EAAE,GAAG,EAAE,KAAK;IACvB,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM;IACxB,GAAG,EAAE,IAAI,EAAE,EAAE,EAAE,IAAI;IACnB,KAAK,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM;IAC3B,MAAM,EAAE,UAAU,EAAE,QAAQ,EAAE,UAAU;IACxC,QAAQ,EAAE,QAAQ,EAAE,MAAM,EAAE,QAAQ;IACpC,CAAC,EAAE,KAAK,EAAE,GAAG,EAAE,KAAK;IACpB,EAAE,EAAE,IAAI,EAAE,EAAE,EAAE,IAAI;IAClB,GAAG,EAAE,KAAK,EAAE,GAAG,EAAE,KAAK;IACtB,UAAU,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM;IAChC,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,OAAO;IAC9B,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM;IAC5B,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,QAAQ;CACnC,CAAC;AA+BF,MAAM,OAAO,GAA+B;IAC1C,uCAAuC;IACvC,KAAK,EAAE,EAAE,IAAI,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC,EAAE,EAAE,KAAK,EAAE,EAAE,IAAI,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC,EAAE;IACpE,MAAM,EAAE,EAAE,IAAI,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,EAAE,EAAE,OAAO,EAAE,EAAE,IAAI,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,EAAE;IAC3E,KAAK,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC,EAAE,EAAE,IAAI,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC,EAAE;IACjE,KAAK,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC,EAAE,EAAE,IAAI,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC,EAAE;IACjE,cAAc,EAAE,EAAE,IAAI,EAAE,UAAU,EAAE,IAAI,EAAE,CAAC,EAAE;IAC7C,cAAc,EAAE,EAAE,IAAI,EAAE,UAAU,EAAE,IAAI,EAAE,CAAC,EAAE;IAC7C,SAAS,EAAE,EAAE,IAAI,EAAE,UAAU,EAAE,IAAI,EAAE,CAAC,EAAE;IACxC,aAAa,EAAE,EAAE,IAAI,EAAE,WAAW,EAAE,IAAI,EAAE,CAAC,EAAE;IAC7C,aAAa,EAAE,EAAE,IAAI,EAAE,WAAW,EAAE,IAAI,EAAE,CAAC,EAAE;IAC7C,UAAU,EAAE,EAAE,IAAI,EAAE,WAAW,EAAE,IAAI,EAAE,CAAC,EAAE;IAC1C,yCAAyC;IACzC,SAAS,EAAE,EAAE,IAAI,EAAE,UAAU,EAAE,IAAI,EAAE,CAAC,EAAE,EAAE,SAAS,EAAE,EAAE,IAAI,EAAE,UAAU,EAAE,IAAI,EAAE,CAAC,EAAE;IAClF,UAAU,EAAE,EAAE,IAAI,EAAE,YAAY,EAAE,IAAI,EAAE,CAAC,EAAE,EAAE,WAAW,EAAE,EAAE,IAAI,EAAE,YAAY,EAAE,IAAI,EAAE,CAAC,EAAE;IACzF,SAAS,EAAE,EAAE,IAAI,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,EAAE,EAAE,QAAQ,EAAE,EAAE,IAAI,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,EAAE;IAC/E,SAAS,EAAE,EAAE,IAAI,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,EAAE,EAAE,QAAQ,EAAE,EAAE,IAAI,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,EAAE;IAC/E,OAAO,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC,EAAE,EAAE,IAAI,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC,EAAE;IACnE,yCAAyC;IACzC,YAAY,EAAE,EAAE,IAAI,EAAE,aAAa,EAAE,IAAI,EAAE,CAAC,EAAE,EAAE,YAAY,EAAE,EAAE,IAAI,EAAE,aAAa,EAAE,IAAI,EAAE,CAAC,EAAE;IAC9F,aAAa,EAAE,EAAE,IAAI,EAAE,eAAe,EAAE,IAAI,EAAE,CAAC,EAAE,EAAE,cAAc,EAAE,EAAE,IAAI,EAAE,eAAe,EAAE,IAAI,EAAE,CAAC,EAAE;IACrG,WAAW,EAAE,EAAE,IAAI,EAAE,aAAa,EAAE,IAAI,EAAE,CAAC,EAAE,EAAE,YAAY,EAAE,EAAE,IAAI,EAAE,aAAa,EAAE,IAAI,EAAE,CAAC,EAAE;IAC7F,0CAA0C;IAC1C,KAAK,EAAE,EAAE,IAAI,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC,EAAE;IACjC,cAAc,EAAE,EAAE,IAAI,EAAE,WAAW,EAAE,IAAI,EAAE,CAAC,EAAE,EAAE,UAAU,EAAE,EAAE,IAAI,EAAE,WAAW,EAAE,IAAI,EAAE,CAAC,EAAE;IAC1F,aAAa,EAAE,EAAE,IAAI,EAAE,YAAY,EAAE,IAAI,EAAE,CAAC,EAAE,EAAE,WAAW,EAAE,EAAE,IAAI,EAAE,YAAY,EAAE,IAAI,EAAE,CAAC,EAAE;IAC5F,OAAO,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC,EAAE,EAAE,MAAM,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC,EAAE;IACzE,yCAAyC;IACzC,KAAK,EAAE,EAAE,IAAI,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC,EAAE,EAAE,KAAK,EAAE,EAAE,IAAI,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC,EAAE;IACpE,aAAa,EAAE,EAAE,IAAI,EAAE,aAAa,EAAE,IAAI,EAAE,CAAC,EAAE,EAAE,YAAY,EAAE,EAAE,IAAI,EAAE,aAAa,EAAE,IAAI,EAAE,CAAC,EAAE;IAC/F,QAAQ,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC,EAAE,EAAE,OAAO,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC,EAAE;IAC3E,+BAA+B;IAC/B,MAAM,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC,EAAE,EAAE,IAAI,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC,EAAE;IAClE,UAAU,EAAE,EAAE,IAAI,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,EAAE,EAAE,QAAQ,EAAE,EAAE,IAAI,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,EAAE;IAChF,SAAS,EAAE,EAAE,IAAI,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,EAAE,EAAE,QAAQ,EAAE,EAAE,IAAI,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,EAAE;IAC/E,YAAY,EAAE,EAAE,IAAI,EAAE,WAAW,EAAE,IAAI,EAAE,CAAC,EAAE,EAAE,UAAU,EAAE,EAAE,IAAI,EAAE,WAAW,EAAE,IAAI,EAAE,CAAC,EAAE;IACxF,OAAO,EAAE,EAAE,IAAI,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,EAAE,EAAE,OAAO,EAAE,EAAE,IAAI,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,EAAE;CAC7E,CAAC;AAEF,MAAM,UAAU,aAAa,CAAC,IAAY;IACxC,OAAO,QAAQ,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC,IAAI,IAAI,CAAC;AAC9C,CAAC;AAED,4EAA4E;AAC5E,MAAM,CAAC,MAAM,SAAS,GAA+B;IACnD,KAAK,EAAE,OAAO;IACd,OAAO,EAAE,QAAQ;IACjB,IAAI,EAAE,OAAO;IACb,IAAI,EAAE,OAAO;IACb,QAAQ,EAAE,gBAAgB;IAC1B,SAAS,EAAE,eAAe;IAC1B,QAAQ,EAAE,WAAW;IACrB,UAAU,EAAE,YAAY;IACxB,OAAO,EAAE,WAAW;IACpB,OAAO,EAAE,WAAW;IACpB,IAAI,EAAE,SAAS;IACf,WAAW,EAAE,cAAc;IAC3B,aAAa,EAAE,eAAe;IAC9B,WAAW,EAAE,aAAa;IAC1B,KAAK,EAAE,OAAO;IACd,SAAS,EAAE,gBAAgB;IAC3B,UAAU,EAAE,eAAe;IAC3B,MAAM,EAAE,SAAS;IACjB,KAAK,EAAE,OAAO;IACd,WAAW,EAAE,eAAe;IAC5B,MAAM,EAAE,UAAU;IAClB,IAAI,EAAE,QAAQ;IACd,OAAO,EAAE,YAAY;IACrB,OAAO,EAAE,WAAW;IACpB,SAAS,EAAE,cAAc;IACzB,OAAO,EAAE,SAAS;CACnB,CAAC;AAEF,MAAM,UAAU,YAAY,CAAC,IAAY;IACvC,OAAO,OAAO,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC,IAAI,IAAI,CAAC;AAC7C,CAAC"}
@@ -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"}
@@ -0,0 +1,6 @@
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 const HPP_CORE_VERSION = '0.6.0';
6
+ //# sourceMappingURL=version.js.map
@@ -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
+ }