about summary refs log tree commit diff homepage
path: root/stp/parser/smtlib.lex
diff options
context:
space:
mode:
Diffstat (limited to 'stp/parser/smtlib.lex')
-rw-r--r--stp/parser/smtlib.lex232
1 files changed, 0 insertions, 232 deletions
diff --git a/stp/parser/smtlib.lex b/stp/parser/smtlib.lex
deleted file mode 100644
index a03ae94e..00000000
--- a/stp/parser/smtlib.lex
+++ /dev/null
@@ -1,232 +0,0 @@
-%{
-  /********************************************************************
-   * AUTHORS: Vijay Ganesh, David L. Dill
-   *
-   * BEGIN DATE: July, 2006
-   *
-   * This file is modified version of the CVCL's smtlib.lex file. Please
-   * see CVCL license below
-   ********************************************************************/
-  
-  /********************************************************************
-   * \file smtlib.lex
-   * 
-   * Author: Sergey Berezin, Clark Barrett
-   * 
-   * Created: Apr 30 2005
-   *
-   * <hr>
-   * Copyright (C) 2004 by the Board of Trustees of Leland Stanford
-   * Junior University and by New York University. 
-   *
-   * License to use, copy, modify, sell and/or distribute this software
-   * and its documentation for any purpose is hereby granted without
-   * royalty, subject to the terms and conditions defined in the \ref
-   * LICENSE file provided with this distribution.  In particular:
-   *
-   * - The above copyright notice and this permission notice must appear
-   * in all copies of the software and related documentation.
-   *
-   * - THE SOFTWARE IS PROVIDED "AS-IS", WITHOUT ANY WARRANTIES,
-   * EXPRESSED OR IMPLIED.  USE IT AT YOUR OWN RISK.
-   * 
-   * <hr>
-   ********************************************************************/
-  // -*- c++ -*-
-#include <iostream>
-#include "../AST/AST.h"
-#include "parsePL_defs.h"
-  
-  extern char *yytext;
-  extern int yyerror (char *msg);
-  
-  // File-static (local to this file) variables and functions
-  static std::string _string_lit;
-  
-  static char escapeChar(char c) {
-    switch(c) {
-    case 'n': return '\n';
-    case 't': return '\t';
-    default: return c;
-    }
-  }      
-
-  extern BEEV::ASTNode SingleBitOne;
-  extern BEEV::ASTNode SingleBitZero;
-
-/* Changed for smtlib speedup */
-/* bv{DIGIT}+      { yylval.node = new BEEV::ASTNode(BEEV::_bm->CreateBVConst(yytext+2, 10)); return BVCONST_TOK;} */
-
-%}
-
-%option noyywrap
-%option nounput
-%option noreject
-%option noyymore
-%option yylineno
-
-%x	COMMENT
-%x	STRING_LITERAL
-%x      USER_VALUE
-
-LETTER	([a-zA-Z])
-DIGIT	([0-9])
-OPCHAR	(['\.\_]) 
-ANYTHING  ({LETTER}|{DIGIT}|{OPCHAR})
-
-%%
-[ \n\t\r\f]	{ /* sk'ip whitespace */ }
-{DIGIT}+	{ yylval.uintval = strtoul(yytext, NULL, 10); return NUMERAL_TOK; }
-
-
-bv{DIGIT}+	{ yylval.ullval = strtoull(yytext+2, NULL, 10); return BVCONST_TOK; }
-
-bit{DIGIT}+     {
-  		   char c = yytext[3];
-		   if (c == '1') {
-		     yylval.node = new BEEV::ASTNode(SingleBitOne);
-		   }
-		   else {
-		     yylval.node = new BEEV::ASTNode(SingleBitZero);
-		   }
-		   return BITCONST_TOK;
-		};
-
-
-";"		{ BEGIN COMMENT; }
-<COMMENT>"\n"	{ BEGIN INITIAL; /* return to normal mode */}
-<COMMENT>.	{ /* stay in comment mode */ }
-
-<INITIAL>"\""		{ BEGIN STRING_LITERAL;
-                          _string_lit.erase(_string_lit.begin(),
-                                            _string_lit.end()); }
-<STRING_LITERAL>"\\".	{ /* escape characters (like \n or \") */
-                          _string_lit.insert(_string_lit.end(),
-                                             escapeChar(yytext[1])); }
-<STRING_LITERAL>"\""	{ BEGIN INITIAL; /* return to normal mode */
-			  yylval.str = new std::string(_string_lit);
-                          return STRING_TOK; }
-<STRING_LITERAL>.	{ _string_lit.insert(_string_lit.end(),*yytext); }
-
-
-<INITIAL>"{"		{ BEGIN USER_VALUE;
-                          _string_lit.erase(_string_lit.begin(),
-                                            _string_lit.end()); }
-<USER_VALUE>"\\"[{}] { /* escape characters */
-                          _string_lit.insert(_string_lit.end(),yytext[1]); }
-
-<USER_VALUE>"}"	        { BEGIN INITIAL; /* return to normal mode */
-			  yylval.str = new std::string(_string_lit);
-                          return USER_VAL_TOK; }
-<USER_VALUE>"\n"        { _string_lit.insert(_string_lit.end(),'\n');}
-<USER_VALUE>.	        { _string_lit.insert(_string_lit.end(),*yytext); }
-
-"BitVec"        { return BITVEC_TOK;}
-"Array"         { return ARRAY_TOK;}
-"true"          { return TRUE_TOK; }
-"false"         { return FALSE_TOK; }
-"not"           { return NOT_TOK; }
-"implies"       { return IMPLIES_TOK; }
-"ite"           { return ITE_TOK;}
-"if_then_else"  { return IF_THEN_ELSE_TOK; }
-"and"           { return AND_TOK; }
-"or"            { return OR_TOK; }
-"xor"           { return XOR_TOK; }
-"iff"           { return IFF_TOK; }
-"let"           { return LET_TOK; }
-"flet"          { return FLET_TOK; }
-"notes"         { return NOTES_TOK; }
-"cvc_command"   { return CVC_COMMAND_TOK; }
-"sorts"         { return SORTS_TOK; }
-"funs"          { return FUNS_TOK; }
-"preds"         { return PREDS_TOK; }
-"extensions"    { return EXTENSIONS_TOK; }
-"definition"    { return DEFINITION_TOK; }
-"axioms"        { return AXIOMS_TOK; }
-"logic"         { return LOGIC_TOK; }
-"sat"           { return SAT_TOK; }
-"unsat"         { return UNSAT_TOK; }
-"unknown"       { return UNKNOWN_TOK; }
-"assumption"    { return ASSUMPTION_TOK; }
-"formula"       { return FORMULA_TOK; }
-"status"        { return STATUS_TOK; }
-"difficulty"    { return DIFFICULTY_TOK; }
-"benchmark"     { return BENCHMARK_TOK; }
-"source"        { return SOURCE_TOK;}
-"category"      { return CATEGORY_TOK;} 
-"extrasorts"    { return EXTRASORTS_TOK; }
-"extrafuns"     { return EXTRAFUNS_TOK; }
-"extrapreds"    { return EXTRAPREDS_TOK; }
-"language"      { return LANGUAGE_TOK; }
-"distinct"      { return DISTINCT_TOK; }
-"select"        { return SELECT_TOK; }
-"store"         { return STORE_TOK; }
-":"             { return COLON_TOK; }
-"\["            { return LBRACKET_TOK; }
-"\]"            { return RBRACKET_TOK; }
-"("             { return LPAREN_TOK; }
-")"             { return RPAREN_TOK; }
-"$"             { return DOLLAR_TOK; }
-"?"             { return QUESTION_TOK; }
-"="             {return EQ_TOK;}
-
-"nand"		{ return NAND_TOK;}
-"nor"		{ return NOR_TOK;}
-"/="		{ return NEQ_TOK; }
- ":="           { return ASSIGN_TOK;}
-"shift_left0"   { return BVLEFTSHIFT_TOK;}
-"bvshl"         { return BVLEFTSHIFT_1_TOK;}
-"shift_right0"  { return BVRIGHTSHIFT_TOK;}
-"bvlshr"        { return BVRIGHTSHIFT_1_TOK;}
-"bvadd"         { return BVPLUS_TOK;}
-"bvsub"         { return BVSUB_TOK;}
-"bvnot"         { return BVNOT_TOK;}
-"bvmul"         { return BVMULT_TOK;}
-"bvdiv"         { return BVDIV_TOK;}
-"bvmod"         { return BVMOD_TOK;}
-"bvneg"         { return BVNEG_TOK;}
-"bvand"         { return BVAND_TOK;}
-"bvor"          { return BVOR_TOK;}
-"bvxor"         { return BVXOR_TOK;}
-"bvnand"        { return BVNAND_TOK;}
-"bvnor"         { return BVNOR_TOK;}
-"bvxnor"        { return BVXNOR_TOK;}
-"concat"        { return BVCONCAT_TOK;}
-"extract"       { return BVEXTRACT_TOK;}
-"bvlt"          { return BVLT_TOK;}
-"bvgt"          { return BVGT_TOK;}
-"bvleq"         { return BVLE_TOK;}
-"bvgeq"         { return BVGE_TOK;}
-"bvult"         { return BVLT_TOK;}
-"bvugt"         { return BVGT_TOK;}
-"bvuleq"        { return BVLE_TOK;}
-"bvugeq"        { return BVGE_TOK;}
-"bvule"         { return BVLE_TOK;}
-"bvuge"         { return BVGE_TOK;}
-
-"bvslt"         { return BVSLT_TOK;}
-"bvsgt"         { return BVSGT_TOK;}
-"bvsleq"        { return BVSLE_TOK;}
-"bvsgeq"        { return BVSGE_TOK;}
-"bvsle"         { return BVSLE_TOK;}
-"bvsge"         { return BVSGE_TOK;}
-
-"sign_extend"   { return BVSX_TOK;} 
-"boolextract"   { return BOOLEXTRACT_TOK;}
-"boolbv"        { return BOOL_TO_BV_TOK;}
-
-(({LETTER})|(_)({ANYTHING}))({ANYTHING})*	{
-  BEEV::ASTNode nptr = BEEV::globalBeevMgr_for_parser->CreateSymbol(yytext); 
-
-  // Check valuesize to see if it's a prop var.  I don't like doing
-  // type determination in the lexer, but it's easier than rewriting
-  // the whole grammar to eliminate the term/formula distinction.  
-  yylval.node = new BEEV::ASTNode(BEEV::globalBeevMgr_for_parser->ResolveID(nptr));
-  //yylval.node = new BEEV::ASTNode(nptr);
-  if ((yylval.node)->GetType() == BEEV::BOOLEAN_TYPE)
-    return FORMID_TOK;
-  else 
-    return TERMID_TOK;  
-}
-. { yyerror("Illegal input character."); }
-%%