Компилятор, который распознает разные языки и отправляет их соответствующим компиляторам. Возможный? - PullRequest
4 голосов
/ 05 января 2010

Я думал, можно ли соединить asp.net, php и java для формирования одной страницы.

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

Я имею в виду, я создаю страницу, которая имеет код из всех 3-х языков asp.net php и java.

<asp code></asp code>
<php code></php code>
<java code></java code>

или

<html>
    <asp code>
    <php code></php code>
    <java code></java code>
    </asp code>
</html>

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

Я не говорю, что все языки взаимодействуют друг с другом. Хотя они могут взаимодействовать друг с другом через XML. Но я только хочу сказать, что файл скомпилирован как одна сущность, имеющая код на разных языках программирования, который отправляется соответствующему компилятору для выполнения и, наконец, возвращается к родительскому компилятору

Я имею в виду компилятор, который может быть разработан, который распознает код на разных языках и отправляет их компилятору, как это делается в .net framework, например MSIL

Ответы [ 6 ]

5 голосов
/ 05 января 2010

Возможно ли это?

Цитирую преподобного Лавджоя из Симпсонов: «Короткий ответ« нет »с помощью« если ». Длинный ответ« да », с помощью« но ». *

Нет , в настоящее время невозможно , если вы используете доступную в настоящее время технологию.

Да , но требует, чтобы вы свернули свой собственный сервер, который действовал бы как подкладка, разделив различные части кода и отправив их на требуемые парсеры языка + компиляторы и затем объедините эти отдельные разделы для отображения страницы.

Edit: @Shantanu: мое удовольствие. Реализация полностью оставлена ​​на ваше усмотрение, так как я ничего подобного не исследовал.

В конечном счете, я чувствую, что это не самая продуктивная вещь, которую вы можете сделать, поскольку вы, вероятно, столкнетесь с большим количеством проблем.

Самое большое существо: Код из одного языка не будет иметь понятия о том, что делается на других языках.

т.е. Если у вас есть переменная, определенная значениями в вашем ASP, версии Java или PHP не будут знать об этом без огромных усилий, не говоря уже о том, что они не смогут получить доступ к памяти из процессов друг друга.

Однако, если вы хотите пойти по этому пути, я предлагаю вам взглянуть на генератор синтаксического анализатора, например ANTLR . Это поможет вам написать синтаксический анализатор, который будет искать ваши специальные теги (обратите внимание, это можно сделать с помощью регулярного выражения или синтаксического анализатора с ручным вращением, если это необходимо).

Получив код разделения, вы захотите отправить его компиляторам для каждого языка, с которого вы сможете получать текстовый вывод. После того, как у вас есть этот текст, он должен быть html + javascript, который затем можно объединить для отображения страницы.

Я скажу, что если вы хотите, чтобы эти 3 языка взаимодействовали, вы создадите ОГРОМНЫЙ проект. Возможно, будет проще использовать .Net Framework и написать для него языки PHP и JAVA (которые, вероятно, уже существуют), что позволит вам отказаться от создания целого стека серверов.

1 голос
/ 05 января 2010

Нет, нет. Сценарии находятся на стороне сервера, и весь файл будет по очереди передаваться на каждый из серверов (asp.net/php/java), и я считаю, что другой код вызовет ошибку разбора.

Это было бы ужасно неэффективно.

0 голосов
/ 05 января 2010

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

скажем

<aspX> - означает asp.net
<php> - означает php
<C#X> - код C #

как это Когда этот компилятор видит этот код

Он должен отправить соответствующий код своему компилятору.

например

<aspX>
<asp: Textbox....../>
<C#X>
xyz=abc();
</C#X>
</asp>

что-то в этом роде

0 голосов
/ 05 января 2010

ESI

http://www.akamai.com/html/support/esi.html

По сути, страница построена в виде серии плиток. Oracle реализует это в своих продуктах webcache, но было бы достаточно просто написать парсер самостоятельно.

С

0 голосов
/ 05 января 2010

Хотя это не совсем то, что я думаю, вы просто создаете страницы, которые содержат несколько клиентских языков. Просто определите различные атрибуты type для тегов сценария, например ::1004

<html>
    <script type="text/javascript">...</script>
    <script type="text/vbscript">...</script>
    <script type="text/someothersupportedscript">...</script>

    <body>
        ...
    </body>
</html>

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

Самый простой способ сделать это - назначить один язык своим "основным", создать тот, который фактически генерирует веб-страницу, и затем заставить его выполнять внешние вызовы, которые в конечном итоге обеспечивают части страницы, генерируемые другими языки (вместе с логикой, чтобы сшить их все вместе). Этими вызовами могут быть прямой вызов процесса, RMI с оболочками, вызовы веб-службы (локальным или удаленным хостам) и т. Д.

Тем не менее - я действительно не уверен, почему вы хотите это сделать. : -)

0 голосов
/ 05 января 2010

Я смешал языки, используя ajax.Это может иметь смысл в вашем случае, но вы не предоставили достаточно подробностей.

...