diff --git a/pmd-dart/src/main/antlr4/net/sourceforge/pmd/lang/dart/antlr4/Dart2.g4 b/pmd-dart/src/main/antlr4/net/sourceforge/pmd/lang/dart/antlr4/Dart2.g4 index fcc42ae013..7d8793edab 100644 --- a/pmd-dart/src/main/antlr4/net/sourceforge/pmd/lang/dart/antlr4/Dart2.g4 +++ b/pmd-dart/src/main/antlr4/net/sourceforge/pmd/lang/dart/antlr4/Dart2.g4 @@ -340,58 +340,49 @@ booleanLiteral | 'false' ; -//stringLiteral: (MultilineString | SingleLineString)+; -stringLiteral: SingleLineString; -//stringLiteral: SingleLineString; +stringLiteral: (MultiLineString | SingleLineString)+; + SingleLineString - : '"' (~[\\"] | '\\\\' | ESCAPE_SEQUENCE | '\\"')* '"' - | '\'' (~[\\'] | '\\\\' | ESCAPE_SEQUENCE | '\\\'')* '\'' -// | 'r\'' (~('\'' | NEWLINE))* '\'' // TODO -// | 'r"' (~('\'' | NEWLINE))* '"' + : '"' StringContentDQ* '"' + | '\'' StringContentSQ* '\'' + | 'r\'' (~('\'' | '\n' | '\r'))* '\'' + | 'r"' (~('"' | '\n' | '\r'))* '"' ; -//MultilineString -// : '"""' StringContentTDQ* '"""' -// | '\'\'\'' StringContentTDQ* '\'\'\'' -// | 'r"""' (~'"""')* '"""' // TODO -// | 'r\'\'\'' (~'\'\'\'')* '\'\'\'' -// ; -//StringContentSQ: .;// TODO -//StringContentTDQ: .;// TODO fragment -ESCAPE_SEQUENCE - : '\\n' - | '\\r' - | '\\f' - | '\\b' - | '\\t' - | '\\v' - | '\\x' HEX_DIGIT HEX_DIGIT - | '\\u' HEX_DIGIT HEX_DIGIT HEX_DIGIT HEX_DIGIT - | '\\u{' HEX_DIGIT_SEQUENCE '}' - | '\\$' +StringContentDQ + : ~('\\' | '"' /*| '$'*/ | '\n' | '\r') + | '\\' ~('\n' | '\r') + //| stringInterpolation ; + fragment -HEX_DIGIT_SEQUENCE - : HEX_DIGIT HEX_DIGIT? HEX_DIGIT? - HEX_DIGIT? HEX_DIGIT? HEX_DIGIT? +StringContentSQ + : ~('\\' | '\'' /*| '$'*/ | '\n' | '\r') + | '\\' ~('\n' | '\r') + //| stringInterpolation ; -/*TODO - ::= \~{}( `\\' | `"' | `$' | ) - \alt `\\' \~{}( ) - \alt - ::= \~{}( `\\' | `\'' | `$' | ) - \alt `\\' \~{}( ) - \alt - ::= \~{}( `\\' | `"""' | `$') - \alt `\\' \~{}( ) - \alt +MultiLineString + : '"""' StringContentTDQ* '"""' + | '\'\'\'' StringContentTSQ* '\'\'\'' + | 'r"""' (~'"' | '"' ~'"' | '""' ~'"')* '"""' + | 'r\'\'\'' (~'\'' | '\'' ~'\'' | '\'\'' ~'\'')* '\'\'\'' + ; + +fragment +StringContentTDQ + : ~('\\' | '"' /*| '$'*/) + | '"' ~'"' | '""' ~'"' + //| stringInterpolation + ; + +fragment StringContentTSQ + : ~('\\' | '\'' /*| '$'*/) + | '\'' ~'\'' | '\'\'' ~'\'' + //| stringInterpolation + ; - ::= \~{}( `\\' | `\'\'\'' | `$') - \alt `\\' \~{}( ) - \alt -*/ NEWLINE : '\n' | '\r'