UNPKG

petcarescript

Version:

PetCareScript - A modern, expressive programming language designed for humans

326 lines (258 loc) 8 kB
// Conectar ao banco SQLite store db = connect("myapp.sqlite"); await db.connect(); // Criar tabelas await db.createTable("users", { id: types.PRIMARY_KEY, name: types.TEXT + " NOT NULL", email: types.TEXT + " UNIQUE NOT NULL", age: types.INTEGER, created_at: types.TIMESTAMP }); await db.createTable("posts", { id: types.PRIMARY_KEY, user_id: types.INTEGER + " NOT NULL", title: types.TEXT + " NOT NULL", content: types.TEXT, published: types.BOOLEAN + " DEFAULT 0", created_at: types.TIMESTAMP }); // CREATE - Inserir dados store newUser = await db.insert("users", { name: "João Silva", email: "joao@example.com", age: 30 }); show "Usuário criado com ID: " + newUser.lastID; // READ - Consultar dados store allUsers = await db.select("users"); store specificUser = await db.select("users", { email: "joao@example.com" }); // UPDATE - Atualizar dados await db.update("users", { age: 31 }, { email: "joao@example.com" } ); // DELETE - Deletar dados await db.delete("users", { id: 1 }); node index.js teste-hello-world.pcs 🚀 Executing teste-hello-world.pcs... ❌ Runtime Error: Parse errors: Unexpected token: connect ❌ Error: Parse errors: Unexpected token: connect // Usar transações para operações atômicas await db.transaction(async build(db) { // Criar usuário store userResult = await db.insert("users", { name: "Ana Costa", email: "ana@example.com", age: 28 }); // Criar post para este usuário await db.insert("posts", { user_id: userResult.lastID, title: "Meu primeiro post", content: "Olá mundo!", published: 1 }); show "Usuário e post criados com sucesso!"; }); node index.js teste-hello-world.pcs 🚀 Executing teste-hello-world.pcs... ❌ Runtime Error: Undefined variable 'db'. ❌ Error: Undefined variable 'db'. // Conectar ao banco SQLite store db = connect("myapp.sqlite"); await db.connect(); // Migrations store migrations = [ createMigration("001_add_user_profile", async build(db) { await db.run("ALTER TABLE users ADD COLUMN bio TEXT"); await db.run("ALTER TABLE users ADD COLUMN avatar TEXT"); }), createMigration("002_create_comments", async build(db) { await db.createTable("comments", { id: types.PRIMARY_KEY, post_id: types.INTEGER + " NOT NULL", user_id: types.INTEGER + " NOT NULL", content: types.TEXT + " NOT NULL", created_at: types.TIMESTAMP }); }) ]; await db.migrate(migrations); // Seeds store seeds = [ createSeed("users_seed", async build(db) { store sampleUsers = [ { name: "João", email: "joao@example.com", age: 30 }, { name: "Maria", email: "maria@example.com", age: 25 } ]; foreach (userData in sampleUsers) { await db.insert("users", userData); } }) ]; await db.seed(seeds); node index.js teste-hello-world.pcs 🚀 Executing teste-hello-world.pcs... ❌ Runtime Error: Parse errors: Unexpected token: connect ❌ Error: Parse errors: Unexpected token: connect --- // math-utils.pcs export build fibonacci(n) { when (n <= 1) { give n; } give fibonacci(n - 1) + fibonacci(n - 2); } export build isPrime(n) { when (n < 2) give no; loop (store i = 2; i <= sqrt(n); i = i + 1) { when (n % i == 0) give no; } give yes; } export store PI = 3.14159; // main.pcs import { fibonacci, isPrime, PI } from "./math-utils"; show "Fibonacci(10): " + fibonacci(10); show "É 17 primo? " + isPrime(17); show "PI: " + PI; Nao consigo importar o arquivo ---- // utils.pcs module StringUtils { export build reverse(str) { give str.split("").reverse().join(""); } export build capitalize(str) { give str.charAt(0).toUpperCase() + str.slice(1); } } module ArrayUtils { export build unique(arr) { store result = []; foreach (item in arr) { when (!contains(result, item)) { push(result, item); } } give result; } } // main.pcs use StringUtils from "./utils"; use ArrayUtils from "./utils"; store reversed = StringUtils.reverse("hello"); store capitalized = StringUtils.capitalize("world"); store uniqueItems = ArrayUtils.unique([1, 2, 2, 3, 3, 4]); node index.js teste-hello-world.pcs 🚀 Executing teste-hello-world.pcs... ❌ Runtime Error: Parse errors: Unexpected token: contains ❌ Error: Parse errors: Unexpected token: contains --- store value = 10; store text = "Hello World"; store numbers = [1, 2, 3, 4, 5]; // Operadores 'is' e 'isnt' when (value is 10) { show "Valor é exatamente 10"; } when (value isnt 20) { show "Valor não é 20"; } // Operador 'between' when (value between 5 and 15) { show "Valor está entre 5 e 15"; } // Operador 'contains' when (text contains "World") { show "Texto contém 'World'"; } // Operador 'in' when (3 in numbers) { show "3 está no array"; } // Operador 'like' (pattern matching) when (text like "Hello*") { show "Texto começa com 'Hello'"; } when (text like "*World") { show "Texto termina com 'World'"; } // Operadores lógicos alternativos when (value > 5 and value < 15) { show "Valor está no intervalo (usando 'and')"; } when (value < 5 or value > 15) { show "Valor está fora do intervalo (usando 'or')"; } when (not (value > 20)) { show "Valor não é maior que 20 (usando 'not')"; } node index.js teste-hello-world.pcs 🚀 Executing teste-hello-world.pcs... Valor é exatamente 10 Valor não é 20 ❌ Runtime Error: Unknown binary operator: BETWEEN ❌ Error: Unknown binary operator: BETWEEN ---- store users = ["Ana", "João", "Maria"]; store emails = ["ana@email.com", "joao@email.com"]; // Verificações em arrays when ("João" in users) { show "João está na lista de usuários"; } // Verificações de padrão foreach (email in emails) { when (email like "*@email.com") { show email + " é um email válido"; } } // Combinações complexas store age = 25; store hasLicense = yes; when (age between 18 and 65 and hasLicense) { show "Pode dirigir veículos comerciais"; } node index.js teste-hello-world.pcs 🚀 Executing teste-hello-world.pcs... João está na lista de usuários ❌ Runtime Error: Unknown binary operator: LIKE ❌ Error: Unknown binary operator: LIKE --- store user = { name: "João", age: 30, city: "SP" }; // Propriedades store keys = Object.keys(user); // ["name", "age", "city"] store values = Object.values(user); // ["João", 30, "SP"] store entries = Object.entries(user); // [["name", "João"], ...] // Verificação show hasProperty(user, "name"); // yes show hasProperty(user, "email"); // no // Clonagem store copy = Object.assign({}, user); store deepCopy = JSON.parse(JSON.stringify(user)); // Mesclagem store defaults = { theme: "dark", lang: "pt" }; store settings = Object.assign(defaults, user); node index.js teste-hello-world.pcs 🚀 Executing teste-hello-world.pcs... ❌ Runtime Error: Undefined variable 'Object'. ❌ Error: Undefined variable 'Object'. --- // Delay e timing await delay(1000); // Espera 1 segundo await sleep(500); // Alias para delay // Timeout store result = await timeout(longOperation(), 5000); // 5s timeout // Retry store result = await retry(unreliableOperation, 3, 1000); // Parallel/Series store results = await parallel([task1(), task2(), task3()]); store results = await series([task1, task2, task3]); // Throttle e Debounce store throttled = throttle(expensiveFunction, 1000); store debounced = debounce(searchFunction, 300); 🚀 Executing teste-hello-world.pcs... ❌ Runtime Error: Parse errors: Unexpected token: timeout ❌ Error: Parse errors: Unexpected token: timeout cliente@MacBook-Pro-de-Estevam petcarescript-lang