Re[5]: [PegGrammar] Wiki parser
A>[/c#]
Забыл вставить повтор. Правило any — это любой символ. А тебе нужно — любая строка. Потому так:
italic = "//" (!"//" any)* "//";
bold = "**" (!"**" any)* "**";
... << RSDN@Home 1.2.0 alpha 4 rev. 1472>>
Re[4]: [PegGrammar] Wiki parser
Здравствуйте, Ziaw, Вы писали:
Z>Здравствуйте, alvas, Вы писали:
A>>>>Помогите сдвинуться с места
A>>A>> [PegGrammar(Options = EmitDebugSources,
A>> null ,
A>> grammar
A>> {
A>> any = ['\u0000'..'\uFFFF'];
Z> node = italic / bold / list / ...;
Z> italic = "//" (!"//" any) "//" ;
Z> bold = "**" (!"**" any) "**" ;
Z> ...
A>> }
A>> )]
A>>
A>>А дальше что? :xz
Мне думается, что внутри bold, italic могут находися элементы разметки, на котрые должны влиять эти модификаторы, т.е. там не просто any*.
... << RSDN@Home 1.2.0 alpha 4 rev. 1472>>
От:
alvas
Дата: 28.05.11 04:53
Оценка:
Вот синтаксис
Вот тестовая страница
Помогите сдвинуться с места
Re: [PegGrammar] Wiki parser
От:
para
Дата: 28.05.11 05:06
Оценка:
Здравствуйте, alvas, Вы писали:
A>Вот синтаксис
A>Вот тестовая страница
A>Помогите сдвинуться с места
какую структуру вы хотите на выходе парсера?
свой тип АСТ или например XML-АСТ?
Re[2]: [PegGrammar] Wiki parser
От:
alvas
Дата: 28.05.11 05:13
Оценка:
Здравствуйте, para, Вы писали:
P>Здравствуйте, alvas, Вы писали:
A>>Вот синтаксис
A>>Вот тестовая страница
A>>Помогите сдвинуться с места
P>какую структуру вы хотите на выходе парсера?
P>свой тип АСТ или например XML-АСТ?
Без разницы.
[PegGrammar(Options = EmitDebugSources,
null ,
grammar
{
any = ['\u0000'..'\uFFFF'];
}
)]
А дальше что?
Re[3]: [PegGrammar] Wiki parser
От:
Ziaw
Дата: 28.05.11 05:36
Оценка:
Здравствуйте, alvas, Вы писали:
A>>>Помогите сдвинуться с места
A>A> [PegGrammar(Options = EmitDebugSources,
A> null ,
A> grammar
A> {
A> any = ['\u0000'..'\uFFFF'];
node = italic / bold / list / ...;
italic = "//" (!"//" any) "//" ;
bold = "**" (!"**" any) "**" ;
...
A> }
A> )]
A>
A>А дальше что?
Re[4]: [PegGrammar] Wiki parser
От:
alvas
Дата: 28.05.11 05:44
Оценка:
Здравствуйте, Ziaw, Вы писали:
Z>Здравствуйте, alvas, Вы писали:
A>>>>Помогите сдвинуться с места
A>>A>> [PegGrammar(Options = EmitDebugSources,
A>> null ,
A>> grammar
A>> {
A>> any = ['\u0000'..'\uFFFF'];
Z> node = italic / bold / list / ...;
Z> italic = "//" (!"//" any) "//" ;
Z> bold = "**" (!"**" any) "**" ;
Z> ...
A>> }
A>> )]
A>>
A>>А дальше что?
Большое спасибо, но это только для парных
**bold** or //italic//
А для одинарных?
* item a
* item b
** subitem
Re[5]: [PegGrammar] Wiki parser
Здравствуйте, alvas, Вы писали:
A>А для одинарных?
A>A>* item a
A>* item b
A>** subitem
A>
А одинарные оканчиваются на конец строки.
/* иЗвиНите зА неРовнЫй поЧерК */
Re[5]: [PegGrammar] Wiki parser
От:
Ziaw
Дата: 28.05.11 06:37
Оценка:
Здравствуйте, alvas, Вы писали:
A>А для одинарных?
" * " (!"\n" any) "\n"
Re[6]: [PegGrammar] Wiki parser
Здравствуйте, hardcase, Вы писали:
H>Здравствуйте, alvas, Вы писали:
A>>А для одинарных?
A>>A>>* item a
A>>* item b
A>>** subitem
A>>
H>А одинарные оканчиваются на конец строки.
Вернее на два конца строки или на следующий элемент списка:
lineEnd = "\r"? "\n";
nodeBreak = lineEnd lineEnd;
bulletListItem = "*"+ (!("*" / nodeBreak) any)*;
numberedListItem = "#"+ (!("#" / nodeBreak) any)*;
/* иЗвиНите зА неРовнЫй поЧерК */
Re[4]: [PegGrammar] Wiki parser
От:
alvas
Дата: 28.05.11 07:27
Оценка:
Здравствуйте, Ziaw, Вы писали:
Этот пример возвращает None
using System;
using Nemerle.Peg;
using System.Console;
namespace WikiPeg
{
[PegGrammar(Options = EmitDebugSource, start,
grammar
{
any = ['\u0000'..'\uFFFF'];
node = italic / bold ;// li;
italic = "//" (!"//" any) "//" ;
bold = "**" (!"**" any) "**" ;
//li = " * " (!"\n" any) "\n";
start : string = node;
})]
public sealed class WikiParser
{
start(token: NToken) : string
{
def res = GetText(token);
res;
}
}
module Program
{
Main() : void
{
def parser = WikiParser();
def rez = parser.Parse("**hello**" );
WriteLine(rez);
_ = ReadLine();
}
}
}
Пока на собственное сообщение не было ответов, его можно удалить.
Удалить