mirror of
https://github.com/duhanbalci/dexpr.git
synced 2026-08-30 16:01:41 +00:00
0.4.0
This commit is contained in:
+2
-1
@@ -74,7 +74,7 @@ Dil küçük olduğundan (7 keyword, ~20 operatör) iki gramer dosyasını sync
|
||||
|
||||
### Keyword Yönetimi
|
||||
|
||||
Keyword'ler `@extend` ile tanımlanır — `identifier` token'ından türetilir ama **her zaman** keyword olarak parse edilir. dexpr'de keyword'ler reserved'dır (`if`, `then`, `else`, `end`, `in`, `true`, `false`).
|
||||
Keyword'ler `@extend` ile tanımlanır — `identifier` token'ından türetilir ama **her zaman** keyword olarak parse edilir. dexpr'de keyword'ler reserved'dır (`if`, `then`, `else`, `end`, `in`, `true`, `false`, `null`).
|
||||
|
||||
### Error Recovery
|
||||
|
||||
@@ -95,6 +95,7 @@ Lezer GLR parser kullanır. Bozuk/yarım kod yazılırken:
|
||||
|-------|-----------|-----------------|
|
||||
| `if`, `then`, `else`, `end`, `in`, `elseIf` | `keyword` | `#7c3aed` (mor) |
|
||||
| `true`, `false` | `bool` | `#d97706` (turuncu) |
|
||||
| `null` | `null` | `#d97706` (turuncu) |
|
||||
| `"string"`, `'string'` | `string` | `#059669` (yeşil) |
|
||||
| `42`, `3.14` | `number` | `#2563eb` (mavi) |
|
||||
| `// comment`, `/* comment */` | `lineComment` / `blockComment` | `#9ca3af` (gri, italic) |
|
||||
|
||||
+2
-1
@@ -72,6 +72,7 @@ En düşükten en yükseğe:
|
||||
| Sayı | `42`, `3.14` | `Expr::Value(Number)` |
|
||||
| String | `"hello"`, `'world'` | `Expr::Value(String)` |
|
||||
| Boolean | `true`, `false` | `Expr::Value(Boolean)` |
|
||||
| Null | `null` | `Expr::Value(Null)` |
|
||||
| Parantezli ifade | `(a + b)` | İç ifade |
|
||||
| Tekli negatif | `-x` | `Expr::UnaryOp(Neg, x)` |
|
||||
| Tekli NOT | `!flag` | `Expr::UnaryOp(Not, flag)` |
|
||||
@@ -84,7 +85,7 @@ En düşükten en yükseğe:
|
||||
|
||||
### Ayrılmış Kelimeler
|
||||
|
||||
`if`, `then`, `else`, `end`, `true`, `false`, `in`
|
||||
`if`, `then`, `else`, `end`, `true`, `false`, `null`, `in`
|
||||
|
||||
### Boşluk ve Yorumlar
|
||||
|
||||
|
||||
+2
-1
@@ -126,7 +126,8 @@ struct VM<'a> {
|
||||
- **`handle_neg()`** — Sadece Number tipinde tekli negatif
|
||||
|
||||
### Karşılaştırma
|
||||
- **`compare_op(f, name)`** — Decimal değerler üzerinde karşılaştırma, Boolean döndürür
|
||||
- **`equality_op(negate)`** — `==` / `!=`. Her tip için çalışır, `Value`'nun `PartialEq`'i ile yapısal eşitlik (list, object dahil derin karşılaştırma). Farklı tipler hata vermez, `false` döner (`"1" == 1` → `false`, `x == null` → `x` Null ise `true`)
|
||||
- **`compare_op(f, name)`** — `<`, `<=`, `>`, `>=`. Number/Number ve String/String (lexicographic byte sırası) destekler; diğer kombinasyonlar `InvalidOperation` hatası
|
||||
|
||||
### Boolean
|
||||
- **`handle_and()`**, **`handle_or()`**, **`handle_not()`** — Boolean register'lar üzerinde mantık operasyonları
|
||||
|
||||
Reference in New Issue
Block a user