def asp_grammar_comments(): # return [ap.RegExMatch(r'%\*.*?\*%'), ap.RegExMatch(r'%.*$')] # TODO: handle multiline comments # wait for Arpeggio's PR#38, which fix the problem # return [ap.RegExMatch(r'%\*.*?\*%', multiline=True), ap.RegExMatch(r'%.*$')] # Follows a non-efficient but working way to do multiline return [ ap.RegExMatch(r'%\*((([^\*]?%)|([^%]?\*))|([^\*%]))*\*%'), ap.RegExMatch(r'%.*$') ]
def ordinaux(): return peg.RegExMatch(r"(?:\de|10e|1ère|\ première|deuxième|troisième|quatrième|cinquième|sixième|septième|huitième|neuvième|dixième)" )
def num_column(): return peg.RegExMatch(r"(?:\d|10|dix|\ un|une|deux|trois|quatre|cinq|six|sept|huit|neuf|troie|de)")
def variable(): return ap.RegExMatch(r'(([A-Z][a-zA-Z0-9_]*)|(_))')
def newline(): return arpeggio.RegExMatch(r"\n")
def allowed_chars(): return arpeggio.RegExMatch( r'[\w\^°!§$%&/\(\)\[\]{}\~@\+\-\*\?\>\<\._:`\\€]+')
def text(): return '"', ap.RegExMatch(r'((\\")|([^"]))*'), '"'
def ident(): return ap.RegExMatch(r'[a-z_-][a-zA-Z0-9_]*')
def IDENT(): return [STANDARD_IDENT, arpeggio.RegExMatch(r"\$\w*")]
def text(): return ap.ZeroOrMore([r'\"', ap.RegExMatch(r'[^"]*')])
def variable(): return ap.RegExMatch(r'(([A-Z][a-zA-Z0-9_]*)|(_))') def subterm(): return [(ident, ap.Optional("(", args, ")")), litteral, variable]
def text(): return '"', ap.RegExMatch(r'((\\")|([^"]))*'), '"' def litteral(): return [ident, text, number]
def number(): return ap.RegExMatch(r'-?[0-9]+') def text(): return '"', ap.RegExMatch(r'((\\")|([^"]))*'), '"'
def ident(): return ap.RegExMatch(r'[a-z][a-zA-Z0-9_]*') def number(): return ap.RegExMatch(r'-?[0-9]+')
def arityterm(): return ident, '/', ap.RegExMatch(r'[0-9]+')
def verb(): return peg.RegExMatch( r"(?:(?:(?:décal|pos|termin|plac|sélectionn)(?:er|ez|é|e))|(?:choisi(?:s|r|e|ssez))|(?:met(?:s|ttez|tre)))(?:(?: |-)(?:la|le)| une| un)" )
def turn(): return peg.RegExMatch(r"(?:(?:(tourn)(?:er|ez|é|e))(?:(?: |-)(?:la|le))?)")
def text(): return ap.Sequence('"', ap.RegExMatch(r'((\\")|([^"]))*'), '"', skipws=False) def comment(): return ap.RegExMatch(r'%.*$'),
def number(): return ap.RegExMatch(r'-?[0-9]+')
def comment(): return ap.RegExMatch(r'%.*$'), def multiline_comment(): return ap.RegExMatch(r'%\*.*?\*%', multiline=True),
def single_quoted_string(): return arpeggio.RegExMatch(r'''(?s)('[^'\\]*(?:\\.[^'\\]*)*')''')
def multiline_comment(): return ap.RegExMatch(r'%\*.*?\*%', multiline=True), def asp_code(): return ap.RegExMatch(r'[^%"\.]*[^%"\.\s]', multiline=True),
def comment_shell(): return arpeggio.RegExMatch(r"#.*")
def asp_code(): return ap.RegExMatch(r'[^%"\.]*[^%"\.\s]', multiline=True), def rule_end(): return '.',
def double_quoted_string(): return arpeggio.RegExMatch(r'''("[^"\\]*(?:\\.[^"\\]*)*")''')
def valid(): return peg.RegExMatch(r"(?:valid(?:ez|é|er|e)|en bas)")