Computer Science 3675
Fall 2005
Practice questions for quiz 1

  1. Which of the following are true, and which are false?

    1. All compilers translate to machine language.
    2. All programming language implementations are compilers.
    3. A simple value is a value that has no visible internal structure.
    4. Characters are typically considered complex values.
    5. A token can only have one associated lexeme.
    6. A variable name is typically a single lexeme in a program.
    7. Backus-Naur Form is a notation for giving precise definitions of semantics.
    8. Pattern matching can be used to bind names by solving simple equations.
    9. The scope of a binding is that part of the program where that binding is in effect.

  2. What is a just-in-time compiler?

  3. What is shadowing, and how can it occur? Give an example.

  4. An implementation of a programming language is not normally considered to be an adequate definition of the language. Why not? What would be the consequences of using an implementation as a definition?

  5. What is an important advantage of the linked representation of sequences over the sequential representation?

  6. What is an important advantage of the sequential representation of sequences over the linked representation?

  7. Show that the following BNF grammar is ambiguous. The start symbol is <S>.

        <S> ::= <S> a
             |  a <S>
             |  a
      

  8. Show a parse tree for string aacacab according to the following grammar, where the start symbol is <S>.

        <S> ::= <F> a <S>
             |  b
        <F> ::= a <F>
             |  c
      

  9. Write a BNF grammar for sequences of left and right parentheses that are balanced. A sequence of parentheses is balanced if parentheses match and are well nested. For example, (()(())) is balanced, but )( and ())()( are not balanced.

  10. What is a solution to pattern match equation [x,y+1] = [7,99]?

  11. What is the head of list [2,4,6]? What is the tail of list [2,4,6]?