freelang-v4 4.3.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 (261) hide show
  1. package/README.md +548 -0
  2. package/dist/ast.d.ts +367 -0
  3. package/dist/ast.js +4 -0
  4. package/dist/ast.js.map +1 -0
  5. package/dist/async-basic.test.d.ts +1 -0
  6. package/dist/async-basic.test.js +88 -0
  7. package/dist/async-basic.test.js.map +1 -0
  8. package/dist/async-jest.test.d.ts +1 -0
  9. package/dist/async-jest.test.js +99 -0
  10. package/dist/async-jest.test.js.map +1 -0
  11. package/dist/channel-jest.test.d.ts +1 -0
  12. package/dist/channel-jest.test.js +148 -0
  13. package/dist/channel-jest.test.js.map +1 -0
  14. package/dist/checker-jest.test.d.ts +1 -0
  15. package/dist/checker-jest.test.js +160 -0
  16. package/dist/checker-jest.test.js.map +1 -0
  17. package/dist/checker.d.ts +149 -0
  18. package/dist/checker.js +1565 -0
  19. package/dist/checker.js.map +1 -0
  20. package/dist/checker.test.d.ts +1 -0
  21. package/dist/checker.test.js +217 -0
  22. package/dist/checker.test.js.map +1 -0
  23. package/dist/compiler-jest.test.d.ts +1 -0
  24. package/dist/compiler-jest.test.js +233 -0
  25. package/dist/compiler-jest.test.js.map +1 -0
  26. package/dist/compiler.d.ts +127 -0
  27. package/dist/compiler.js +1588 -0
  28. package/dist/compiler.js.map +1 -0
  29. package/dist/compiler.test.d.ts +1 -0
  30. package/dist/compiler.test.js +313 -0
  31. package/dist/compiler.test.js.map +1 -0
  32. package/dist/db-100m-full.d.ts +5 -0
  33. package/dist/db-100m-full.js +78 -0
  34. package/dist/db-100m-full.js.map +1 -0
  35. package/dist/db-100m-no-index.d.ts +12 -0
  36. package/dist/db-100m-no-index.js +119 -0
  37. package/dist/db-100m-no-index.js.map +1 -0
  38. package/dist/db-100m-real.d.ts +5 -0
  39. package/dist/db-100m-real.js +131 -0
  40. package/dist/db-100m-real.js.map +1 -0
  41. package/dist/db-100m-streaming.d.ts +15 -0
  42. package/dist/db-100m-streaming.js +164 -0
  43. package/dist/db-100m-streaming.js.map +1 -0
  44. package/dist/db-100m-test.d.ts +5 -0
  45. package/dist/db-100m-test.js +111 -0
  46. package/dist/db-100m-test.js.map +1 -0
  47. package/dist/db-jest.test.d.ts +1 -0
  48. package/dist/db-jest.test.js +182 -0
  49. package/dist/db-jest.test.js.map +1 -0
  50. package/dist/db-runtime.d.ts +24 -0
  51. package/dist/db-runtime.js +204 -0
  52. package/dist/db-runtime.js.map +1 -0
  53. package/dist/db.d.ts +249 -0
  54. package/dist/db.js +593 -0
  55. package/dist/db.js.map +1 -0
  56. package/dist/file-io-jest.test.d.ts +1 -0
  57. package/dist/file-io-jest.test.js +225 -0
  58. package/dist/file-io-jest.test.js.map +1 -0
  59. package/dist/for-of-jest.test.d.ts +1 -0
  60. package/dist/for-of-jest.test.js +230 -0
  61. package/dist/for-of-jest.test.js.map +1 -0
  62. package/dist/for-of.test.d.ts +1 -0
  63. package/dist/for-of.test.js +305 -0
  64. package/dist/for-of.test.js.map +1 -0
  65. package/dist/function-literal-jest.test.d.ts +1 -0
  66. package/dist/function-literal-jest.test.js +180 -0
  67. package/dist/function-literal-jest.test.js.map +1 -0
  68. package/dist/function-literal.test.d.ts +1 -0
  69. package/dist/function-literal.test.js +245 -0
  70. package/dist/function-literal.test.js.map +1 -0
  71. package/dist/generics-jest.test.d.ts +1 -0
  72. package/dist/generics-jest.test.js +93 -0
  73. package/dist/generics-jest.test.js.map +1 -0
  74. package/dist/ir-gen.d.ts +15 -0
  75. package/dist/ir-gen.js +400 -0
  76. package/dist/ir-gen.js.map +1 -0
  77. package/dist/ir.d.ts +114 -0
  78. package/dist/ir.js +5 -0
  79. package/dist/ir.js.map +1 -0
  80. package/dist/lexer.d.ts +110 -0
  81. package/dist/lexer.js +467 -0
  82. package/dist/lexer.js.map +1 -0
  83. package/dist/lexer.test.d.ts +1 -0
  84. package/dist/lexer.test.js +426 -0
  85. package/dist/lexer.test.js.map +1 -0
  86. package/dist/main.d.ts +2 -0
  87. package/dist/main.js +241 -0
  88. package/dist/main.js.map +1 -0
  89. package/dist/module-jest.test.d.ts +1 -0
  90. package/dist/module-jest.test.js +123 -0
  91. package/dist/module-jest.test.js.map +1 -0
  92. package/dist/parser.d.ts +56 -0
  93. package/dist/parser.js +1060 -0
  94. package/dist/parser.js.map +1 -0
  95. package/dist/parser.test.d.ts +1 -0
  96. package/dist/parser.test.js +461 -0
  97. package/dist/parser.test.js.map +1 -0
  98. package/dist/pattern-matching-jest.test.d.ts +1 -0
  99. package/dist/pattern-matching-jest.test.js +158 -0
  100. package/dist/pattern-matching-jest.test.js.map +1 -0
  101. package/dist/pkg/init.d.ts +1 -0
  102. package/dist/pkg/init.js +118 -0
  103. package/dist/pkg/init.js.map +1 -0
  104. package/dist/pkg/install.d.ts +1 -0
  105. package/dist/pkg/install.js +77 -0
  106. package/dist/pkg/install.js.map +1 -0
  107. package/dist/pkg/registry.d.ts +23 -0
  108. package/dist/pkg/registry.js +106 -0
  109. package/dist/pkg/registry.js.map +1 -0
  110. package/dist/pkg/run.d.ts +1 -0
  111. package/dist/pkg/run.js +76 -0
  112. package/dist/pkg/run.js.map +1 -0
  113. package/dist/pkg/toml.d.ts +5 -0
  114. package/dist/pkg/toml.js +117 -0
  115. package/dist/pkg/toml.js.map +1 -0
  116. package/dist/repl.d.ts +15 -0
  117. package/dist/repl.js +197 -0
  118. package/dist/repl.js.map +1 -0
  119. package/dist/runtime/bytecode.d.ts +92 -0
  120. package/dist/runtime/bytecode.js +253 -0
  121. package/dist/runtime/bytecode.js.map +1 -0
  122. package/dist/runtime/value.d.ts +102 -0
  123. package/dist/runtime/value.js +302 -0
  124. package/dist/runtime/value.js.map +1 -0
  125. package/dist/runtime/vm.d.ts +65 -0
  126. package/dist/runtime/vm.js +293 -0
  127. package/dist/runtime/vm.js.map +1 -0
  128. package/dist/struct-instance-jest.test.d.ts +1 -0
  129. package/dist/struct-instance-jest.test.js +209 -0
  130. package/dist/struct-instance-jest.test.js.map +1 -0
  131. package/dist/struct-instance.test.d.ts +1 -0
  132. package/dist/struct-instance.test.js +291 -0
  133. package/dist/struct-instance.test.js.map +1 -0
  134. package/dist/struct-jest.test.d.ts +1 -0
  135. package/dist/struct-jest.test.js +176 -0
  136. package/dist/struct-jest.test.js.map +1 -0
  137. package/dist/struct.test.d.ts +1 -0
  138. package/dist/struct.test.js +231 -0
  139. package/dist/struct.test.js.map +1 -0
  140. package/dist/trait-jest.test.d.ts +1 -0
  141. package/dist/trait-jest.test.js +120 -0
  142. package/dist/trait-jest.test.js.map +1 -0
  143. package/dist/vm-jest.test.d.ts +1 -0
  144. package/dist/vm-jest.test.js +569 -0
  145. package/dist/vm-jest.test.js.map +1 -0
  146. package/dist/vm.d.ts +81 -0
  147. package/dist/vm.js +1956 -0
  148. package/dist/vm.js.map +1 -0
  149. package/dist/vm.test.d.ts +1 -0
  150. package/dist/vm.test.js +337 -0
  151. package/dist/vm.test.js.map +1 -0
  152. package/dist/web-repl/sandbox.d.ts +11 -0
  153. package/dist/web-repl/sandbox.js +76 -0
  154. package/dist/web-repl/sandbox.js.map +1 -0
  155. package/dist/web-repl/server.d.ts +1 -0
  156. package/dist/web-repl/server.js +111 -0
  157. package/dist/web-repl/server.js.map +1 -0
  158. package/dist/while-loop-jest.test.d.ts +1 -0
  159. package/dist/while-loop-jest.test.js +201 -0
  160. package/dist/while-loop-jest.test.js.map +1 -0
  161. package/dist/while-loop.test.d.ts +1 -0
  162. package/dist/while-loop.test.js +262 -0
  163. package/dist/while-loop.test.js.map +1 -0
  164. package/docs/EXPERIENCE.md +787 -0
  165. package/docs/README.md +175 -0
  166. package/docs/V1_V2_V3_ANALYSIS.md +107 -0
  167. package/docs/_config.yml +36 -0
  168. package/docs/api-reference.md +459 -0
  169. package/docs/architecture.md +470 -0
  170. package/docs/benchmarks.md +295 -0
  171. package/docs/comparison.md +454 -0
  172. package/docs/index.md +335 -0
  173. package/docs/language-completeness.md +228 -0
  174. package/docs/learning-guide.md +651 -0
  175. package/package.json +65 -0
  176. package/src/api/deploy_key.fl +294 -0
  177. package/src/api/issue.fl +302 -0
  178. package/src/api/org.fl +356 -0
  179. package/src/api/repo.fl +394 -0
  180. package/src/api/team.fl +299 -0
  181. package/src/api/user.fl +385 -0
  182. package/src/api/webhook.fl +273 -0
  183. package/src/ast.ts +158 -0
  184. package/src/async-basic.test.ts +94 -0
  185. package/src/async-jest.test.ts +107 -0
  186. package/src/channel-jest.test.ts +158 -0
  187. package/src/checker-jest.test.ts +189 -0
  188. package/src/checker.test.ts +279 -0
  189. package/src/checker.ts +1861 -0
  190. package/src/commands/analyze.fl +227 -0
  191. package/src/commands/auth.fl +315 -0
  192. package/src/commands/batch.fl +349 -0
  193. package/src/commands/config.fl +199 -0
  194. package/src/commands/deploy_key.fl +352 -0
  195. package/src/commands/issue.fl +275 -0
  196. package/src/commands/main.fl +492 -0
  197. package/src/commands/org.fl +425 -0
  198. package/src/commands/repo.fl +581 -0
  199. package/src/commands/team.fl +244 -0
  200. package/src/commands/user.fl +423 -0
  201. package/src/commands/webhook.fl +400 -0
  202. package/src/compiler-jest.test.ts +275 -0
  203. package/src/compiler.test.ts +375 -0
  204. package/src/compiler.ts +1770 -0
  205. package/src/config.fl +175 -0
  206. package/src/core/batch.fl +355 -0
  207. package/src/core/cache.fl +284 -0
  208. package/src/core/ensure.fl +324 -0
  209. package/src/db-100m-full.ts +96 -0
  210. package/src/db-100m-no-index.ts +133 -0
  211. package/src/db-100m-real.ts +152 -0
  212. package/src/db-100m-streaming.ts +154 -0
  213. package/src/db-100m-test.ts +136 -0
  214. package/src/db-jest.test.ts +161 -0
  215. package/src/db-runtime.ts +242 -0
  216. package/src/db.ts +676 -0
  217. package/src/errors.fl +134 -0
  218. package/src/for-of-jest.test.ts +246 -0
  219. package/src/for-of.test.ts +308 -0
  220. package/src/function-literal-jest.test.ts +193 -0
  221. package/src/function-literal.test.ts +248 -0
  222. package/src/generics-jest.test.ts +104 -0
  223. package/src/http/client.fl +327 -0
  224. package/src/ir-gen.ts +459 -0
  225. package/src/ir.ts +80 -0
  226. package/src/lexer.test.ts +499 -0
  227. package/src/lexer.ts +522 -0
  228. package/src/main.ts +223 -0
  229. package/src/models.fl +162 -0
  230. package/src/module-jest.test.ts +145 -0
  231. package/src/parser.test.ts +542 -0
  232. package/src/parser.ts +1211 -0
  233. package/src/pattern-matching-jest.test.ts +170 -0
  234. package/src/pkg/init.ts +91 -0
  235. package/src/pkg/install.ts +56 -0
  236. package/src/pkg/registry.ts +103 -0
  237. package/src/pkg/run.ts +49 -0
  238. package/src/pkg/toml.ts +129 -0
  239. package/src/repl.ts +190 -0
  240. package/src/runtime/bytecode.ts +291 -0
  241. package/src/runtime/value.ts +322 -0
  242. package/src/runtime/vm.ts +354 -0
  243. package/src/self-host/bootstrap.fl +68 -0
  244. package/src/self-host/interpreter.fl +361 -0
  245. package/src/self-host/lexer-simple.fl +22 -0
  246. package/src/self-host/lexer.fl +305 -0
  247. package/src/self-host/parser.fl +580 -0
  248. package/src/struct-instance-jest.test.ts +221 -0
  249. package/src/struct-instance.test.ts +293 -0
  250. package/src/struct-jest.test.ts +187 -0
  251. package/src/struct.test.ts +234 -0
  252. package/src/trait-jest.test.ts +136 -0
  253. package/src/vm-jest.test.ts +754 -0
  254. package/src/vm.ts +1976 -0
  255. package/src/web-repl/public/index.html +50 -0
  256. package/src/web-repl/public/main.js +105 -0
  257. package/src/web-repl/public/style.css +225 -0
  258. package/src/web-repl/sandbox.ts +88 -0
  259. package/src/web-repl/server.ts +97 -0
  260. package/src/while-loop-jest.test.ts +218 -0
  261. package/src/while-loop.test.ts +267 -0
