Какой синтаксический анализатор Wiki?

Вы можете использовать os.clock, который возвращает время выполнения ваших программ с момента запуска в секундах.

Возвращает приблизительное значение в секундах процессорного времени, используемого программой. Источник

blockquote>

Эту функцию можно использовать таким образом.

local t1 = os.clock() -- begin
local t2 = os.clock() -- end
local dt = t2 - t1    -- calulate delta time

-- or looped

local t1 = os.clock() -- begin
while true do
    local t2 = os.clock() -- end
    local dt = t2 - t1    -- calulate delta time
    t1 = t2               -- reset t1

    -- use dt ...
end

-- or wait for time elapsed
-- runs until 1 second passed    

local t1 = os.clock()
while (os.clock() - t1) < 1 do
    -- do stuff while dt is smaller than 1

    -- could even reset timer (t1) to current to 
    -- repeat waiting
    -- t1 = os.clock() | ...
end

-- logic for your example

function counter()
    local time = os.clock()
    local lastLedOn = false
    local counter = 0

    while true do
        if os.clock() - time > 1.0 then
            break
        end

        if getLedValue() == on then -- replace
            time = os.clock()

            if not lastLedOn then
                lastLedOn = true
                counter = counter + 1

                -- print(counter) | or here if you want to print repeatedly
            end
        end
    end

    print(counter)
end -- was unable to test it

6
задан 11 June 2010 в 20:32
поделиться

5 ответов

Вы не можете сделать этого непосредственно от отформатированной Wiki страницы, потому что формат Wiki не имеет полной информации. Вместо этого текст формата Wiki переводится в основном набором правил регулярного выражения и вставляется в предопределенную платформу страницы в HTML или XHTML.

Самый легкий способ сделать, что Вы хотите, состоит в том, чтобы найти соответствующее средство форматирования для некоторого легкого текстового формата (как ткань или креольский язык), передача, которые до генерируют XHTML и затем анализируют XHTML, использующий любой обычный синтаксический анализатор.

2
ответ дан 10 December 2019 в 02:54
поделиться

То, что я сделал бы,

  1. Запишите синтаксис BNF для того языка Wiki. Поскольку это просто, BNF также будет прост.
  2. Используйте Платформу Духа для создания синтаксического анализатора для него. Это действительно просто (для этого простые вещи), и синтаксис BNF переводится в C++ так естественно.
2
ответ дан 10 December 2019 в 02:54
поделиться

Я записал синтаксический анализатор, который внутренне создает такое дерево в Java: Java Википедия API

Возможно, можно ли получить некоторое представление для C или реализации C++?

Класс HTMLConverter берет внутреннее дерево узлов для преобразования его в разметку HTML.

2
ответ дан 10 December 2019 в 02:54
поделиться

Можно хотеть смотреть на Mylyn WikiText, который является синтаксическим анализатором, который использует шаблон разработки Разработчика для преобразования разметки Wiki в различные форматы XML. Это поставлется с разработчиками для HTML, Справки Eclipse, DITA и DocBook. Можно использовать собственного разработчика для настройки вывода.

Синтаксический анализатор может обработать Ткань, MediaWiki, TracWiki, TWiki и разметку Слияния. Это расширяемо так, чтобы можно было добавить новые языки, если Вам нравится.

libary является Java

2
ответ дан 10 December 2019 в 02:54
поделиться

Можно получить некоторое представление из этого модуля Perl:

http://search.cpan.org/dist/HTML-WikiConverter-MediaWiki/

Я понимаю, что Вы ищете C/C++, но эй, Вы могли бы получить некоторое совершенство.

1
ответ дан 10 December 2019 в 02:54
поделиться