|
From: Peep P. <so...@us...> - 2004-07-23 17:21:27
|
Update of /cvsroot/agd/server In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv16447 Modified Files: ChangeLog Ideas TODO Log Message: Chaaanges! Index: TODO =================================================================== RCS file: /cvsroot/agd/server/TODO,v retrieving revision 1.24 retrieving revision 1.25 diff -u -d -r1.24 -r1.25 --- TODO 21 Jul 2004 12:13:09 -0000 1.24 +++ TODO 23 Jul 2004 17:21:18 -0000 1.25 @@ -12,52 +12,35 @@ while our offset is bigger than the element in line_numbers. If offset is smaller or equal, it means that it must be on the current index. - - profiling memory usage - find out if variables are really freed and if they're being overduplicated or something. - - everything to do with arrays, notably: - operators: & &= - call_other on an array - foreach() - - - dfuns + - dfuns: delete - member_array - explode, implode - save_object, restore_object - crypt - + member_array + explode, implode + save_object, restore_object + crypt - allow 'string foo; foo[0]="a";' - sprintf and printf - - Interpreter. ? F_PUSH_NUM_INT <constant> <number> - < runtime() for dfuns (doesn't display line numbers) - - lang.y: + - runtime() for dfuns (doesn't display line numbers) + - lang.y: ! break, continue ! fix L_SLICE_LVALUE - - < compile.c::compile_prog() should show global vars - < debug.c::print_code() should show functions' arguments - + - compile.c::compile_prog() should show global vars + - debug.c::print_code() should show functions' arguments - Do something about compile.c::pop_scope() - it's slow (well, algorithmically speaking, at least). - - - New configuration parser. - - Change 'errorlog' to just 'log', or change debug() to be an error - logging facility, or remove the option completely. - - Default error level option. - - For lib: option - if it doesn't end in /, add it. - + - In config, for lib: option - if it doesn't end in /, add it. - Build system. * make maintainer-clean should also remove src/dfparse.output and src/lang.output shouldn't delete src/dfparse.h and src/lang.h - - ? optimize string tables - remove repetitions - - documentation: * Small textbook about AGD's dialect of LPC * Short text describing main differences between LPC and C @@ -66,67 +49,54 @@ - syntax highlighting scripts for AGD's LPC (vim, emacs) - the famous host lookup daemon, so gethostbyaddr() won't block. Or maybe a separate thread with libpthread? - - - allow both .c and .lpc for file extensions (/usr/bin/file could recognize LPC, - and editors can turn on syntax highlighting automatically) - keep interactive objects in a separate linked list, and make shout act on that list -- LPC: - - switch() - - all of the operators (/doc/lpc/operators) - - ',' - this takes some serious grammar-hacking, because - comma as a function call argument is a separator for expressions. - - mixed type - - string slices - ! assigning to slices (F_SLICE_LVALUE etc.) - - Check if assigning too long a string. - * m.. - * ..n - * m..n,o..p - * !n - - inheritance + - switch() + - all of the operators (/doc/lpc/operators) + - ',' - this takes some serious grammar-hacking, because + comma as a function call argument is a separator for expressions. + - mixed type + - string slices + ! assigning to slices (F_SLICE_LVALUE etc.) + - Check if assigning too long a string. + - m.. + - ..n + - m..n,o..p + - !n + - m..<n + - inheritance - lexer: - - preprocessor (read flex(1)) - a {IDENTIFIER} rule first up in the rule list which goes through all of the macro - definitions and if anything is found, it opens up another buffer (pushes it on - flex's stack), containing the macro replacement, which will then get parsed again. - if no macros match, REJECT() is called and flex tries to match with next available rule - - #pragma - warnings - low-warnings - no-warnings - - #if - - defined() - - have_dfun() - - !, &&, || - - predefined names: - __HOST__ the return value of gethostname() - __AUTHORS__ - - character encoding inside strings: - - decimal: \nnn - - octal: \0nnn - - hexadecimal: \0xnn - - binary: \nnnnnnnnb - - multiline strings (like this: - string s = "@@@FOO - blah - blah - blah - FOO"; - Or however it's done elsewhere. - + - preprocessor (read flex(1)) + an {IDENTIFIER} rule first up in the rule list which goes through all of the macro + definitions and if anything is found, it opens up another buffer (pushes it on + flex's stack), containing the macro replacement, which will then get parsed again. + if no macros match, REJECT() is called and flex tries to match with next available rule + - #pragma + warnings, low-warnings, no-warnings + - #if + - defined() + - have_dfun() + - !, &&, || + - predefined names: + __HOST__ the return value of gethostname() + __AUTHORS__ + - character encoding inside strings: + - decimal: \nnn + - octal: \0nnn + - hexadecimal: \0xnn + - binary: \nnnnnnnnb + - multiline strings (like this: + string s = "@@@FOO + blah + blah + blah + FOO"; + Or however it's done elsewhere. ? Better function lookup table (prog->nametable)? O(1) would be nice. - - - better logging system - - print time using strftime() - - log using lib's facilities (master::log()?) - - different prefixes have different debuglevels - - save to different files - warn about unused variables - initialization of global variables - dfun overrides, :: operator - - ? check for lib root and folder of debug log with access() and exit gracefully if it fails. - ? if we crash while running apply(master::crash), then we should rerun with debugging on + - check for lib root and folder of debug log with access() and exit gracefully if it fails. + - if we crash while running apply(master::crash), then we should rerun with debugging on ? IPv6 support? ? Some work could be done on i18n. For example, allow for multilingual yyerror-messages. Index: Ideas =================================================================== RCS file: /cvsroot/agd/server/Ideas,v retrieving revision 1.10 retrieving revision 1.11 diff -u -d -r1.10 -r1.11 --- Ideas 21 Jul 2004 12:13:09 -0000 1.10 +++ Ideas 23 Jul 2004 17:21:18 -0000 1.11 @@ -5,7 +5,7 @@ each time. Just player() and this() or self() should suffice. environment() -> env() etc, too. * superscope global variables. Maybe called world scope? - i.e. global foo; - then can be accessed from any object. + i.e. global int foo; - then can be accessed from any object. And this_object/this_player are driver-defined world globals. * default values for arguments int foo(int i, int j = 1); Index: ChangeLog =================================================================== RCS file: /cvsroot/agd/server/ChangeLog,v retrieving revision 1.23 retrieving revision 1.24 diff -u -d -r1.23 -r1.24 --- ChangeLog 23 Jul 2004 14:25:10 -0000 1.23 +++ ChangeLog 23 Jul 2004 17:21:18 -0000 1.24 @@ -3,6 +3,10 @@ 2004-07-23 * dflex.l,lex.l,compile.c: added manual 'extern YYLTYPE yylloc' declarations, which seem to be necessary with older version of bison. + * instr.h,lex.l,lang.y,interpret.c: bitwise operators + * dfuns.c: dfun names were stored in *local* array, so the name needs + to be strdup'ed. + * main.c: implemented flag() 2004-06-23 * compile.c,lang.y,interpret.c,vars.c: + operator for arrays * compile.c: fixed adding definitions for prototypes - their code wasn't |