в чем разница между синтаксисом и s-выражениями - PullRequest
4 голосов
/ 05 октября 2009

в чем основные различия между языком синтаксиса и языком s-выражений? Влияет ли использование s-выражений на время компиляции (в процессе разбора) или это дает какое-то преимущество языку?

Ответы [ 2 ]

1 голос
/ 05 октября 2009

Представление исходного кода на языке в виде S-выражений облегчает его синтаксический анализ, но это не главное. Различные диалекты Lisp имеют механизмы, позволяющие программам работать в структуре других программ, и это требует, чтобы программы имели прозрачное каноническое представление. Это представление S-выражений. Это то, что Лисп обеспечивает такими вещами, как макросы, код, выполняемый над программой во время компиляции, что практически невозможно в языках, которые не кодируют программы как структуры данных в языке.

1 голос
/ 05 октября 2009

В таких языках, как Lisp или Scheme, использование S-выражений для представления текста программы, вероятно, уменьшит объем работы для синтаксического анализатора. Компилятор Lisp будет тратить меньше времени на синтаксический анализ исходного кода Lisp, чем компилятор C ++ тратит на анализ кода C ++ (C ++ имеет репутацию одного из самых сложных для анализа языков).

Однако, за некоторыми исключениями (возможно, C ++?), Синтаксический анализ не является частью компилятора, которая займет больше всего времени. Java, Python, C #, Delphi имеют довольно простые грамматики.

...