Skip to content
This repository has been archived by the owner on Oct 5, 2021. It is now read-only.

Commit

Permalink
Merge pull request #512 from Shan1024/remove-xml-grammar
Browse files Browse the repository at this point in the history
Remove xml grammar
  • Loading branch information
sameerajayasoma authored Jul 21, 2017
2 parents 13a7318 + 2b399f8 commit db28b78
Show file tree
Hide file tree
Showing 15 changed files with 337 additions and 681 deletions.
280 changes: 13 additions & 267 deletions src/main/antlr/org/ballerinalang/plugins/idea/grammar/BallerinaLexer.g4
Original file line number Diff line number Diff line change
Expand Up @@ -327,6 +327,19 @@ StringCharacter
| ~'\\'? ('\\' '\\')* '\\' ["]
;

BacktickStringLiteral
: '`' ValidBackTickStringCharacters '`'
;
fragment
ValidBackTickStringCharacters
: ValidBackTickStringCharacter+
;

fragment
ValidBackTickStringCharacter
: ~[`\n\r]
;

// §3.10.6 Escape Sequences for Character and String Literals

fragment
Expand Down Expand Up @@ -382,10 +395,6 @@ LetterOrDigit
[\uD800-\uDBFF] [\uDC00-\uDFFF]
;
XMLLiteralStart
: TYPE_XML WS* BACKTICK { inXMLMode = true; } -> pushMode(XML)
;
ExpressionEnd
: {inXMLMode}? RIGHT_BRACE WS* RIGHT_BRACE -> popMode
;
Expand Down Expand Up @@ -416,269 +425,6 @@ IdentifierLiteralEscapeSequence
| UnicodeEscape
;

// XML lexer rules

// Everything in an XML Literal (inside backtick)
mode XML;

XML_COMMENT_START
: '<!--' -> pushMode(XML_COMMENT)
;

CDATA
: '<![CDATA[' .*? ']]>'
;

DTD
: '<!' (~[-].|.~[-]).*? '>' -> skip
;

EntityRef
: '&' XMLQName ';'
;

CharRef
: '&#' Digit+ ';'
| '&#x' HexDigits+ ';'
;

fragment
XML_WS
: ' '|'\t'|'\r'? '\n'
;

XML_TAG_OPEN : '<' -> pushMode(XML_TAG) ;
XML_TAG_OPEN_SLASH : '</' -> pushMode(XML_TAG) ;

XML_TAG_SPECIAL_OPEN
: '<?' (XMLQName QNAME_SEPARATOR)? XMLQName XML_WS -> pushMode(XML_PI)
;

XMLLiteralEnd
: '`' { inXMLMode = false; } -> popMode
;

fragment
ExpressionStart
: '{{'
;

XMLTemplateText
: XMLText? ExpressionStart -> pushMode(DEFAULT_MODE)
;

XMLText
: XMLBracesSequence? (XMLTextChar XMLBracesSequence?)+
| XMLBracesSequence (XMLTextChar XMLBracesSequence?)*
;

fragment
XMLTextChar
: ~[<&`{}]
| '\\' [`]
| XML_WS
| XMLEscapedSequence
;

fragment
XMLEscapedSequence
: '\\\\'
| '\\{{'
| '\\}}'
;

fragment
XMLBracesSequence
: '{}'+
| '}{'
| ('{}')* '{'
| '}' ('{}')*
;


// Everything inside an XML tag
mode XML_TAG;

XML_TAG_CLOSE : '>' -> popMode ;
XML_TAG_SPECIAL_CLOSE : '?>' -> popMode ; // close <?xml...?>
XML_TAG_SLASH_CLOSE : '/>' -> popMode ;
SLASH : '/' ;
QNAME_SEPARATOR : ':' ;
EQUALS : '=' ;
DOUBLE_QUOTE : '"' -> pushMode(DOUBLE_QUOTED_XML_STRING);
SINGLE_QUOTE : '\'' -> pushMode(SINGLE_QUOTED_XML_STRING);

XMLQName
: NameStartChar NameChar*
;

XML_TAG_WS
: [ \t\r\n] -> skip
;

XMLTagExpressionStart
: ExpressionStart -> pushMode(DEFAULT_MODE)
;

fragment
HEXDIGIT
: [a-fA-F0-9]
;

fragment
DIGIT
: [0-9]
;

fragment
NameChar
: NameStartChar
| '-' | '_' | '.' | DIGIT
| '\u00B7'
| '\u0300'..'\u036F'
| '\u203F'..'\u2040'
;

fragment
NameStartChar
: [a-zA-Z]
| '\u2070'..'\u218F'
| '\u2C00'..'\u2FEF'
| '\u3001'..'\uD7FF'
| '\uF900'..'\uFDCF'
| '\uFDF0'..'\uFFFD'
;


// Everything inside a double-quoted xml string (e.g: attribute values)
mode DOUBLE_QUOTED_XML_STRING;

DOUBLE_QUOTE_END
: DOUBLE_QUOTE -> popMode
;

XMLDoubleQuotedTemplateString
: XMLDoubleQuotedString? ExpressionStart -> pushMode(DEFAULT_MODE)
;

XMLDoubleQuotedString
: XMLBracesSequence? (XMLDoubleQuotedStringChar XMLBracesSequence?)+
| XMLBracesSequence (XMLDoubleQuotedStringChar XMLBracesSequence?)*
;

fragment
XMLDoubleQuotedStringChar
: ~[<"{}\\]
| XMLEscapedSequence
;
// Everything inside a single-quoted xml string (e.g: attribute values)
mode SINGLE_QUOTED_XML_STRING;
SINGLE_QUOTE_END
: SINGLE_QUOTE -> popMode
;
XMLSingleQuotedTemplateString
: XMLSingleQuotedString? ExpressionStart -> pushMode(DEFAULT_MODE)
;
XMLSingleQuotedString
: XMLBracesSequence? (XMLSingleQuotedStringChar XMLBracesSequence?)+
| XMLBracesSequence (XMLSingleQuotedStringChar XMLBracesSequence?)*
;
fragment
XMLSingleQuotedStringChar
: ~[<'{}\\]
| XMLEscapedSequence
;
mode XML_PI;
fragment
XML_PI_END
: XML_TAG_SPECIAL_CLOSE
;
XMLPIText
: XMLPITextFragment XML_PI_END -> popMode
;
XMLPITemplateText
: XMLPITextFragment ExpressionStart -> pushMode(DEFAULT_MODE)
;
fragment
XMLPITextFragment
: XMLPIAllowedSequence? (XMLPIChar XMLPIAllowedSequence?)*
;
fragment
XMLPIChar
: ~[{}?>]
| XMLEscapedSequence
;
fragment
XMLPIAllowedSequence
: XMLBracesSequence
| XMLPISpecialSequence
| (XMLBracesSequence XMLPISpecialSequence)+ XMLBracesSequence?
| (XMLPISpecialSequence XMLBracesSequence)+ XMLPISpecialSequence?
;
fragment
XMLPISpecialSequence
: '>'+
| '>'* '?'+
;
// Everything inside an XML comment
mode XML_COMMENT;
fragment
XML_COMMENT_END
: '-->'
;
XMLCommentText
: XMLCommentTextFragment XML_COMMENT_END -> popMode
;
XMLCommentTemplateText
: XMLCommentTextFragment ExpressionStart -> pushMode(DEFAULT_MODE)
;
fragment
XMLCommentTextFragment
: XMLCommentAllowedSequence? (XMLCommentChar XMLCommentAllowedSequence?)*
;
fragment
XMLCommentChar
: ~[{}>\-]
| XMLEscapedSequence
;
fragment
XMLCommentAllowedSequence
: XMLBracesSequence
| XMLCommentSpecialSequence
| (XMLBracesSequence XMLCommentSpecialSequence)+ XMLBracesSequence?
| (XMLCommentSpecialSequence XMLBracesSequence)+ XMLCommentSpecialSequence?
;
fragment
XMLCommentSpecialSequence
: '>'+
| ('>'* '-' '>'+)+
| '-'? '>'* '-'+
;
ERRCHAR
: . -> channel(HIDDEN)
;
Original file line number Diff line number Diff line change
Expand Up @@ -93,45 +93,13 @@ IntegerLiteral=92
FloatingPointLiteral=93
BooleanLiteral=94
QuotedStringLiteral=95
NullLiteral=96
Identifier=97
XMLLiteralStart=98
BacktickStringLiteral=96
NullLiteral=97
Identifier=98
ExpressionEnd=99
WS=100
LINE_COMMENT=101
XML_COMMENT_START=102
CDATA=103
DTD=104
EntityRef=105
CharRef=106
XML_TAG_OPEN=107
XML_TAG_OPEN_SLASH=108
XML_TAG_SPECIAL_OPEN=109
XMLLiteralEnd=110
XMLTemplateText=111
XMLText=112
XML_TAG_CLOSE=113
XML_TAG_SPECIAL_CLOSE=114
XML_TAG_SLASH_CLOSE=115
SLASH=116
QNAME_SEPARATOR=117
EQUALS=118
DOUBLE_QUOTE=119
SINGLE_QUOTE=120
XMLQName=121
XML_TAG_WS=122
XMLTagExpressionStart=123
DOUBLE_QUOTE_END=124
XMLDoubleQuotedTemplateString=125
XMLDoubleQuotedString=126
SINGLE_QUOTE_END=127
XMLSingleQuotedTemplateString=128
XMLSingleQuotedString=129
XMLPIText=130
XMLPITemplateText=131
XMLCommentText=132
XMLCommentTemplateText=133
ERRCHAR=134
ERRCHAR=102
'package'=1
'import'=2
'as'=3
Expand Down Expand Up @@ -190,6 +158,7 @@ ERRCHAR=134
'typeof'=56
'with'=57
';'=58
':'=59
'.'=60
','=61
'{'=62
Expand All @@ -198,14 +167,18 @@ ERRCHAR=134
')'=65
'['=66
']'=67
'='=68
'+'=69
'-'=70
'*'=71
'/'=72
'^'=73
'%'=74
'!'=75
'=='=76
'!='=77
'>'=78
'<'=79
'>='=80
'<='=81
'&&'=82
Expand All @@ -217,9 +190,5 @@ ERRCHAR=134
'~'=88
'&'=89
'|'=90
'null'=96
'<!--'=102
'</'=108
'?>'=114
'/>'=115
'\''=120
'"'=91
'null'=97
Loading

0 comments on commit db28b78

Please sign in to comment.