Size: a a a

Compiler Development

2020 March 03

AS

Anatoly Shirokov in Compiler Development
منصر دغيش
Write the following

• Algorithms to construct a DFA from a RE.
• Algorithm to construct NFA from a RE
• Algorithm to construct DFA from NFA
• Algorithm to work as lexical anlyizer

Please I want answer now 😘😘😘😘
источник

PS

Peter Sovietov in Compiler Development
Михаил Бахтерев
Можно ли развернуть эту мысль? Почему?
Здесь же никакой конкретики. Банальности и спорные утверждения в первой части, нет анализа существующих решений, в описании среды  выполнения не видно чего-то нового. Ну и Json,  вместо XML %) В целом — только декларации общего характера.
источник

PS

Peter Sovietov in Compiler Development
Спасибо!
источник
2020 March 04

مد

منصر دغيش in Compiler Development
Thank you Anatoly 👍
источник

M中

Mikhail 才藤 中村 Bashurov in Compiler Development
А что почитать на тему реализации аналога темплейтов в транспилируемом языке?
то есть скажем берем типизированный жс

import { validate } from ‘my-module’

type User = { id: number }

validate<User>({ id: “1” })


мой визитор находит вызов моего же validate и подменяет на

import jsonValidator from ‘json-validator’

function validate_User(obj) {
 return jsonValidator({
   id: “number”
 }).validate(obj)
}

validate_User({ id: “1” })


но что если дженерик передается через несколько функций, ведь тогда мне придется как бы размножить каждую из этих функций

import { validate } from ‘my-module’

type User = { id: number }

function foo<T>(obj) {
 return bar<T>(bar)
}

function bar<T>(obj) {
 return validate<T>(obj)
}

foo<User>({ id: “1” })


можно ли это сделать за один проход (за один визитор) или хотя бы гарантированно за два (но не на n)
и что покурить (я плохо секу в теории)
источник

AZ

Alexander Zaitsev in Compiler Development
Mikhail 才藤 中村 Bashurov
А что почитать на тему реализации аналога темплейтов в транспилируемом языке?
то есть скажем берем типизированный жс

import { validate } from ‘my-module’

type User = { id: number }

validate<User>({ id: “1” })


мой визитор находит вызов моего же validate и подменяет на

import jsonValidator from ‘json-validator’

function validate_User(obj) {
 return jsonValidator({
   id: “number”
 }).validate(obj)
}

validate_User({ id: “1” })


но что если дженерик передается через несколько функций, ведь тогда мне придется как бы размножить каждую из этих функций

import { validate } from ‘my-module’

type User = { id: number }

function foo<T>(obj) {
 return bar<T>(bar)
}

function bar<T>(obj) {
 return validate<T>(obj)
}

foo<User>({ id: “1” })


можно ли это сделать за один проход (за один визитор) или хотя бы гарантированно за два (но не на n)
и что покурить (я плохо секу в теории)
если можно, то код в теги заверните, пожалуйста
источник

M中

Mikhail 才藤 中村 Bashurov in Compiler Development
Alexander Zaitsev
если можно, то код в теги заверните, пожалуйста
я попытался, но в редактировании тг перестает их считать почему-то и экранирует
источник

M中

Mikhail 才藤 中村 Bashurov in Compiler Development
а не, норм
источник

А

Алексей in Compiler Development
Mikhail 才藤 中村 Bashurov
А что почитать на тему реализации аналога темплейтов в транспилируемом языке?
то есть скажем берем типизированный жс

import { validate } from ‘my-module’

type User = { id: number }

validate<User>({ id: “1” })


мой визитор находит вызов моего же validate и подменяет на

import jsonValidator from ‘json-validator’

function validate_User(obj) {
 return jsonValidator({
   id: “number”
 }).validate(obj)
}

validate_User({ id: “1” })


но что если дженерик передается через несколько функций, ведь тогда мне придется как бы размножить каждую из этих функций

import { validate } from ‘my-module’

type User = { id: number }

function foo<T>(obj) {
 return bar<T>(bar)
}

function bar<T>(obj) {
 return validate<T>(obj)
}

foo<User>({ id: “1” })


можно ли это сделать за один проход (за один визитор) или хотя бы гарантированно за два (но не на n)
и что покурить (я плохо секу в теории)
а надо ли плодить функции на каждый тип?
источник

А

Алексей in Compiler Development
если таргет вообще жс
источник

M中

Mikhail 才藤 中村 Bashurov in Compiler Development
Алексей
а надо ли плодить функции на каждый тип?
ну реализация же зависит от типа
что вы имеете ввиду?
источник

А

Алексей in Compiler Development
Ну как в TS например. У него все типы живут исключительно в компайлтайме.
источник

M中

Mikhail 才藤 中村 Bashurov in Compiler Development
Алексей
Ну как в TS например. У него все типы живут исключительно в компайлтайме.
я как раз и делаю по сути темплейты в ТС
источник

M中

Mikhail 才藤 中村 Bashurov in Compiler Development
и в компайлтайме превращаю вызовы функции с разными дженериками в разные функции
источник

А

Алексей in Compiler Development
ну у него
function foo<T>(value: T) { ... }
транспилируется в
function foo(value) { ... }
источник

M中

Mikhail 才藤 中村 Bashurov in Compiler Development
именно, а мне надо в foo_User, foo_Task, foo_Array_number (грубо говоря)
источник

M中

Mikhail 才藤 中村 Bashurov in Compiler Development
в тупом приближении я уже написал: просто запретил реэкспортировать и использовать в теле другой функции
источник

M中

Mikhail 才藤 中村 Bashurov in Compiler Development
точнее в теле другой дженерик функции
источник

А

Алексей in Compiler Development
ну вообще тогда следует учесть, что foo в коде уже не будет как таковой к примеру
источник

M中

Mikhail 才藤 中村 Bashurov in Compiler Development
не будет
источник