aboutsummaryrefslogtreecommitdiff
path: root/src/inpla.l
diff options
context:
space:
mode:
authorShinya Sato <shinnya.sato@gmail.com>2021-11-02 16:05:52 +0900
committerShinya Sato <shinnya.sato@gmail.com>2021-11-02 16:05:52 +0900
commit0df7f6fa71cea5de0e041df80854d307930e418d (patch)
tree229c696c48e97c14b44eb85b7d4057de8867f2f7 /src/inpla.l
parenta2aabb706c95bc7189633f6efef8325428d09630 (diff)
downloadinpla-0df7f6fa71cea5de0e041df80854d307930e418d.tar.gz
inpla-0df7f6fa71cea5de0e041df80854d307930e418d.zip
v0.5.1
Diffstat (limited to 'src/inpla.l')
-rw-r--r--src/inpla.l193
1 files changed, 0 insertions, 193 deletions
diff --git a/src/inpla.l b/src/inpla.l
deleted file mode 100644
index 85bf522..0000000
--- a/src/inpla.l
+++ /dev/null
@@ -1,193 +0,0 @@
-%{
-#include <stdio.h>
-#include <stdlib.h>
-#include "linenoise/linenoise.h"
-
-#undef YY_INPUT
-#define YY_INPUT(buf,result,max_size) result = mygetinput(buf, max_size);
-
-static int mygetinput(char *buf, int size) {
- char *line;
- if (feof(yyin)) return YY_NULL;
-
- if (yyin!=stdin) {
- int len;
- char ch;
- for (len = 0; len < size; len++) {
- ch = getc(yyin);
- if (ch == EOF)
- break;
- buf[len] = ch;
- }
- return len;
- }
-
- linenoiseSetMultiLine(1);
- if (yylineno == 1) {
- line = linenoise(">>> ");
- } else {
- line = linenoise("... ");
- }
- if(!line) return YY_NULL;
- if(strlen(line) > size-2){
- fprintf(stderr,"input line too long\n");
- return YY_NULL;
- }
- sprintf(buf, "%s\n", line);
- linenoiseHistoryAdd(line);
- linenoiseHistorySave(".inpla.history.txt");
- free(line);
- return strlen(buf);
-}
-
-
-//#undef YY_INPUT
-//#define YYINPUT(buf, result, max_size) result = (c == EOF) ? YY_NULL : (buf[0] = c, 1);
-
-
-/************************************
- Strings
-*************************************/
-#define MAX_STRING_LENGTH 1024
-static char ParseStringBuffer[MAX_STRING_LENGTH];
-static int nextPtr_ParseStringBuffer = 0;
-void Parse_StringBuffer_reInit() {
- nextPtr_ParseStringBuffer = 0;
-}
-
-void Parse_addString(char ch) {
- ParseStringBuffer[nextPtr_ParseStringBuffer] = ch;
- nextPtr_ParseStringBuffer++;
-}
-
-char *Parse_closeStringBuffer() {
- char *ret;
- ParseStringBuffer[nextPtr_ParseStringBuffer]='\0';
- ret = ParseStringBuffer;
- return ret;
-}
-
-
-
-%}
-
-%option nounput
-%option yylineno
-%option noyywrap
-%x STRING_STATE COM_STATE
-%%
-<INITIAL>";" return (DELIMITER);
-<INITIAL>":" return (COLON);
-<INITIAL>"(" return (LP);
-<INITIAL>")" return (RP);
-<INITIAL>"{" return LC;
-<INITIAL>"}" return RC;
-<INITIAL>"[" return LB;
-<INITIAL>"]" return RB;
-<INITIAL>"," return (COMMA);
-<INITIAL>"><" return (CROSS);
-<INITIAL>"=>" return (TO);
-<INITIAL>"~" return (CNCT);
-<INITIAL>"-" return (SUB);
-<INITIAL>"|" return(PIPE);
-<INITIAL>"&" return(AMP);
-<INITIAL>"=" return(LD);
-<INITIAL>"==" return(EQUAL);
-<INITIAL>"!=" return(NE);
-<INITIAL>">" return(GT);
-<INITIAL>">=" return(GE);
-<INITIAL>"<" return(LT);
-<INITIAL>"<=" return(LE);
-<INITIAL>"+" return (ADD);
-<INITIAL>"*" return (MUL);
-<INITIAL>"/" return (DIV);
-<INITIAL>"%" return (MOD);
-<INITIAL>"_" return (ANY);
-<INITIAL>"<<" return (ABR);
-
-<INITIAL>"int" return(INT);
-
-<INITIAL>"let" return(LET);
-<INITIAL>"in" return(IN);
-<INITIAL>"end" return(END);
-
-<INITIAL>"where" return(WHERE);
-
-<INITIAL>"if" return(IF);
-<INITIAL>"then" return(THEN);
-<INITIAL>"else" return(ELSE);
-
-<INITIAL>"interface" return(INTERFACE);
-<INITIAL>"ifce" return(IFCE);
-
-<INITIAL>"prnat" return(PRNAT);
-<INITIAL>"free" return(FREE);
-<INITIAL>"exit" return(EXIT);
-
-<INITIAL>"rand" return(RAND);
-
-<INITIAL>"const" return(DEF);
-
-<INITIAL>"use" return(USE);
-
-<INITIAL>"*L" return(ANNOTATE_L);
-<INITIAL>"*R" return(ANNOTATE_R);
-<INITIAL>[a-z][a-zA-Z0-9_'\.]* { yylval.chval = strdup(yytext);
- return (NAME);}
-<INITIAL>[A-Z][a-zA-Z0-9_'\.]* { yylval.chval = strdup(yytext);
- return (AGENT);}
-<INITIAL>[0-9]+ { yylval.intval = atoi(yytext);
- return (INT_LITERAL);}
-
-<INITIAL>"//"[^\n]* ; //comment
-<INITIAL>"/*" BEGIN(COM_STATE);
-<COM_STATE>. ;
-<COM_STATE>\n ;
-<COM_STATE>"*/" BEGIN INITIAL; //comment
-
-<INITIAL>\r\n ;
-<INITIAL>[\n|\r] ;
-<INITIAL>[ \t]+ ;
-<INITIAL><<EOF>> {return END_OF_FILE;}
-<INITIAL>\" {
- Parse_StringBuffer_reInit();
- BEGIN STRING_STATE;
-}
-
-<INITIAL>. {return yytext[0];}
-
-
-
-
-<STRING_STATE>\" {
- yylval.chval = strdup(Parse_closeStringBuffer());
- BEGIN INITIAL;
- return STRING_LITERAL;
-}
-<STRING_STATE>\n {
-// Parse_addString('\n');
-yyerror("Unterminated string");
-BEGIN(INITIAL);
-return DELIMITER;
-}
-<STRING_STATE>\\\" Parse_addString('"');
-<STRING_STATE>\\n Parse_addString('\n');
-<STRING_STATE>\\t Parse_addString('\t');
-<STRING_STATE>\\\\ Parse_addString('\\');
-<STRING_STATE>. Parse_addString(yytext[0]);
-%%
-
-void pushFP(FILE *fp) {
- yypush_buffer_state(yy_create_buffer(fp, YY_BUF_SIZE));
-}
-
-int popFP() {
- yypop_buffer_state();
- if (! YY_CURRENT_BUFFER ) {
- yyterminate();
- return 0;
- }
- return 1;
-}
-
-