Next: Tag handling, Up: Semantic Internals [Contents][Index]

### 3.1 Parser code

Semantic parsing code is spread across a range of files.

`semantic.el`

  The core infrastructure sets up buffers for parsing, and has all the core parsing routines. Most parsing routines are overloadable, so the actual implementation may be somewhere else.

`semantic-edit.el`

  Incremental reparse based on user edits.

`semantic-grammar.el`
`semantic-grammar.wy`

  Parser for the different grammar languages, and a major mode for editing grammars in Emacs.

`semantic-lex.el`

  Infrastructure for implementing lexical analyzers. Provides macros for creating individual analyzers for specific features, and a way to combine them together.

`semantic-lex-spp.el`

  Infrastructure for a lexical symbolic preprocessor. This was written to implement the C preprocessor, but could be used for other lexical preprocessors.

`bovine/bovine-grammar.el`
`bovine/bovine-grammar-macros.el`
`bovine/semantic-bovine.el`

  The “bovine” grammar. This is the first grammar mode written for Semantic and is useful for simple creating simple parsers.

`wisent/wisent.el`
`wisent/bison-wisent.el`
`wisent/semantic-wisent.el`
`wisent/semantic-debug-grammar.el`

  A port of bison to Emacs. This infrastructure lets you create LALR based parsers for Semantic.

`semantic-ast.el`

  Manage Abstract Syntax Trees for parsers.

`semantic-debug.el`

  Infrastructure for debugging grammars.

`semantic-util.el`

  Various utilities for manipulating tags, such as describing the tag under point, adding labels, and the all important `semantic-something-to-tag-table`.