We developed a methodology for compiler synthesis based on action semantics. Each action in action semantics notation is assigned specific analysis function, i.e., abstract meaning. When a language is given an action semantics, the analysis functions are composed into abstract analyses for the language, e.g., typing analysis, binding-time analysis and so on. These can be implemented into as the type checker, static semantics processor, etc. in the synthesized compiler.