mt-lang 0.3.17 → 0.3.22

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 (57) hide show
  1. checksums.yaml +4 -4
  2. data/lib/milk_tea/base.rb +1 -1
  3. data/lib/milk_tea/core/c_backend/expressions.rb +34 -23
  4. data/lib/milk_tea/core/c_backend/feature_detection.rb +25 -45
  5. data/lib/milk_tea/core/c_backend/type_collectors.rb +18 -30
  6. data/lib/milk_tea/core/c_backend/type_declaration.rb +0 -6
  7. data/lib/milk_tea/core/c_backend.rb +49 -39
  8. data/lib/milk_tea/core/compile_time.rb +98 -72
  9. data/lib/milk_tea/core/control_flow/builder.rb +2 -1
  10. data/lib/milk_tea/core/intrinsics.rb +7 -0
  11. data/lib/milk_tea/core/lexer.rb +46 -35
  12. data/lib/milk_tea/core/lowering/block.rb +9 -0
  13. data/lib/milk_tea/core/lowering/calls.rb +2 -0
  14. data/lib/milk_tea/core/lowering/declarations.rb +1 -1
  15. data/lib/milk_tea/core/lowering/functions.rb +11 -8
  16. data/lib/milk_tea/core/lowering/resolve.rb +11 -4
  17. data/lib/milk_tea/core/lowering/scans.rb +13 -18
  18. data/lib/milk_tea/core/module_binder.rb +19 -15
  19. data/lib/milk_tea/core/module_loader.rb +212 -59
  20. data/lib/milk_tea/core/module_path_resolver.rb +8 -7
  21. data/lib/milk_tea/core/parser/declarations.rb +43 -19
  22. data/lib/milk_tea/core/parser/expressions.rb +5 -8
  23. data/lib/milk_tea/core/parser/statements.rb +5 -5
  24. data/lib/milk_tea/core/parser.rb +26 -0
  25. data/lib/milk_tea/core/semantic_analyzer/calls.rb +24 -31
  26. data/lib/milk_tea/core/semantic_analyzer/expressions.rb +20 -23
  27. data/lib/milk_tea/core/semantic_analyzer/name_resolution.rb +146 -92
  28. data/lib/milk_tea/core/semantic_analyzer/statements.rb +19 -41
  29. data/lib/milk_tea/core/semantic_analyzer.rb +56 -37
  30. data/lib/milk_tea/core/types.rb +12 -17
  31. data/lib/milk_tea/lsp/diagnostics.rb +13 -0
  32. data/lib/milk_tea/lsp/server/semantic_tokens.rb +6 -0
  33. data/lib/milk_tea/tooling/cli/commands/bindgen.rb +11 -0
  34. data/lib/milk_tea/tooling/cli/commands/build.rb +37 -0
  35. data/lib/milk_tea/tooling/cli/commands/cache.rb +46 -0
  36. data/lib/milk_tea/tooling/cli/commands/check.rb +106 -0
  37. data/lib/milk_tea/tooling/cli/commands/command_base.rb +8 -0
  38. data/lib/milk_tea/tooling/cli/commands/completions.rb +48 -0
  39. data/lib/milk_tea/tooling/cli/commands/dap.rb +58 -0
  40. data/lib/milk_tea/tooling/cli/commands/debug.rb +77 -0
  41. data/lib/milk_tea/tooling/cli/commands/deps.rb +17 -0
  42. data/lib/milk_tea/tooling/cli/commands/docs.rb +58 -0
  43. data/lib/milk_tea/tooling/cli/commands/emit_c.rb +64 -0
  44. data/lib/milk_tea/tooling/cli/commands/format.rb +199 -0
  45. data/lib/milk_tea/tooling/cli/commands/lex.rb +46 -0
  46. data/lib/milk_tea/tooling/cli/commands/lint.rb +248 -0
  47. data/lib/milk_tea/tooling/cli/commands/lower.rb +50 -0
  48. data/lib/milk_tea/tooling/cli/commands/lsp.rb +43 -0
  49. data/lib/milk_tea/tooling/cli/commands/new.rb +26 -0
  50. data/lib/milk_tea/tooling/cli/commands/parse.rb +51 -0
  51. data/lib/milk_tea/tooling/cli/commands/run.rb +99 -0
  52. data/lib/milk_tea/tooling/cli/commands/snapshot.rb +117 -0
  53. data/lib/milk_tea/tooling/cli/commands/test.rb +557 -0
  54. data/lib/milk_tea/tooling/cli/commands/toolchain.rb +16 -0
  55. data/lib/milk_tea/tooling/cli.rb +101 -1893
  56. data/lib/milk_tea/tooling/sexpr_dumper.rb +7 -7
  57. metadata +24 -2
