Question: I have this question in a homework assignment for my Computer Languages class. I'm trying to figure out what each one means, but I'm getting stuck.

> 
> Errors in a computer program can be
>  classified according to when they are
>  detected and, if they are detected at
>  compile time, what part of the
>  compiler detects them. Using your
>  favorite programming language, give an
>  example of:
> 
> 
> (a) A lexical error, detected by the
>  scanner.
> 
> 
> (b) A syntax error, detected by the
>  parser.
> 
> 
> (c) A static semantic error, detected
>  (at compile-time) by semantic
>  analysis.
> 
> 
> (d) A dynamic semantic error, detected
>  (at run-time) by code generated by the
>  compiler.
> 
> 
> 

For (a), I think this is would be correct: `int char foo;`

For (b), `int foo` (no semicolon)

For (c) and (d), I'm not sure what is being asked.

Thanks for the help.

Answer: 
```
@show_all = params[:show_all] == "1" ? true : false

```

This should work nicely if you're passing the value in from a checkbox -- a missing key in a hash generates nil, which evaluates to false in a conditional.

**EDIT**

As pointed out [here](https://stackoverflow.com/questions/3673607/how-do-i-submit-a-boolean-parameter-in-rails/3675218#3675218), the ternary operator is not necessary, so this can just be:

`@show_all = params[:show_all] == "1"`
I think the simplest solution is to test "boolean" parameters against their String representation.

```
@show_all = params[:show_all]
if @show_all.to_s == "true"
   # do stuff
end

```

Regardless of whether Rails delivers the parameter as the String "true" or "false" or an actual TrueClass or FalseClass, this test will always work.