]> git.phdru.name Git - phdru.name/cgi-bin/blog-ru/search-tags.git/commitdiff
Feat(parser): Операторы И, ИЛИ, НЕ
authorOleg Broytman <phd@phdru.name>
Sun, 16 Jun 2024 12:01:39 +0000 (15:01 +0300)
committerOleg Broytman <phd@phdru.name>
Sat, 22 Jun 2024 03:48:59 +0000 (06:48 +0300)
parser/grammar.ebnf
parser/parser.py

index ccfe6eb0de71e334572ccce758e7254a33e5dfca..2877e8f63edfa85e07a5d7b202891fea1a648c17 100644 (file)
@@ -57,12 +57,18 @@ name : /[A-Za-z
 
 ?and_word : "AND"
           | "and"
+          | "И"
+          | "и"
 
 ?or_word : "OR"
          | "or"
+         | "ИЛИ"
+         | "или"
 
 ?not_word : "NOT"
           | "not"
+          | "НЕ"
+          | "не"
 
 %import common.WS
 %ignore WS
index 0d9351bbfd6e66be8f31951972f5e8444b8c9750..da5c6e512f024849b8ed3c8b31518f5b86d35ab3 100755 (executable)
@@ -1,4 +1,5 @@
 #! /usr/bin/env python3
+# coding: koi8-r
 
 import os
 from lark import Lark, Transformer
@@ -58,9 +59,10 @@ if __name__ == '__main__':
     print(parse('not test'))
     print(parse('foo or bar'))
     print(parse('foo && bar'))
-    print(parse('foo && bar && baz'))
+    print(parse('Foo && bar && baz'))
     print(parse('!foo && bar && baz'))
     print(parse('(test)'))
     print(parse('(foo || bar)'))
     print(parse('(foo and !bar)'))
+    print(parse(u'(Тест или тест)'))
     print('----------')