
|
Posted by lionel319 @ Wed 20 Aug, 08, 10:57AM under Work
This is getting uglier and uglier. It seems like this thing is more complicated that I though ( and of course, with complication comes more powderful :p)
You code patterns and input them to lex. It will read your patterns and generate C code for a lexical analyzer or scanner. The lexical analyzer matches strings in the input, based on your patterns, and converts the strings to tokens. Tokens are numerical representations of strings, and simplify processing. This is illustrated in Figure 1. When the lexical analyzer finds identifiers in the input stream it enters them in a symbol table. The symbol table may also contain other information such as data type (integer or real) and location of the variable in memory. All subsequent references to identifiers refer to the appropriate symbol table index. You code a grammar and input it to yacc. Yacc will read your grammar and generate C code for a syntax analyzer or parser. The syntax analyzer uses grammar rules that allow it to analyze tokens from the lexical analyzer and create a syntax tree. The syntax tree imposes a hierarchical structure on the tokens. For example, operator precedence and associativity are apparent in the syntax tree. The next step, code generation, does a depth-first walk of the syntax tree to generate code. Some compilers produce machine code, while others, as shown above, output assembly language.
Figure 2 illustrates the file naming conventions used by lex and yacc. We’ll assume our goal is to write a BASIC compiler. First, we need to specify all pattern matching rules for lex (bas.l) and grammar rules for yacc (bas.y). Commands to create our compiler, bas.exe, are listed below: yacc -d bas.y # create y.tab.h, y.tab.c Yacc reads the grammar descriptions in bas.y and generates a syntax analyzer (parser), that includes function yyparse, in file y.tab.c. Included in file bas.y are token declarations. The -d option causes yacc to generate definitions for tokens and place them in file y.tab.h. Lex reads the pattern descriptions in bas.l, includes file y.tab.h, and generates a lexical analyzer, function yylex, in file lex.yy.c. Finally, the lexer and parser are compiled and linked together to form the executable, bas.exe. From main, we call yyparse to run the compiler. Function yyparse automatically calls yylex to obtain each token.
Posted by lionel319 @ Tue 19 Aug, 08, 05:03PM under Work
2. LEX & YACC
Work ~~~~~ Work ~~~~~ - *Orc tone*
Posted by lionel319 @ Tue 19 Aug, 08, 03:05PM under Work
And most importantly, which is the part i like most, is that ...... ...it uses energy-efficient Intel® CoreTM 2 Duo Mobile Processors, so you can enjoy its power while helping to preserve the planet......
Check out more from the official site.
Posted by lionel319 @ Wed 23 Jul, 08, 01:52PM under Work
The only thing I couldn't decide at is what scoring system to use. Should I base the scoring system just on the number of tries? Or should I be using the time used? Or both?
Well, after a couple of search thru google, I finally reached this page.
Nice. the next thing will be the writing.
I'll post up the progress periodically if time allows. Stay tune ;)
Posted by lionel319 @ Fri 20 Jun, 08, 06:53PM under Work
Posted by lionel319 @ Mon 09 Jun, 08, 03:41PM under Work
.... and did you notice that my http://lionel.textmalaysia.com has a new favicon? :P
... and want impress your girl friend by doing an animated gif favicon?
Posted by lionel319 @ Wed 14 May, 08, 02:03PM under Work
Ever experienced the pain of doing a put / get for each and every file / folder one by one when you want to transfer stuff across network? Well, worry no more. Here's something simple that you can do to automate the File Transferring Protocol process quick and easy, All you need is a perl module call Net::FTP.
Have fun playing with PERL ^_^
Posted by lionel319 @ Tue 13 May, 08, 05:12PM under Work
Have been hearing all about cronjobs crontab crond cron crom crom crom crom ~~~~~~ everyday, but think is the first time I really look deep into it. A detail explanation can be found here. Still, after reading it, I found it kinda not that flexible, at least not to the extend of what I was trying to achieve. Decided to might as well write my own simple cron job.
Yeah. I know it is cheap :P who cares, so long it gets the job done ;)
Posted by lionel319 @ Mon 05 May, 08, 04:50PM under Work
First of all, you need the LWP module. Can get it from http://search.cpan.org. ...... and here it goes:- ![]() HAhahahahahaha :D Easy ? :P Well, if you are working behind a firewall, then too bad. But if your firewall has a proxy, and you have a proxy, now this is where it gets interesting :p There's still chance that you 'might' get lucky :p Add this. It might work:- ![]() Now, you can automate a program and download all the
Posted by lionel319 @ Thu 13 Mar, 08, 09:43AM under Work
|
Categories
Latest Posts
Archive
|