Что было бы лучше для синтаксиса для массива? - PullRequest
0 голосов
/ 13 января 2012

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

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

Допустим, у меня есть массив, который в Javascript будет представлен как

var people = [
    ["Joe",34],
    ["Bill",29],
    ["Steve",36]
];

Варианты

Option One
    people[2][1]
    returns 36

Option Two
    people[2,1]
    returns 36

Во-вторых, синтаксис для вызова функции.Я думал об одном из двух вариантов, но, если хотите, дайте мне предложения.

Допустим, у меня есть функция, которая в Javascript будет представлена ​​как

function foo(bar,hi) {
    return bar;
}

Варианты

Option One
    The same as Javascript

    example:
    function foo(bar,hi) {
        return bar
    }

Option Two
    The same as Javascript, but
    - separating each private variable with it's own set of parentheses
    - no need to state "function" in front

    example:
    foo(bar)(hi){
        return bar
    }

Option Three
    The same as Javascript, but
    - a colon to separate the namespace from the private variables
    - no parentheses due to the lack of need

    example:
    foo:bar,hi{
        return bar
    }

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

Спасибо заранее!

1 Ответ

1 голос
/ 13 января 2012

1) Решение не является одним из синтаксиса - вы решаете, включать ли 2D-массивы в качестве базового типа. Если ваша цель - написать простой язык, это определенно излишне. Вложенные массивы достаточно хороши (люди [2] [1]).

2) Поскольку вам придется самостоятельно анализировать эти шаблоны функций (и, насколько я понимаю, у вас нет доступа к регулярным выражениям), вам следует выбирать, основываясь на простоте синтаксического анализа. Для меня это явно вариант № 1, потому что у вас есть определенная начальная точка для любого объявления функции (зарезервированное слово «функция»). Когда вы анализируете скрипт, если ваш буфер токенов состоит только из «функции», вы знаете, что следующий фрагмент кода будет объявлением функции. То же самое нельзя сказать ни о одном из ваших других предложений.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...