Files
Django_kube/Webcal-python/venv/lib/python3.11/site-packages/ics/grammar/contentline.py
T

236 lines
5.8 KiB
Python

#!/usr/bin/env python
# -*- coding: utf-8 -*-
# CAVEAT UTILITOR
#
# This file was automatically generated by TatSu.
#
# https://pypi.python.org/pypi/tatsu/
#
# Any changes you make to it will be overwritten the next time
# the file is generated.
from __future__ import print_function, division, absolute_import, unicode_literals
import sys
from tatsu.buffering import Buffer
from tatsu.parsing import Parser
from tatsu.parsing import tatsumasu, leftrec, nomemo
from tatsu.parsing import leftrec, nomemo # noqa
from tatsu.util import re, generic_main # noqa
KEYWORDS = {} # type: ignore
class contentlineBuffer(Buffer):
def __init__(
self,
text,
whitespace=None,
nameguard=None,
comments_re=None,
eol_comments_re=None,
ignorecase=None,
namechars='',
**kwargs
):
super(contentlineBuffer, self).__init__(
text,
whitespace=whitespace,
nameguard=nameguard,
comments_re=comments_re,
eol_comments_re=eol_comments_re,
ignorecase=ignorecase,
namechars=namechars,
**kwargs
)
class contentlineParser(Parser):
def __init__(
self,
whitespace=None,
nameguard=None,
comments_re=None,
eol_comments_re=None,
ignorecase=None,
left_recursion=False,
parseinfo=True,
keywords=None,
namechars='',
buffer_class=contentlineBuffer,
**kwargs
):
if keywords is None:
keywords = KEYWORDS
super(contentlineParser, self).__init__(
whitespace=whitespace,
nameguard=nameguard,
comments_re=comments_re,
eol_comments_re=eol_comments_re,
ignorecase=ignorecase,
left_recursion=left_recursion,
parseinfo=parseinfo,
keywords=keywords,
namechars=namechars,
buffer_class=buffer_class,
**kwargs
)
@tatsumasu()
def _start_(self): # noqa
self._contentline_()
self.name_last_node('@')
self._check_eof()
@tatsumasu()
def _full_(self): # noqa
self._contentline_()
self.add_last_node_to_name('@')
def block1():
self._pattern('(\\r?\\n)+')
self._contentline_()
self.add_last_node_to_name('@')
self._positive_closure(block1)
self._pattern('(\\r?\\n)*')
self._check_eof()
@tatsumasu()
def _contentline_(self): # noqa
self._ALPHADIGIT_MINUS_PLUS_()
self.name_last_node('name')
def block1():
self._token(';')
self._param_()
self.add_last_node_to_name('params')
self._closure(block1)
self._token(':')
self._VALUE_CHAR_STAR_()
self.name_last_node('value')
self.ast._define(
['name', 'value'],
['params']
)
@tatsumasu()
def _param_(self): # noqa
self._ALPHADIGIT_MINUS_PLUS_()
self.name_last_node('name')
self._token('=')
self._param_value_()
self.add_last_node_to_name('values')
def block2():
self._token(',')
self._param_value_()
self.add_last_node_to_name('values')
self._closure(block2)
self.ast._define(
['name'],
['values']
)
@tatsumasu()
def _param_value_(self): # noqa
with self._choice():
with self._option():
self._DQUOTE_()
self._cut()
self._QSAFE_CHAR_STAR_()
self.name_last_node('value')
self._DQUOTE_()
self._constant('true')
self.name_last_node('quoted')
with self._option():
self._SAFE_CHAR_STAR_()
self.name_last_node('value')
self._constant('false')
self.name_last_node('quoted')
self._error('no available options')
self.ast._define(
['quoted', 'value'],
[]
)
@tatsumasu()
def _ALPHADIGIT_MINUS_PLUS_(self): # noqa
self._pattern('[a-zA-Z0-9-]+')
@tatsumasu()
def _QSAFE_CHAR_STAR_(self): # noqa
self._pattern('[^\\x00-\\x08\\x0A-\\x1F\\x22\\x7F]*')
@tatsumasu()
def _SAFE_CHAR_STAR_(self): # noqa
self._pattern('[^\\x00-\\x08\\x0A-\\x1F\\x22\\x2C\\x3A\\x3B\\x7F]*')
@tatsumasu()
def _VALUE_CHAR_STAR_(self): # noqa
self._pattern('[^\\x00-\\x08\\x0A-\\x1F\\x7F]*')
@tatsumasu()
def _DQUOTE_(self): # noqa
self._token('"')
class contentlineSemantics(object):
def start(self, ast): # noqa
return ast
def full(self, ast): # noqa
return ast
def contentline(self, ast): # noqa
return ast
def param(self, ast): # noqa
return ast
def param_value(self, ast): # noqa
return ast
def ALPHADIGIT_MINUS_PLUS(self, ast): # noqa
return ast
def QSAFE_CHAR_STAR(self, ast): # noqa
return ast
def SAFE_CHAR_STAR(self, ast): # noqa
return ast
def VALUE_CHAR_STAR(self, ast): # noqa
return ast
def DQUOTE(self, ast): # noqa
return ast
def main(filename, start=None, **kwargs):
if start is None:
start = 'start'
if not filename or filename == '-':
text = sys.stdin.read()
else:
with open(filename) as f:
text = f.read()
parser = contentlineParser()
return parser.parse(text, rule_name=start, filename=filename, **kwargs)
if __name__ == '__main__':
import json
from tatsu.util import asjson
ast = generic_main(main, contentlineParser, name='contentline')
print('AST:')
print(ast)
print()
print('JSON:')
print(json.dumps(asjson(ast), indent=2))
print()