Hi, Saw your question on irc. Attached is a modification on your `simple' language that demonstrates transparent source locations. The explicit, Bison-like locations work just like they do in Bison...eg something like: ;; helper (define (note-location ast loc) (when (supports-source-properties? ast) (set-source-property! ast 'loc loc)) ast) (define (make-parser) (lalr-parser ;; ... ;; production rules (variable (type Identifier = expression semicolon) : `(variable ,$2 ,$1 ,(note-location `(expression ,$4) @3)) (Identifier dot Identifier Identifier = expression semicolon) : `(variable ,$4 (type ,$3 ,$1) ,(note-location `(expression ,$6) @5))) Does that answer your question? Greetings, Jan