X-Git-Url: https://www.ginac.de/ginac.git//ginac.git?p=ginac.git;a=blobdiff_plain;f=ginsh%2Fginsh_lexer.ll;h=ff585dab55a435f5305fc81e99f4603fa70a8d05;hp=2d925b58d121b9df88e2366285b412870e915246;hb=0ff7856e0a2039ffe612b4fceb3e98fb3c271753;hpb=72a970a6d73bd4c8c76602fe455c73052da9fdf2 diff --git a/ginsh/ginsh_lexer.ll b/ginsh/ginsh_lexer.ll index 2d925b58..ff585dab 100644 --- a/ginsh/ginsh_lexer.ll +++ b/ginsh/ginsh_lexer.ll @@ -1,8 +1,9 @@ /** @file ginsh_lexer.ll * * Lexical analyzer definition for ginsh. - * This file must be processed with flex. - * + * This file must be processed with flex. */ + +/* * GiNaC Copyright (C) 1999-2000 Johannes Gutenberg University Mainz, Germany * * This program is free software; you can redistribute it and/or modify @@ -54,12 +55,13 @@ AN [0-9a-zA-Z_] %% [ \t\n]+ /* skip whitespace */ \\$ /* skip line continuations */ -"#".* /* skip comments starting with "#" */ +"//".* /* skip comments starting with "//" */ +^"#".* /* skip lines starting with "#" */ ^"!".* system(yytext + 1); /* execute shell command */ /* special values */ Pi yylval = Pi; return T_LITERAL; -EulerGamma yylval = EulerGamma; return T_LITERAL; +Euler yylval = Euler; return T_LITERAL; Catalan yylval = Catalan; return T_LITERAL; FAIL yylval = *new fail(); return T_LITERAL; I yylval = I; return T_NUMBER; @@ -67,9 +69,9 @@ Digits yylval = (long)Digits; return T_DIGITS; /* keywords */ quit|exit return T_QUIT; +warranty return T_WARRANTY; print return T_PRINT; -read return T_READ; -write return T_WRITE; +iprint return T_IPRINT; time return T_TIME; xyzzy return T_XYZZY; inventory return T_INVENTORY; @@ -93,15 +95,21 @@ score return T_SCORE; /* numbers */ {D}+ | +"#"{D}+"R"{AN}+ | +"#b"([01])+ | +"#o"[0-7]+ | +"#x"[0-9a-fA-F]+ | {D}+"."{D}*({E})? | {D}*"."{D}+({E})? | {D}+{E} yylval = numeric(yytext); return T_NUMBER; /* symbols */ {A}{AN}* { - if (syms.find(yytext) == syms.end()) - syms[yytext] = *(new symbol(yytext)); - yylval = syms[yytext]; + sym_tab::const_iterator i = syms.find(yytext); + if (i == syms.end()) { + yylval = syms[yytext] = *(new symbol(yytext)); + } else + yylval = i->second; return T_SYMBOL; }