package/dist/lexer.js ADDED
@@ -0,0 +1,467 @@
1
+ "use strict";
2
+ // FreeLang v4 — Lexer (SPEC_04 구현)
3
+ // UTF-8 소스코드 → 토큰 배열
4
+ Object.defineProperty(exports, "__esModule", { value: true });
5
+ exports.Lexer = exports.TokenType = void 0;
6
+ // ============================================================
7
+ // TokenType — 6 카테고리, ~50종
8
+ // ============================================================
9
+ var TokenType;
10
+ (function (TokenType) {
11
+ // 키워드 (23)
12
+ TokenType["VAR"] = "VAR";
13
+ TokenType["LET"] = "LET";
14
+ TokenType["CONST"] = "CONST";
15
+ TokenType["FN"] = "FN";
16
+ TokenType["ASYNC"] = "ASYNC";
17
+ TokenType["AWAIT"] = "AWAIT";
18
+ TokenType["STRUCT"] = "STRUCT";
19
+ TokenType["TRAIT"] = "TRAIT";
20
+ TokenType["IMPL"] = "IMPL";
21
+ TokenType["IF"] = "IF";
22
+ TokenType["ELSE"] = "ELSE";
23
+ TokenType["MATCH"] = "MATCH";
24
+ TokenType["FOR"] = "FOR";
25
+ TokenType["IN"] = "IN";
26
+ TokenType["OF"] = "OF";
27
+ TokenType["WHILE"] = "WHILE";
28
+ TokenType["BREAK"] = "BREAK";
29
+ TokenType["CONTINUE"] = "CONTINUE";
30
+ TokenType["RETURN"] = "RETURN";
31
+ TokenType["SPAWN"] = "SPAWN";
32
+ TokenType["TRUE"] = "TRUE";
33
+ TokenType["FALSE"] = "FALSE";
34
+ TokenType["AS"] = "AS";
35
+ TokenType["IMPORT"] = "IMPORT";
36
+ TokenType["EXPORT"] = "EXPORT";
37
+ TokenType["FROM"] = "FROM";
38
+ // 타입 이름 (7)
39
+ TokenType["TYPE_I32"] = "TYPE_I32";
40
+ TokenType["TYPE_I64"] = "TYPE_I64";
41
+ TokenType["TYPE_F64"] = "TYPE_F64";
42
+ TokenType["TYPE_BOOL"] = "TYPE_BOOL";
43
+ TokenType["TYPE_STRING"] = "TYPE_STRING";
44
+ TokenType["TYPE_VOID"] = "TYPE_VOID";
45
+ TokenType["TYPE_CHANNEL"] = "TYPE_CHANNEL";
46
+ // 리터럴 (3)
47
+ TokenType["INT_LIT"] = "INT_LIT";
48
+ TokenType["FLOAT_LIT"] = "FLOAT_LIT";
49
+ TokenType["STRING_LIT"] = "STRING_LIT";
50
+ // 연산자/구두점 (27)
51
+ TokenType["PLUS"] = "PLUS";
52
+ TokenType["MINUS"] = "MINUS";
53
+ TokenType["STAR"] = "STAR";
54
+ TokenType["SLASH"] = "SLASH";
55
+ TokenType["PERCENT"] = "PERCENT";
56
+ TokenType["EQ"] = "EQ";
57
+ TokenType["EQEQ"] = "EQEQ";
58
+ TokenType["NEQ"] = "NEQ";
59
+ TokenType["LT"] = "LT";
60
+ TokenType["GT"] = "GT";
61
+ TokenType["LTEQ"] = "LTEQ";
62
+ TokenType["GTEQ"] = "GTEQ";
63
+ TokenType["AND"] = "AND";
64
+ TokenType["OR"] = "OR";
65
+ TokenType["NOT"] = "NOT";
66
+ TokenType["QUESTION"] = "QUESTION";
67
+ TokenType["ARROW"] = "ARROW";
68
+ TokenType["RARROW"] = "RARROW";
69
+ TokenType["LARROW"] = "LARROW";
70
+ TokenType["COLON"] = "COLON";
71
+ TokenType["COMMA"] = "COMMA";
72
+ TokenType["DOT"] = "DOT";
73
+ TokenType["DOTDOT"] = "DOTDOT";
74
+ TokenType["LPAREN"] = "LPAREN";
75
+ TokenType["RPAREN"] = "RPAREN";
76
+ TokenType["LBRACKET"] = "LBRACKET";
77
+ TokenType["RBRACKET"] = "RBRACKET";
78
+ TokenType["LBRACE"] = "LBRACE";
79
+ TokenType["RBRACE"] = "RBRACE";
80
+ TokenType["SEMICOLON"] = "SEMICOLON";
81
+ // 특수 (2) — NEWLINE 토큰 없음 (SPEC_04 Q7)
82
+ TokenType["IDENT"] = "IDENT";
83
+ TokenType["EOF"] = "EOF";
84
+ })(TokenType || (exports.TokenType = TokenType = {}));
85
+ // ============================================================
86
+ // 키워드 테이블 (SPEC_04 Q4)
87
+ // ============================================================
88
+ const KEYWORDS = new Map([
89
+ // 키워드 (23)
90
+ ["var", TokenType.VAR],
91
+ ["let", TokenType.LET],
92
+ ["const", TokenType.CONST],
93
+ ["fn", TokenType.FN],
94
+ ["async", TokenType.ASYNC],
95
+ ["await", TokenType.AWAIT],
96
+ ["struct", TokenType.STRUCT],
97
+ ["trait", TokenType.TRAIT],
98
+ ["impl", TokenType.IMPL],
99
+ ["if", TokenType.IF],
100
+ ["else", TokenType.ELSE],
101
+ ["match", TokenType.MATCH],
102
+ ["for", TokenType.FOR],
103
+ ["in", TokenType.IN],
104
+ ["of", TokenType.OF],
105
+ ["while", TokenType.WHILE],
106
+ ["break", TokenType.BREAK],
107
+ ["continue", TokenType.CONTINUE],
108
+ ["return", TokenType.RETURN],
109
+ ["spawn", TokenType.SPAWN],
110
+ ["true", TokenType.TRUE],
111
+ ["false", TokenType.FALSE],
112
+ ["as", TokenType.AS],
113
+ // 모듈 시스템 키워드 (3)
114
+ ["import", TokenType.IMPORT],
115
+ ["export", TokenType.EXPORT],
116
+ ["from", TokenType.FROM],
117
+ // 논리 연산자 키워드 (2) — && || 대신 사용 가능
118
+ ["and", TokenType.AND],
119
+ ["or", TokenType.OR],
120
+ // 타입 이름 (7)
121
+ ["i32", TokenType.TYPE_I32],
122
+ ["i64", TokenType.TYPE_I64],
123
+ ["f64", TokenType.TYPE_F64],
124
+ ["bool", TokenType.TYPE_BOOL],
125
+ ["string", TokenType.TYPE_STRING],
126
+ ["void", TokenType.TYPE_VOID],
127
+ ["channel", TokenType.TYPE_CHANNEL],
128
+ ]);
129
+ // Option, Result, Ok, Err, Some, None은 키워드가 아님 → IDENT
130
+ // ============================================================
131
+ // Lexer
132
+ // ============================================================
133
+ class Lexer {
134
+ constructor(source) {
135
+ this.pos = 0;
136
+ this.line = 1;
137
+ this.col = 1;
138
+ this.tokens = [];
139
+ this.errors = [];
140
+ this.source = source;
141
+ }
142
+ tokenize() {
143
+ while (!this.isAtEnd()) {
144
+ this.scanToken();
145
+ }
146
+ this.tokens.push({ type: TokenType.EOF, lexeme: "", line: this.line, col: this.col });
147
+ return { tokens: this.tokens, errors: this.errors };
148
+ }
149
+ scanToken() {
150
+ const ch = this.peek();
151
+ // 공백 건너뜀 (스펙: ' ', '\t', '\r')
152
+ if (ch === " " || ch === "\t" || ch === "\r") {
153
+ this.advance();
154
+ return;
155
+ }
156
+ // 줄바꿈 — 토큰 생성 안 함, 줄 번호만 추적 (SPEC_04 Q7)
157
+ if (ch === "\n") {
158
+ this.advance();
159
+ this.line++;
160
+ this.col = 1;
161
+ return;
162
+ }
163
+ // # 주석 (FreeLang 고유)
164
+ if (ch === "#") {
165
+ this.skipHashComment();
166
+ return;
167
+ }
168
+ // 주석 또는 SLASH (SPEC_04 Q8)
169
+ if (ch === "/") {
170
+ if (this.peekNext() === "/") {
171
+ this.skipLineComment();
172
+ return;
173
+ }
174
+ if (this.peekNext() === "*") {
175
+ this.addError("block comments not supported, use //");
176
+ this.advance(); // /
177
+ this.advance(); // *
178
+ return;
179
+ }
180
+ this.addToken(TokenType.SLASH, "/");
181
+ this.advance();
182
+ return;
183
+ }
184
+ // 식별자 또는 키워드 (SPEC_04 Q4)
185
+ if (this.isAlpha(ch)) {
186
+ this.scanIdentOrKeyword();
187
+ return;
188
+ }
189
+ // 숫자 리터럴 (SPEC_04 Q5)
190
+ if (this.isDigit(ch)) {
191
+ this.scanNumber();
192
+ return;
193
+ }
194
+ // 문자열 리터럴 (SPEC_04 Q6)
195
+ if (ch === '"') {
196
+ this.scanString();
197
+ return;
198
+ }
199
+ // 2글자 연산자 먼저 확인 (최장 일치, SPEC_04 Q3)
200
+ const startLine = this.line;
201
+ const startCol = this.col;
202
+ if (ch === "=" && this.peekNext() === "=") {
203
+ this.advance();
204
+ this.advance();
205
+ this.tokens.push({ type: TokenType.EQEQ, lexeme: "==", line: startLine, col: startCol });
206
+ return;
207
+ }
208
+ if (ch === "=" && this.peekNext() === ">") {
209
+ this.advance();
210
+ this.advance();
211
+ this.tokens.push({ type: TokenType.ARROW, lexeme: "=>", line: startLine, col: startCol });
212
+ return;
213
+ }
214
+ if (ch === "-" && this.peekNext() === ">") {
215
+ this.advance();
216
+ this.advance();
217
+ this.tokens.push({ type: TokenType.RARROW, lexeme: "->", line: startLine, col: startCol });
218
+ return;
219
+ }
220
+ if (ch === "!" && this.peekNext() === "=") {
221
+ this.advance();
222
+ this.advance();
223
+ this.tokens.push({ type: TokenType.NEQ, lexeme: "!=", line: startLine, col: startCol });
224
+ return;
225
+ }
226
+ if (ch === "<" && this.peekNext() === "=") {
227
+ this.advance();
228
+ this.advance();
229
+ this.tokens.push({ type: TokenType.LTEQ, lexeme: "<=", line: startLine, col: startCol });
230
+ return;
231
+ }
232
+ if (ch === "<" && this.peekNext() === "-") {
233
+ this.advance();
234
+ this.advance();
235
+ this.tokens.push({ type: TokenType.LARROW, lexeme: "<-", line: startLine, col: startCol });
236
+ return;
237
+ }
238
+ if (ch === ">" && this.peekNext() === "=") {
239
+ this.advance();
240
+ this.advance();
241
+ this.tokens.push({ type: TokenType.GTEQ, lexeme: ">=", line: startLine, col: startCol });
242
+ return;
243
+ }
244
+ if (ch === "&" && this.peekNext() === "&") {
245
+ this.advance();
246
+ this.advance();
247
+ this.tokens.push({ type: TokenType.AND, lexeme: "&&", line: startLine, col: startCol });
248
+ return;
249
+ }
250
+ if (ch === "|" && this.peekNext() === "|") {
251
+ this.advance();
252
+ this.advance();
253
+ this.tokens.push({ type: TokenType.OR, lexeme: "||", line: startLine, col: startCol });
254
+ return;
255
+ }
256
+ if (ch === "." && this.peekNext() === ".") {
257
+ this.advance();
258
+ this.advance();
259
+ this.tokens.push({ type: TokenType.DOTDOT, lexeme: "..", line: startLine, col: startCol });
260
+ return;
261
+ }
262
+ // 1글자 연산자/구두점
263
+ const singleCharTokens = {
264
+ "+": TokenType.PLUS,
265
+ "-": TokenType.MINUS,
266
+ "*": TokenType.STAR,
267
+ "%": TokenType.PERCENT,
268
+ "=": TokenType.EQ,
269
+ "<": TokenType.LT,
270
+ ">": TokenType.GT,
271
+ "!": TokenType.NOT,
272
+ "?": TokenType.QUESTION,
273
+ ":": TokenType.COLON,
274
+ ",": TokenType.COMMA,
275
+ ".": TokenType.DOT,
276
+ ";": TokenType.SEMICOLON,
277
+ "(": TokenType.LPAREN,
278
+ ")": TokenType.RPAREN,
279
+ "[": TokenType.LBRACKET,
280
+ "]": TokenType.RBRACKET,
281
+ "{": TokenType.LBRACE,
282
+ "}": TokenType.RBRACE,
283
+ };
284
+ const tokenType = singleCharTokens[ch];
285
+ if (tokenType !== undefined) {
286
+ this.addToken(tokenType, ch);
287
+ this.advance();
288
+ return;
289
+ }
290
+ // 알 수 없는 문자
291
+ this.addError(`unexpected character: ${ch}`);
292
+ this.advance();
293
+ }
294
+ // --------------------------------------------------------
295
+ // 식별자/키워드 스캔 (SPEC_04 Q4)
296
+ // --------------------------------------------------------
297
+ scanIdentOrKeyword() {
298
+ const startCol = this.col;
299
+ const start = this.pos;
300
+ while (!this.isAtEnd() && this.isAlphaNum(this.peek())) {
301
+ this.advance();
302
+ }
303
+ const text = this.source.slice(start, this.pos);
304
+ const type = KEYWORDS.get(text) ?? TokenType.IDENT;
305
+ this.tokens.push({ type, lexeme: text, line: this.line, col: startCol });
306
+ }
307
+ // --------------------------------------------------------
308
+ // 숫자 스캔 (SPEC_04 Q5)
309
+ // --------------------------------------------------------
310
+ scanNumber() {
311
+ const startCol = this.col;
312
+ const start = this.pos;
313
+ let isFloat = false;
314
+ // 정수부: [0-9][0-9_]*
315
+ this.consumeDigits();
316
+ // 소수점 확인: '.' 다음이 숫자면 FLOAT_LIT
317
+ if (!this.isAtEnd() && this.peek() === "." && this.isDigit(this.peekNext() ?? "")) {
318
+ isFloat = true;
319
+ this.advance(); // '.' 소비
320
+ this.consumeDigits();
321
+ }
322
+ const text = this.source.slice(start, this.pos);
323
+ // 밑줄 유효성 검사
324
+ if (text.endsWith("_")) {
325
+ this.errors.push({ message: "trailing underscore in number", line: this.line, col: startCol });
326
+ return;
327
+ }
328
+ if (text.includes("__")) {
329
+ this.errors.push({ message: "consecutive underscores in number", line: this.line, col: startCol });
330
+ return;
331
+ }
332
+ const type = isFloat ? TokenType.FLOAT_LIT : TokenType.INT_LIT;
333
+ this.tokens.push({ type, lexeme: text, line: this.line, col: startCol });
334
+ }
335
+ consumeDigits() {
336
+ while (!this.isAtEnd() && (this.isDigit(this.peek()) || this.peek() === "_")) {
337
+ this.advance();
338
+ }
339
+ }
340
+ // --------------------------------------------------------
341
+ // 문자열 스캔 (SPEC_04 Q6)
342
+ // --------------------------------------------------------
343
+ scanString() {
344
+ const startLine = this.line;
345
+ const startCol = this.col;
346
+ this.advance(); // 여는 '"' 소비
347
+ let value = "";
348
+ while (!this.isAtEnd() && this.peek() !== '"') {
349
+ const ch = this.peek();
350
+ // 줄바꿈 불허
351
+ if (ch === "\n") {
352
+ this.errors.push({
353
+ message: "newline in string literal, use \\n",
354
+ line: this.line,
355
+ col: this.col,
356
+ });
357
+ return;
358
+ }
359
+ // 이스케이프 시퀀스
360
+ if (ch === "\\") {
361
+ this.advance(); // '\' 소비
362
+ if (this.isAtEnd()) {
363
+ this.errors.push({ message: "unterminated string literal", line: startLine, col: startCol });
364
+ return;
365
+ }
366
+ const esc = this.peek();
367
+ switch (esc) {
368
+ case "n":
369
+ value += "\n";
370
+ break;
371
+ case "t":
372
+ value += "\t";
373
+ break;
374
+ case "r":
375
+ value += "\r";
376
+ break;
377
+ case "\\":
378
+ value += "\\";
379
+ break;
380
+ case '"':
381
+ value += '"';
382
+ break;
383
+ case "0":
384
+ value += "\0";
385
+ break;
386
+ default:
387
+ this.errors.push({
388
+ message: `unknown escape sequence: \\${esc}`,
389
+ line: this.line,
390
+ col: this.col - 1,
391
+ });
392
+ value += esc;
393
+ }
394
+ this.advance();
395
+ continue;
396
+ }
397
+ value += ch;
398
+ this.advance();
399
+ }
400
+ if (this.isAtEnd()) {
401
+ this.errors.push({ message: "unterminated string literal", line: startLine, col: startCol });
402
+ return;
403
+ }
404
+ this.advance(); // 닫는 '"' 소비
405
+ const lexeme = this.source.slice(this.source.indexOf('"', this.pos - value.length - 2 < 0 ? 0 : 0), this.pos);
406
+ this.tokens.push({ type: TokenType.STRING_LIT, lexeme: value, line: startLine, col: startCol });
407
+ }
408
+ // --------------------------------------------------------
409
+ // 주석 스캔 (SPEC_04 Q8)
410
+ // --------------------------------------------------------
411
+ skipLineComment() {
412
+ this.advance(); // 첫 번째 '/'
413
+ this.advance(); // 두 번째 '/'
414
+ while (!this.isAtEnd() && this.peek() !== "\n") {
415
+ this.advance();
416
+ }
417
+ // '\n'은 소비하지 않음 — scanToken에서 줄 번호 처리
418
+ }
419
+ // # 주석 스캔 (FreeLang)
420
+ skipHashComment() {
421
+ this.advance(); // '#' 소비
422
+ while (!this.isAtEnd() && this.peek() !== "\n") {
423
+ this.advance();
424
+ }
425
+ // '\n'은 소비하지 않음 — scanToken에서 줄 번호 처리
426
+ }
427
+ // --------------------------------------------------------
428
+ // 유틸리티
429
+ // --------------------------------------------------------
430
+ isAtEnd() {
431
+ return this.pos >= this.source.length;
432
+ }
433
+ peek() {
434
+ return this.source[this.pos];
435
+ }
436
+ peekNext() {
437
+ return this.pos + 1 < this.source.length ? this.source[this.pos + 1] : undefined;
438
+ }
439
+ advance() {
440
+ if (!this.isAtEnd()) {
441
+ this.pos++;
442
+ this.col++;
443
+ }
444
+ }
445
+ isAlpha(ch) {
446
+ if ((ch >= "a" && ch <= "z") || (ch >= "A" && ch <= "Z") || ch === "_") {
447
+ return true;
448
+ }
449
+ // 한글 지원: U+AC00 ~ U+D7A3 (가 ~ 힣)
450
+ const code = ch.charCodeAt(0);
451
+ return code >= 0xAC00 && code <= 0xD7A3;
452
+ }
453
+ isDigit(ch) {
454
+ return ch >= "0" && ch <= "9";
455
+ }
456
+ isAlphaNum(ch) {
457
+ return this.isAlpha(ch) || this.isDigit(ch);
458
+ }
459
+ addToken(type, lexeme) {
460
+ this.tokens.push({ type, lexeme, line: this.line, col: this.col });
461
+ }
462
+ addError(message) {
463
+ this.errors.push({ message, line: this.line, col: this.col });
464
+ }
465
+ }
466
+ exports.Lexer = Lexer;
467
+ //# sourceMappingURL=lexer.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"lexer.js","sourceRoot":"","sources":["../src/lexer.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1 @@
1
+ export {};