Commit Graph

13 Commits

Author SHA1 Message Date
saqut 218d54ba61 feat(faz2): sembol tablosu — isim çözümleme + scope + referans toplama (#71)
- parser: parseFunctionDecl() parametreleri artık AST'ye alıyor
  (FunctionDeclNode::params alanı eklendi; declarations.hpp/cpp güncellendi)
- parser: parseDeclaration() kullanıcı-tanımlı tip (struct alanı) desteği
- ast_json: addArray() m_hasArrayItem sıfırlama hatası düzeltildi
  (birden fazla dizi alanı içeren düğümlerde bozuk JSON üretimi giderildi)
- src/symbol/: Symbol, Scope, SymbolTable, SymbolCollector eklendi
  * İki geçiş: pass1 global hoist, pass2 gövde + declare-before-use
  * E001 tanımsız isim, E002 çift tanım, E010 döngüsel struct
  * print builtin tohumlama (TODO: #89 katalog)
- cli/symbols: yeni SymbolTable/Collector kullanıyor; tip + refs çıktısı
- examples/symbols/: dup.sqt, undef.sqt, cyclic.sqt test fixture'ları

Doğrulama:
  build/saqut symbols file:examples/fibonacci.sqt → 0 hata, 10 sembol
  examples/symbols/dup.sqt → E002
  examples/symbols/undef.sqt → E001
  examples/symbols/cyclic.sqt → E010
  tests/run.sh → TUM TESTLER GECTI
  AST JSON → geçerli

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-18 15:43:26 +03:00
saqut f4f57dd435 feat(faz1): AST'i Expression/Statement olarak ayır + analiz alanları (#70)
- ast_node.hpp: ExpressionNode (resolvedType + isConstant/foldedValue TODO)
  ve StatementNode (isReachable) ara taban sınıfları; core/type.hpp dahil.
- İfade düğümleri (Literal, Identifier, Binary, Postfix, Call, Member,
  Index) → ExpressionNode; toJson'a resolvedType (çözülmemişse null).
- Deyim düğümleri (Block/If/While/For/DoWhile/Return/Break/Continue/
  ExpressionStatement + VariableDecl) → StatementNode; toJson'a isReachable.
- IdentifierNode'a Symbol* resolvedSymbol (TODO faz-2, ileri bildirim).
- Faz 0 düzeltmesi: diagnostic.hpp kendi jsonEscape'ini kaldırdı, tools.hpp'
  dekini kullanıyor (ODR çakışması önlendi).

Doğrulama: -Wall -Wextra temiz; saqut ast fibonacci.sqt geçerli JSON
(48 resolvedType:null, 20 isReachable:true); parser-stress regresyon temiz;
Faz 0 birim testleri geçiyor.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-16 00:47:50 +03:00
saqut 455ef87751 fix: kaynak dosya yolu propagasyonu ve AST JSON girinti hataları
- Tokenizer::scan artik filePath parametresi alip Lexer'a iletiyor;
  SourceLocation.file artik bos degil (Asama 0 tamamlandi).
- JsonObject::add icin const char* overload eklendi (kind: true bug'i).
- JsonObject acilis suslu parantezi girintisiz yaziliyor, addArray ilk
  eleman oncesi bos satir birakmiyor; LiteralNode/IdentifierNode toJson
  ayni sekilde duzeltildi.
- analysisToJson girinti seviyeleri "analysis" objesine gore duzeltildi.
2026-06-14 15:57:54 +03:00
saqut 03970871db chore: JsonObject builder, LiteralType enum, token.hpp doc cleanup 2026-05-27 10:53:18 +03:00
saqut 9a013c53d4 Gemini 2026-05-27 10:29:30 +03:00
saqut ee1e5213cf refactor: modularize parser and AST components 2026-05-27 09:42:14 +03:00
saqut c354d0b434 feat: implement source location tracking and enhance parser AST nodes 2026-05-27 09:39:47 +03:00
saqut 6aa0da2378 parser: function calls, struct, member/index access - Final.sqt parses successfully (289 tokens, 200+ AST nodes) 2026-05-26 17:27:06 +03:00
saqut 4d3150e811 cli: modular command system, AST JSON serialization, file split prep 2026-05-26 17:05:20 +03:00
abdussamedulutas 3e685ea960 docs: kapsamli ADR dokumantasyonu, tum kaynak dosyalara detayli kommentler 2026-05-26 00:24:27 +03:00
abdussamedulutas 438bc0e200 feat: statement parser (if/for/while/do-while/return), keyword tokenizer düzeltmeleri
- Tokenizer: tüm keyword'ler eklendi (int, void, float, vb)
- Keyword boundary check: kısa keyword uzun identifier'la karışmıyor
- Lexer: '0' sonrası karakter kontrolü düzeltildi (0; token sorunu)
- Parser: if/else, for, while, do-while, return, break, continue desteği
- FunctionDecl, VariableDecl, Block, ExpressionStatement tam destek
- null expression koruması (sonsuz döngü engellendi)
2026-05-26 00:05:52 +03:00
abdussamedulutas 40579ca508 fix: Pratt parser NUD/LED akışı, Token* slicing, null guard
- ParserToken artık Token* tutuyor (object slicing önlendi)
- parseNullDenotation atom'ları tüketip ilerliyor
- parseExpression while döngüsü currentToken() ile çalışıyor
- IR: null Left/Right ve null ASTNode girişi korumalı
- source.sqt: 1/(74-63+!1)-74*2/-0.7e+10 başarıyla parse ediliyor
2026-05-26 00:03:19 +03:00
abdussamedulutas b08205c03f Rev 2026-05-26 00:00:21 +03:00