Методологии для разработки простого языка программирования

Сингл * означает, что может быть любое количество дополнительных позиционных параметров. foo() может быть вызван как foo(1,2,3,4,5). В теле нечто () param2 является последовательностью, содержащей 2-5.

двойное ** средства там могут быть любым количеством дополнительных именованных параметров. bar() может быть вызван как bar(1, a=2, b=3). В теле панели () param2 является словарем, содержащим {'':2, 'b ':3}

Со следующим кодом:

def foo(param1, *param2):
    print(param1)
    print(param2)

def bar(param1, **param2):
    print(param1)
    print(param2)

foo(1,2,3,4,5)
bar(1,a=2,b=3)

вывод

1
(2, 3, 4, 5)
1
{'a': 2, 'b': 3}
5
задан faceless1_14 30 July 2009 в 18:13
поделиться

3 ответа

Есть так много способов ...

Вы можете изучить стековые языки и Форт. Это не очень полезно при разработке других языков, но это то, что можно сделать очень быстро.

Вы можете изучить функциональные языки. Большинство из них основаны на нескольких простых концепциях и имеют простой синтаксический анализ. И, тем не менее, они очень могущественны.

И, наконец, традиционные языки. Они самые тяжелые. Вам нужно будет узнать о лексических анализаторах, синтаксических анализаторах, грамматиках LALR, LL-грамматиках, EBNF и обычных языках, чтобы пройти синтаксический анализ.

Нацеливание на байт-код - это не просто хорошая идея - поступать иначе просто безумие, и в большинстве случаев бесполезно в учебном упражнении.

Сделайте себе одолжение, поищите книги и учебные пособия по компиляторам.

Подойдет либо C, либо Java. Вероятно, у Java есть преимущество, поскольку объектная ориентация хорошо подходит для этого типа задач. Моя личная рекомендация - Scala. Это хороший язык для подобных задач, и он научит вас интересным вещам о языковом дизайне.

3
ответ дан 14 December 2019 в 19:21
поделиться

Я рекомендую прочитать следующие книги:

ANTLR

Шаблоны проектирования языков

Это даст вам инструменты и методы для создания синтаксических анализаторов, лексеров и компиляторов для пользовательских языков.

1
ответ дан 14 December 2019 в 19:21
поделиться

Вы можете сначала прочитать книгу о компиляторах .

Чтобы действительно понять, что происходит, вы, вероятно, захотите написать свой код на C.

Java wouldn ' Это плохой выбор, если вы хотите написать интерпретируемый язык, такой как Jython . Но поскольку похоже, что вы хотите скомпилировать машинный код, это может быть проще на C.

1
ответ дан 14 December 2019 в 19:21
поделиться
Другие вопросы по тегам:

Похожие вопросы: