소스 검색

A few fixes to escaping

tags/gm/2021-09-23T00Z/github.com--lark-parser-lark/0.5.1
Erez Shinan 6 년 전
부모
커밋
d846627fb7
3개의 변경된 파일8개의 추가작업 그리고 6개의 파일을 삭제
  1. +3
    -3
      examples/python3.g
  2. +4
    -2
      lark/load_grammar.py
  3. +1
    -1
      lark/tools/nearley.py

+ 3
- 3
examples/python3.g 파일 보기

@@ -165,7 +165,7 @@ string: STRING | LONG_STRING
// Tokens

NAME: /[a-zA-Z_]\w*/
COMMENT: /\#[^\n]*/
COMMENT: /#[^\n]*/
_NEWLINE: ( /\r?\n[\t ]*/ | COMMENT )+


@@ -177,8 +177,8 @@ _NEWLINE: ( /\r?\n[\t ]*/ | COMMENT )+

// STRING : /[ub]?r?("(?!"").*?(?<!\\)(\\\\)*?"|'(?!'').*?(?<!\\)(\\\\)*?')/
// LONG_STRING: /(?s)[ub]?r?(""".*?(?<!\\)(\\\\)*?"""|'''.*?(?<!\\)(\\\\)*?''')/
STRING : /(?i)[ub]?r?("(?!"").*?(?<!\\\\)(\\\\\\\\)*?"|'(?!'').*?(?<!\\\\)(\\\\\\\\)*?')/
LONG_STRING: /(?i)(?s)[ub]?r?(""".*?(?<!\\\\)(\\\\\\\\)*?"""|'''.*?(?<!\\\\)(\\\\\\\\)*?''')/
STRING : /(?i)[ubf]?r?("(?!"").*?(?<!\\\\)(\\\\\\\\)*?"|'(?!'').*?(?<!\\\\)(\\\\\\\\)*?')/
LONG_STRING: /(?i)(?s)[ubf]?r?(""".*?(?<!\\\\)(\\\\\\\\)*?"""|'''.*?(?<!\\\\)(\\\\\\\\)*?''')/

DEC_NUMBER: /(?i)[1-9]\d*l?/
HEX_NUMBER: /(?i)0x[\da-f]*l?/


+ 4
- 2
lark/load_grammar.py 파일 보기

@@ -77,7 +77,7 @@ TOKENS = {
'_TO': '->',
'_IGNORE': r'%ignore',
'_IMPORT': r'%import',
'NUMBER': '\d+',
'NUMBER': r'\d+',
}

RULES = {
@@ -294,7 +294,9 @@ def _literal_to_pattern(literal):
flags = None

assert v[0] == v[-1] and v[0] in '"/'
x = v[1:-1].replace("'", r"\'")
x = v[1:-1]
x = re.sub(r'(\\[wd/]|\\\[|\\\])', r'\\\1', x)
x = x.replace("'", r"\'")
s = literal_eval("u'''%s'''" % x)
return { 'STRING': PatternStr,
'REGEXP': PatternRE }[literal.type](s, flags)


+ 1
- 1
lark/tools/nearley.py 파일 보기

@@ -30,7 +30,7 @@ nearley_grammar = r"""
js: JS?

NAME: /[a-zA-Z_$]\w*/
COMMENT: /\#[^\n]*/
COMMENT: /#[^\n]*/
REGEXP: /\[.*?\]/
STRING: /".*?"/



불러오는 중...
취소
저장