GOLANG_INTERVIEW Telegram 1314
🧩 Кастомизируемый JavaScript-парсер с минимальным ядром

Идея проста: ядро парсера — максимально маленькое. Все «дорогие» фичи JS включаются опционально. Так вы получаете нужный синтаксис без лишних накладных расходов.

🔧 Что это даёт
- Меньше зависимостей и памяти.
- Быстрее разбор там, где не нужен весь JS (например, без `class/async/regex`).
- Гибкая сборка под конкретный продукт: от валидации шаблонов до мини-рантайма.

🧱 Архитектура
- Feature flags: подключайте только нужные конструкции (например, import, jsx, template, `async`).
- Модульный AST: узлы для отключённых фич не создаются.
- Стримовый лексер: позволяет парсить большие файлы без полного буфера.
- Sandbox-режим: строгие лимиты глубины/времени для безопасной обработки.

▶️ Пример (Go, условный API)

package main

import (
"context"
"time"

"example.com/jsparser"
)

func main() {
ctx, cancel := context.WithTimeout(context.Background(), 200*time.Millisecond)
defer cancel()

p := jsparser.New(jsparser.Options{
Features: jsparser.Enable(
jsparser.Base, // идентификаторы, выражения, блоки
jsparser.ImportESM, // поддержка import/export
jsparser.TemplateLit, // шаблонные строки
// jsparser.Class, // можно не включать
// jsparser.Async, // можно не включать
// jsparser.JSX, // включайте по надобности
),
MaxDepth: 512,
MaxTokens: 2_000_000,
})

ast, err := p.Parse(ctx, []byte(`import x from "./m.js"; const s = `+"`hi ${x}`"+`;`))
if err != nil {
panic(err)
}
_ = ast // используйте AST для анализа/трансформаций
}


https://github.com/xjslang/xjs
🔥31



tgoop.com/golang_interview/1314
Create:
Last Update:

🧩 Кастомизируемый JavaScript-парсер с минимальным ядром

Идея проста: ядро парсера — максимально маленькое. Все «дорогие» фичи JS включаются опционально. Так вы получаете нужный синтаксис без лишних накладных расходов.

🔧 Что это даёт
- Меньше зависимостей и памяти.
- Быстрее разбор там, где не нужен весь JS (например, без `class/async/regex`).
- Гибкая сборка под конкретный продукт: от валидации шаблонов до мини-рантайма.

🧱 Архитектура
- Feature flags: подключайте только нужные конструкции (например, import, jsx, template, `async`).
- Модульный AST: узлы для отключённых фич не создаются.
- Стримовый лексер: позволяет парсить большие файлы без полного буфера.
- Sandbox-режим: строгие лимиты глубины/времени для безопасной обработки.

▶️ Пример (Go, условный API)


package main

import (
"context"
"time"

"example.com/jsparser"
)

func main() {
ctx, cancel := context.WithTimeout(context.Background(), 200*time.Millisecond)
defer cancel()

p := jsparser.New(jsparser.Options{
Features: jsparser.Enable(
jsparser.Base, // идентификаторы, выражения, блоки
jsparser.ImportESM, // поддержка import/export
jsparser.TemplateLit, // шаблонные строки
// jsparser.Class, // можно не включать
// jsparser.Async, // можно не включать
// jsparser.JSX, // включайте по надобности
),
MaxDepth: 512,
MaxTokens: 2_000_000,
})

ast, err := p.Parse(ctx, []byte(`import x from "./m.js"; const s = `+"`hi ${x}`"+`;`))
if err != nil {
panic(err)
}
_ = ast // используйте AST для анализа/трансформаций
}


https://github.com/xjslang/xjs

BY Golang вопросы собеседований




Share with your friend now:
tgoop.com/golang_interview/1314

View MORE
Open in Telegram


Telegram News

Date: |

The imprisonment came as Telegram said it was "surprised" by claims that privacy commissioner Ada Chung Lai-ling is seeking to block the messaging app due to doxxing content targeting police and politicians. Public channels are public to the internet, regardless of whether or not they are subscribed. A public channel is displayed in search results and has a short address (link). A few years ago, you had to use a special bot to run a poll on Telegram. Now you can easily do that yourself in two clicks. Hit the Menu icon and select “Create Poll.” Write your question and add up to 10 options. Running polls is a powerful strategy for getting feedback from your audience. If you’re considering the possibility of modifying your channel in any way, be sure to ask your subscribers’ opinions first. With Bitcoin down 30% in the past week, some crypto traders have taken to Telegram to “voice” their feelings. Telegram is a leading cloud-based instant messages platform. It became popular in recent years for its privacy, speed, voice and video quality, and other unmatched features over its main competitor Whatsapp.
from us


Telegram Golang вопросы собеседований
FROM American