Проблемы с HTML переводчиком - PullRequest
0 голосов
/ 31 марта 2011

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

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

Мой код:

HmtlDocument {
    Page.Title: "Test webpage using JTHtml";
    Using[] {
        "../Assets/Stylesheets/default.css",
        "../Assets/Scripts/slidercordian",
        "../Assets/Scripts/jquery.1.4.1.js"
    };
HtmlBody {
    HtmlElement Divider(container) {
        HtmlElement Divider(Header) {
            HtmlElement Image(Logo, "../Assets/Images/logo.png");
            HtmlElement Menu(MainMenu, Horizontal, Ul, li) {
                li.Text: "Home", "index.html";
                li.Text: "About Us", "about.html";
                li.Text: "Services", "services.html";
                li.Text: "Contact Us", "contact.html";
                li.Text: "My Account", "../myaccount/default.html";
            }
        }
        HtmlElement Divider(MainContent) {
            HtmlElement Heading(Heading, 1) {
                Heading.Text: "Welcome!";
            }
            HtmlElement Text(Text) {
                Text.Text: "Welcome to my new website written purely in jthtml";
            }
        }
    }
}

Видите ли, у меня проблема со следующей строкой:

li.Text: "[value]", [resource]";

Старый способ, которым у меня было это, было написать это так:

li.Text("[value]", "[resource]");

Однако, это не совсем верно для остальной части синтаксиса, поэтому я хотел бы оставить это так:

li.Text: "[value]", "[resource]";

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

Любая помощь приветствуется.

Спасибо!

Ответы [ 2 ]

0 голосов
/ 01 апреля 2011

Если у вас уже есть строка, вы можете легко использовать регулярное выражение, например

li\.Text:\s*"([^"]*)"\s*,\s*"([^"]*)"\s*;

Но это похоже на то, что вы могли бы понять самостоятельно.Может я неправильно понял вопрос?

0 голосов
/ 31 марта 2011

В строке: li.Text: "[value]", [resource] "; отсутствует открывающая кавычка.

Вы пропустили открывающую цитату или синтаксический анализатор предполагает ее понять без открывающей цитатыцитата

...