AST Scala в [закрытом] Scala

Что-то как:

Dim myArray(9) as String

дал бы Вам массив 10 Строковых ссылок (каждый указывающий ни на Что).

, Если Вы не уверены в размере во время объявления, можно объявить Массив строк как это:

Dim myArray() as String

И затем можно указать на него на правильно измеренный массив строк позже:

ReDim myArray(9) as String

ZombieSheep прав относительно использования Списка, если Вы не знаете общего размера, и необходимо динамично заполнить его. В VB.NET, который был бы:

Dim myList as New List(Of String)
myList.Add("foo")
myList.Add("bar")

И затем получить массив из того Списка:

myList.ToArray()

@Mark

спасибо за исправление.

15
задан AWhitford 24 November 2009 в 08:22
поделиться

5 ответов

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

8
ответ дан 1 December 2019 в 04:09
поделиться

Несколько существующих синтаксических анализаторов:

Будьте осторожны. при использовании EBNF из спецификации очевидно:

«несоответствия между приложением и встроенной грамматикой, а также несоответствия между языком, скомпилированным с помощью scalac (и используемым в источниках scala), и языком, заявленным грамматикой». - Ошибка Scala Trac № 1826 .

4
ответ дан 1 December 2019 в 04:09
поделиться

Вы не можете построить AST для Scala только на основе грамматики. Есть имплициты, которые следует учитывать, и, чтобы рассмотреть их, необходимо рассмотреть механизм вывода типов.

Однако вы можете вызвать сам компилятор - в конце концов, это всего лишь файл jar. В Scala 2.8, в частности, есть довольно много ловушек для других программ - работа Майлза Сабина, который делает это именно для того, чтобы плагин Eclipse для Scala мог использовать компилятор таким образом.

Я предлагаю вам перейдите в список рассылки Scala Tools и свяжитесь с людьми там.

2
ответ дан 1 December 2019 в 04:09
поделиться

Не уверен насчет чистых решений scala, но если вам нужно реализовать план B, вы можете начать с проверки ANTLR или Rats!

0
ответ дан 1 December 2019 в 04:09
поделиться

Вот проект одного из коммиттеров компилятора http://github.com/paulp/scala-lang-combinators

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

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