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: |

Hui said the messages, which included urging the disruption of airport operations, were attempts to incite followers to make use of poisonous, corrosive or flammable substances to vandalize police vehicles, and also called on others to make weapons to harm police. Find your optimal posting schedule and stick to it. The peak posting times include 8 am, 6 pm, and 8 pm on social media. Try to publish serious stuff in the morning and leave less demanding content later in the day. 2How to set up a Telegram channel? (A step-by-step tutorial) SUCK Channel Telegram "Doxxing content is forbidden on Telegram and our moderators routinely remove such content from around the world," said a spokesman for the messaging app, Remi Vaughn.
from us


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