Что-то как:
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
спасибо за исправление.
Я думаю, что лучший способ получить доступ к AST - использовать плагин компилятора. Вы должны прочитать мягкое введение перед глубоким погружением .
Несколько существующих синтаксических анализаторов:
PsiBuilder
. Будьте осторожны. при использовании EBNF из спецификации очевидно:
«несоответствия между приложением и встроенной грамматикой, а также несоответствия между языком, скомпилированным с помощью scalac (и используемым в источниках scala), и языком, заявленным грамматикой». - Ошибка Scala Trac № 1826 .
Вы не можете построить AST для Scala только на основе грамматики. Есть имплициты, которые следует учитывать, и, чтобы рассмотреть их, необходимо рассмотреть механизм вывода типов.
Однако вы можете вызвать сам компилятор - в конце концов, это всего лишь файл jar. В Scala 2.8, в частности, есть довольно много ловушек для других программ - работа Майлза Сабина, который делает это именно для того, чтобы плагин Eclipse для Scala мог использовать компилятор таким образом.
Я предлагаю вам перейдите в список рассылки Scala Tools и свяжитесь с людьми там.
Не уверен насчет чистых решений scala, но если вам нужно реализовать план B, вы можете начать с проверки ANTLR или Rats!
Вот проект одного из коммиттеров компилятора http://github.com/paulp/scala-lang-combinators