@@ -72,11 +72,15 @@ module MilkTea
72
72
  # ── Token serialisation ───────────────────────────────────────────
73
73
 
74
74
  def emit_token(token, buf)
75
- buf << "(token :type " << emit_token_type(token.type)
75
+ buf << "(token :type :" << token.type.to_s.tr("_", "-")
76
76
  buf << " :lexeme "
77
77
  emit_string(token.lexeme, buf)
78
78
  buf << " :literal "
79
- emit_value(token.literal, buf)
79
+ if token.type == :float
80
+ buf << token.lexeme
81
+ else
82
+ emit_value(token.literal, buf)
83
+ end
80
84
  buf << " :line " << token.line.to_s
81
85
  buf << " :column " << token.column.to_s
82
86
  buf << " :start_offset " << token.start_offset.to_s
@@ -84,10 +88,6 @@ module MilkTea
84
88
  buf << ")"
85
89
  end
86
90
 
87
- def emit_token_type(sym)
88
- ":" + sym.to_s.tr("_", "-")
89
- end
90
-
91
91
  # ── Types serialisation ───────────────────────────────────────────
92
92
 
93
93
  TYPES_SHORT_NAMES = {
@@ -337,7 +337,7 @@ module MilkTea
337
337
  end
338
338
 
339
339
  def format_float(value)
340
- s = sprintf("%.17g", value)
340
+ s = sprintf("%g", value)
341
341
  s.include?(".") || s.include?("e") ? s : s + ".0"
342
342
  end
343
343
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: mt-lang
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.3.17
4
+ version: 0.3.22
5
5
  platform: ruby
6
6
  authors:
7
7
  - Long (Teefan) Tran
@@ -362,6 +362,28 @@ files:
362
362
  - lib/milk_tea/tooling/build.rb
363
363
  - lib/milk_tea/tooling/build_cache.rb
364
364
  - lib/milk_tea/tooling/cli.rb
365
+ - lib/milk_tea/tooling/cli/commands/bindgen.rb
366
+ - lib/milk_tea/tooling/cli/commands/build.rb
367
+ - lib/milk_tea/tooling/cli/commands/cache.rb
368
+ - lib/milk_tea/tooling/cli/commands/check.rb
369
+ - lib/milk_tea/tooling/cli/commands/command_base.rb
370
+ - lib/milk_tea/tooling/cli/commands/completions.rb
371
+ - lib/milk_tea/tooling/cli/commands/dap.rb
372
+ - lib/milk_tea/tooling/cli/commands/debug.rb
373
+ - lib/milk_tea/tooling/cli/commands/deps.rb
374
+ - lib/milk_tea/tooling/cli/commands/docs.rb
375
+ - lib/milk_tea/tooling/cli/commands/emit_c.rb
376
+ - lib/milk_tea/tooling/cli/commands/format.rb
377
+ - lib/milk_tea/tooling/cli/commands/lex.rb
378
+ - lib/milk_tea/tooling/cli/commands/lint.rb
379
+ - lib/milk_tea/tooling/cli/commands/lower.rb
380
+ - lib/milk_tea/tooling/cli/commands/lsp.rb
381
+ - lib/milk_tea/tooling/cli/commands/new.rb
382
+ - lib/milk_tea/tooling/cli/commands/parse.rb
383
+ - lib/milk_tea/tooling/cli/commands/run.rb
384
+ - lib/milk_tea/tooling/cli/commands/snapshot.rb
385
+ - lib/milk_tea/tooling/cli/commands/test.rb
386
+ - lib/milk_tea/tooling/cli/commands/toolchain.rb
365
387
  - lib/milk_tea/tooling/cst_formatter.rb
366
388
  - lib/milk_tea/tooling/debug_info_formatter.rb
367
389
  - lib/milk_tea/tooling/debug_map.rb
@@ -603,7 +625,7 @@ metadata:
603
625
  homepage_uri: https://teefan.github.io/mt-lang/
604
626
  source_code_uri: https://github.com/teefan/mt-lang
605
627
  post_install_message: |
606
- Milk Tea 0.3.17 installed!
628
+ Milk Tea 0.3.22 installed!
607
629
 
608
630
  System requirements:
609
631
  - A C compiler (gcc or clang) must be available on PATH