This is an informal treatment of Scheme syntax and grammar. For a more formal treatment, in the standard notation computer scientists use for discussing language syntax, see Syntax and Semantics in the How to Design Programs textbook.
(+ 1 2)(* (+ 3 4) 5)(3+4)*5.(= x y)true or false, depending on
          whether those two values are equal.(+ 1 2 3 4 5) .)(1 + 2)+ 1 2((+ 1 2))(define variable-name value)(define bignum 1234567890)bignum, so that
          subsequently...bignum(* bignum bignum bignum)
(define (function-name parameter parameter ... parameter)
        body-expression)
        adds a function to the language. Each parameter is a
        variable name, and normally these variable names are used
        inside the expression. 
		(define (square n) (* n n))
(define (square n)
        (* n n))
            produces no result at all, but has the side
            effect of defining a new function named 
            square, taking one parameter (which it refers to
            internally as n).  Subsequently,...
          (square 5)(square n)", decides that the parameter
          n is supposed to be 5 for now, replaces all the
          "n"'s in the function body with 5, producing
          "(* 5 5)", and further evaluates this to get
          25.square" function, the
          parameter name "n" is introduced in the header
          and used in the body, but then it disappears; if you were
          then to type
          (square n)Scheme would complain that "
n" was undefined.
          The only way to use the "square" function is to
          provide a number (or an expression whose value is
          a number) to match the "n" in the pattern, e.g.
          (square 5).(square n)(square 3 4)square function only takes one
          parameter.(square)(define (square) (* n n))(define (square n))(define (square n) (* n n)(define (square n) (+ n n))(square 3) you would
          get the answer 6 rather than the correct 9. This
          illustrates the difference between a program being 
          legal and being correct.
(cond [question1 answer1]
      [question2 answer2]
      ...
      [questionn answern])
        returns the value of one of answer1, answer2,
        ... answern, depending on which question is
        the first to have the value true. If 
        question1 evaluates to true, it returns 
        answer1; if not, it ignores answer1 and
        continues with the rest of the list of question-answer
        pairs. 
        The keyword "else" may appear in place of 
        questionn to indicate that the cond should return the
        value of answern if no previous question was
        true.
Another way to look at it is that
(cond [true answer1]
      [question2 answer2]
      ...
      [questionn answern])
        simplifies to answer1, while 
(cond [false answer1]
      [question2 answer2]
      ...
      [questionn answern])
        simplifies to 
(cond [question2 answer2]
      ...
      [questionn answern])
		
(cond [(> grade 90) 'A]
      [(> grade 80) 'B]
      [(> grade 70) 'C]
      [(> grade 60) (warn 'D)]
      [else (warn 'F)])
          
(cond (< bignum 4) 5
      (>= bignum 4) 6)
            because the question and answer in each clause must be
            surrounded by square brackets; this person probably
            meant 
(cond [(< bignum 4) 5]
      [(>= bignum 4) 6])
          
(cond [(+ bignum 4) 5]
      [(- bignum 4) 6])
            
            because the question must return a boolean (the
            expressions "(+ bignum 4)" and "(- bignum
            4)" both return numbers instead)
(cond [(< bignum 4) 5)
      ((>= bignum 4) 6]
            
            because the parentheses and brackets aren't matched.
            The parentheses in (< bignum 4) match
            nicely, but outside this are a left-bracket and a
            right-parenthesis, which don't match. Similarly, 
            (>= bignum 4) is matched, but outside it are a
            left-parenthesis and a right-bracket, which don't
            match. Finally, there is no right-parenthesis to match
            the one before cond.
(define-struct structure-name (field1 field2
        ... fieldn))(make-structure-name value1 value2 ...
          valuen) takes n objects and returns a 
          structure-name.(structure-name? object) takes an
          object and returns a boolean indicating whether the
          object is a structure-name.(structure-name-field1 struct) takes
          a structure-name and returns the field1
          part of it.(structure-name-fieldn struct) takes
          a structure-name and returns the fieldn
          part of it.define-struct. 
		; A student is a symbol (name), a number (GPA), ; a symbol (class, e.g. 'freshman, 'sophomore, etc.), ; and a number (ID). (define-struct student (name GPA class ID)) ; make-student: symbol number symbol number => student ; student?: object => boolean ; student-name: student => symbol ; student-GPA: student => number ; student-class: student => symbol ; student-ID: student => numberThe one line of actual code in this example tells Scheme to add a new data structure to the language, along with its constructor (
make-student),
            discriminator (student?), and slot-access
            functions (student-name, student-GPA,
            student-class, and student-ID).
            Subsequently,... 
(make-student 'Joe-Schmoe 2.6 'freshman 123456789)creates and returns a new "student" object with the specified properties.
(define my-student (make-student 'Jane-Doe 3.3 'sophomore 987654321))creates a new "student" object and stores it under the new name "
my-student". 
(student-name my-student)returns
'Jane-Doe
          (student? 'bluebird)false(student? my-student)true(student? (make-student 'Bill 2.8 'junior
          918273645))true(student-GPA my-student)make-student,
          student?, student-name, etc. explicitly; they are
          defined automatically when you say (define-struct
          student (name GPA class ID)).