소스 검색

Fixed tools.nearley (converter)

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

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

@@ -27,11 +27,14 @@ nearley_grammar = r"""
_JS: /(?s){%.*?%}/

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

%import common.WS
%ignore WS
%ignore COMMENT

"""


@@ -85,7 +88,7 @@ class NearleyToLark(InlineTransformer):
return '\n'.join(filter(None, rules))

def nearley_to_lark(g, builtin_path):
parser = Lark(nearley_grammar)
parser = Lark(nearley_grammar, parser='earley', lexer='standard')
tree = parser.parse(g)
return NearleyToLark(builtin_path).transform(tree)

@@ -129,7 +132,7 @@ def test():
converted_grammar = nearley_to_lark(css_example_grammar, '/home/erez/nearley/builtin')
print(converted_grammar)

l = Lark(converted_grammar, start='csscolor', parser='earley_nolex')
l = Lark(converted_grammar, start='csscolor')
print(l.parse('#a199ff').pretty())
print(l.parse('rgb(255, 70%, 3)').pretty())

@@ -148,3 +151,4 @@ def main():

if __name__ == '__main__':
main()
# test()

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