首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >标记为Xtext DSL

标记为Xtext DSL
EN

Stack Overflow用户
提问于 2014-01-04 17:43:16
回答 1查看 498关注 0票数 2

我想将Markdown构建为Xtext。但是解析像# Introduction这样的标题似乎很棘手,因为它没有明确的结束符号。有什么办法表达这一点吗?还是一般情况下(也不仅仅是Xtext限制)不可能?

这是我的Xtext:

代码语言:javascript
复制
grammar markdown.Markdown with org.eclipse.xtext.common.Terminals

generate markdown "http://www.Markdown.markdown"

Model:
  entities+=Entity*;

Entity:
  Section | Subsection | Paragraph
;

Section:
  '#'
    content+=TextPart
  '::'
;

Subsection:
  '##'
    content+=TextPart
  '::'
;

Paragraph:
  content+=TextPart
;

TextPart:
  text=Text
;

Text:
        (ID | WS | SINGLE_NL | MULTI_NL | ANY_OTHER | '\\[' | '\\]' | ',' | "-" | '\\:' | '\\%' | '\\#' | '\\##' )+;


terminal ID:
        ('a'..'z' | 'A'..'Z' | '_') ('a'..'z' | 'A'..'Z' | '_' | '0'..'9')*;

terminal SL_COMMENT:
        '%%' !('\n' | '\r')* ('\r'? '\n');

terminal MULTI_NL:
        '\r'? '\n' (/*(' ' | '\t')**/ '\r'? '\n')+;

terminal SINGLE_NL:
        '\r'? '\n';

terminal WS:
        ' ' | '\t';

terminal ANY_OTHER:
        .;

终端来自Xdoc。有了这种语法规则,这是可能的:

代码语言:javascript
复制
# Introduction ::

Lorem ipsum.

## Other chapter ::

Lorem ipsum.

但我喜欢这样的降价

代码语言:javascript
复制
# Introduction

Lorem ipsum.

## Other chapter

Lorem ipsum.

因此,我们需要\n而不是::作为结束。但这有可能吗?此外,antlr生成由终端规则引起的警告。但是在构建Xdoc.xtext时不会出现这种警告。我的错是什么?

代码语言:javascript
复制
warning(200): ../markdown/src-gen/markdown/parser/antlr/internal/InternalMarkdown.g:436:1: Decision can match input such as "'-'" using multiple alternatives: 9, 14
As a result, alternative(s) 14 were disabled for that input
warning(200): ../markdown/src-gen/markdown/parser/antlr/internal/InternalMarkdown.g:436:1: Decision can match input such as "'\\['" using multiple alternatives: 6, 14
As a result, alternative(s) 14 were disabled for that input
...
EN

回答 1

Stack Overflow用户

发布于 2014-01-07 21:12:06

用Xtext基语言定义的单行注释终端非常类似:

代码语言:javascript
复制
terminal SL_COMMENT: '//' !('\n'|'\r')* ('\r'? '\n')?;

其基本思想是:符号可以包含任何不是行字符末尾的字符。

票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/20924402

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档