Re: Compiler and an interpreter




Rob Thorpe wrote:
> anjali wrote:
> > Suppose in a source-code file, the 4th line contains the first syntax
> > error.Can anybody please tell me how the compiler and interpreter will
> > behave when the given file will be the input to them?
> >
> > My guess is that the compiler will go through the entire file and will
> > report all the syntax errors in the file while the interpreter will
> > stop its execution exactly after the 4th line and will say that there
> > is a syntax error in the 4th line.
>
> This depends on the formal structure of the language and the design of
> the compiler/interpreter.
>
> For the purposes of this discussion languages can be split into two
> types, in which either:
> 1. Only a complete file/module is an acceptable input
> 2. Some small unit of the language is an acceptable input.
>
> C, C++ and Pascal are example of type 1, there are many more.
> Bash, lisp and ML are examples of type 2, again there are many more.
>
> If the language is of type 1 then the compiler/interpreter must read
> the whole file/module before beginning to do anything with it in
> earnest. In doing so it will find any syntax errors.
>
> If the language is of type 2 then the compiler/interpreter can begin to
> act on the input as it's going along. A compiler may do this by
> writing out machine code, an interpreter may do this by performing the
> actions specified.
>
> The compiler/interpreter doesn't have to be written this way though, it
> may choose to do nothing with the input until it reaches the end of the
> file/module.
>
> Most compilers read the entire input file before writing out code.
> Many interpreters act of input a line at a time. But not all, Perl for
> example reads the whole file before beginning to execute it.

It is not even grammatical to say, where X is the name of a programming
language, that X "reads the whole file before beginning to execute it",
and more than it is grammatical to say "Cobol goes to the corner bar
and has a drink".

Yet programmers continue to use this ugly syntax! As if programming
languages were active agents! This practise is a reification, a
fetishization and it hypostasizes mere artifacts into things that
REPLACE the very idea of human agency, and contribute in fact to
alienation.

Perl does not to my knowledge in any way require the reading of the
entire Perl file. But even if it does, it isn't correct to say "Perl
reads". Perl is a language and not a compiler.

I just don't know if it is possible to write Incremental Perl or
Incremental C in the manner of a Lisp interpreter such that the
following earth shattering exchange could take place in Perl or C as it
can in Lisp.

>7

7

(user types 7 which evaluates, details at 11, to 7.)

But it might be since so many things in C and Perl are expressions with
a value:

>"Hello world"
Hello world
>"Bnarg"
Bnarg
>bnarg // undefined
VOID

The last exchange shows that an Incremental C could never be standard
since a language in which it is the general practice to read the entire
file (a requirement given the otiose preprocessor) is also a language
that doesn't permit undefined identifiers.

.



Relevant Pages

  • Re: Compiler and an interpreter
    ... >>> error.Can anybody please tell me how the compiler and interpreter will ... Some small unit of the language is an acceptable input. ... > Perl does not to my knowledge in any way require the reading of the ...
    (comp.programming)
  • Re: Why C for operating systems
    ... This kind of modification of the language is something that is useful ... extensions in the compiler. ... That's where Lisp shines: you can easily ... Homoiconicity is when the syntax to write data is ...
    (comp.programming)
  • Re: RAD vs. performance
    ... It depends on what the compiler can infer and optimize. ... rationals are another type, which are not supported in the cpu and would ... (rather than typed declarations based language with a class-based types ... using about the same syntax as before. ...
    (comp.lang.misc)
  • Re: Misplaced parenthesis
    ... The entire purpose of the parser component of a compiler is syntax ... Now the language, accepted by the compiler, is a subset of the ... grammar that describes an superset of the OPL language. ...
    (comp.lang.pascal.delphi.misc)
  • Re: mixing C and assembly
    ... What you're doing here is writing assembly with C syntax. ... a heavily non-standard language extension, ... how the compiler behaves (you don't want the compiler to use the stack ... high-level language as fast as possible. ...
    (comp.arch.embedded)