git-subtree-dir: software/minizinc git-subtree-split: 4f10c82056ffcb1041d7ffef29d77a7eef92cf76
50 lines
1.1 KiB
Plaintext
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) + "'");
|
|
}
|
|
|
|
%%
|