1
0
This repository has been archived on 2025-03-06. You can view files and clone it, but cannot push or open issues or pull requests.
Jip J. Dekker fad1b07018 Squashed 'software/minizinc/' content from commit 4f10c8205
git-subtree-dir: software/minizinc
git-subtree-split: 4f10c82056ffcb1041d7ffef29d77a7eef92cf76
2021-06-16 14:06:46 +10:00

50 lines
1.1 KiB
Plaintext

/* -*- mode: C++; c-basic-offset: 2; indent-tabs-mode: nil -*- */
/*
* Main authors:
* Jip J. Dekker <jip.dekker@monash.edu>
*/
/* This Source Code Form is subject to the terms of the Mozilla Public
* License, v. 2.0. If a copy of the MPL was not distributed with this
* file, You can obtain one at http://mozilla.org/MPL/2.0/. */
%option noyywrap
%option prefix="regex_yy"
%{
#include <cstdlib>
#define YY_DECL int yylex()
#include <minizinc/support/regex.hh>
%}
%%
[ \t\n] { /* ignore white space */ }
[0-9]+ { regex_yylval.iValue = std::atoi(regex_yytext); return R_INTEGER; }
"|" { return R_UNION; }
"+" { return R_PLUS; }
"*" { return R_STAR; }
"(" { return R_GROUP_OPEN; }
")" { return R_GROUP_CLOSE; }
"?" { return R_OPTIONAL; }
"{" { return R_QUANT_OPEN; }
"}" { return R_QUANT_CLOSE; }
"," { return R_COMMA; }
"." { return R_ANY; }
"[" { return R_CLASS_OPEN; }
"]" { return R_CLASS_CLOSE; }
"-" { return R_CLASS_RANGE; }
"^" { return R_CLASS_NEG; }
. {
/* Catch all */
throw std::runtime_error("Illegal token in regular expression: '" + std::string(regex_yytext) + "'");
}
%%