5
Write a program (in a first language A) that interprets a "99 Bottles of Beer" program and a FizzBuzz program (both in a second language B) on its standard input. The output should go to standard output; you may implement the interpreter as a function in languages lacking standardized I/O interfaces.
Constraints
The 99-Bottles program must come from either this site's problem or from http://99-bottles-of-beer.net/. Link to (do not copy and paste) the 99-Bottles program in your answer. The specific output is not important; what matters is whether the interpreter produces exactly the same output as a more complete one does.
You may write the FizzBuzz program yourself, or you may obtain it from the Internet or another source. Do not copy and paste the program into your answer in the latter case.
Both languages (and the 99-Bottles program) must have existed prior to September 22, 2011 (when this challenge was first posted). Specifically, you may not invent your own language for the specific purpose.
Any interpreter that hardcodes a non-whitespace character or string to be sent to the output (or that accesses the Internet) is cheating and not permissible. For example, an interpreter that contains "beer", "Buzz", or even "b" as a string or character literal is not acceptable, but looping from 1 to 99 is acceptable if a corresponding print statement is not hardcoded.
Both languages' names must not begin with the same letter and must not have any three character substring in common. For example:
- APL and AWK begin with the same letter, and so do C, C++, and C#.
- JavaScript and VBScript have SCR in common.
Additionally, the 99-Bottles and FizzBuzz programs must not be valid in language A or any other language that the interpreter depends on – the direct use of eval, exec, or similar language features or methods to compile and execute them is expressly forbidden.
Scoring
The score is the sum of:
- Ten times the interpreter's character count
- Ten times the FizzBuzz program's character count.
- The 99-Bottles program's actual character count (because it should not be a golfed program). This excludes any leading and trailing whitespace but includes whitespace used for indentation. Each newline counts as one character.
For verification, include the code of everything you have written yourself, and link to any published sources you have used.
@JB Indeed. That requirement could ruin an approach involving scanning only the first character of each token to determine its identity. – AJMansfield – 2014-01-02T16:35:48.390
1Excluding 'b' in string literals could be tough on languages that have 'b' keywords (block, begin, double, enable...) – J B – 2011-09-23T06:08:30.997
@J B, I 'block' doesn't get sent to output; I think that's ok – boothby – 2011-09-23T06:37:01.367
2I don't get this... PleaseStand, were you drunk when you wrote the question? Otherwise, why is it named "drunken"? – boothby – 2011-09-23T06:37:51.537
@boothby: It was named the "drunken" interpreter because it is supposed to interpret a 99 Bottles of Beer program, a program for which I could find published versions for many languages. I don't drink beer or any other alcoholic beverage. – PleaseStand – 2011-09-23T10:58:46.357
@J B: keywords are no strings or character literals. – oenone – 2011-09-28T07:58:38.220