https://habrahabr.ru/post/348314/ parsing using python
https://github.com/aalhour/awesome-compilers
https://tomassetti.me/parsing-in-java/
https://www.webcodegeeks.com/javascript/parsing-javascript-tools-libraries/
https://ralsina.me/weblog/posts/creating-languages-for-dummies.html python
https://github.com/logpy/logpy Kanren in Python (logic programming)
http://zderadicka.eu/writing-simple-parser-in-python/
https://news.ycombinator.com/item?id=13608810
http://craftinginterpreters.com/contents.html
http://ozark.hendrix.edu/~yorgey/360/f16/ Programming languages class
https://github.com/marciok/Mu#writing-your-own-programming-language
https://news.ycombinator.com/item?id=12902409
https://interpreterbook.com/ in Go
https://leanpub.com/create_languages
https://www.jilp.org/vol5/v5paper12.pdf Efficient interpr
https://habrahabr.ru/hub/compilers/
Parsing in Java
https://dzone.com/articles/parsing-in-java-part-2-diving-into-cfg-parsers
https://news.ycombinator.com/item?id=12450919 Scala
https://codewords.recurse.com/issues/one/type-systems-and-logic
http://tomassetti.me/getting-started-with-antlr-building-a-simple-expression-language/
http://www.lihaoyi.com/post/EasyParsingwithParserCombinators.html
http://blog.reverberate.org/2013/09/ll-and-lr-in-context-why-parsing-tools.html
https://habrahabr.ru/post/309382/ Elixir
http://blog.leahhanson.us/post/recursecenter2016/recipeparser.html
https://accu.org/index.php/journals/2252
https://habrahabr.ru/company/mailru/blog/304748/
https://news.ycombinator.com/item?id=11777631
http://belkadan.com/blog/2016/05/So-You-Want-To-Be-A-Compiler-Wizard/
https://news.ycombinator.com/item?id=11998581
http://www.dickgrune.com/Books/PTAPG_1st_Edition/BookBody.pdf
https://www.reddit.com/r/programming/comments/4cax9c/parsing_techniques_a_practical_guide_first/
http://matt.might.net/articles/parsing-regex-with-recursive-descent/
https://habrahabr.ru/company/pt/blog/210060/
http://arxiv.org/abs/1412.7449
http://blog.reverberate.org/2013/09/ll-and-lr-in-context-why-parsing-tools.html
https://habrahabr.ru/company/pt/blog/210772/
http://habrahabr.ru/post/274103/ category theory
http://www.learn-computing-directory.org/languages-and-programming/compilers-fundamentals.html
http://pgbovine.net/cpython-internals.htm
http://journal.stuffwithstuff.com/2011/03/19/pratt-parsers-expression-parsing-made-easy/
http://habrahabr.ru/post/270233/
https://www.engr.mun.ca/~theo/Misc/exp_parsing.htm
https://news.ycombinator.com/item?id=10786842
http://habrahabr.ru/post/273253/
http://ruslanspivak.com/lsbasi-part6/ Interpretator in python
http://aosabook.org/en/500L/pages/a-python-interpreter-written-in-python.html
https://habrahabr.ru/post/317304/ Parser combinator in Python
http://jayconrod.com/tags/parsers
http://hz2.org/blog/ast.html AST
https://github.com/akrylysov/abrvalg
http://ducklang.org/designing-a-programming-language-i
https://medium.com/this-is-not-a-monad-tutorial
https://news.ycombinator.com/item?id=9901282
http://blog.memsql.com/how-to-write-compilers-meetup/
http://www.cs.nott.ac.uk/~gmh/monparsing.pdf
http://www.madore.org/~david/computers/callcc.html
http://billhails.net/Book/front.html
https://www.reddit.com/r/cpp/comments/3pphhj/parser_generator_boost_spirit_x3_or_flexbison/
http://effbot.org/zone/xml-scanner.htm REGEXP lexer in python
http://habrahabr.ru/company/intel/blog/261665/ interpretator
http://habrahabr.ru/post/270797/ virtual machine for python
http://eli.thegreenplace.net/2014/06/04/using-asdl-to-describe-asts-in-compilers
https://news.ycombinator.com/item?id=9760064
http://www.cs.nott.ac.uk/~gmh/monparsing.pdf
Parser combinator
http://theorangeduck.com/page/you-could-have-invented-parser-combinators
http://nblumhardt.com/2010/01/building-an-external-dsl-in-c/ C# parser combinator
https://github.com/orangeduck/mpc parsing combinator in C
http://two-wrongs.com/parser-combinators-parsing-for-haskell-beginners
http://bitwalker.github.io/blog/2013/08/10/learn-by-example-scala-parser-combinators/
http://blog.fogcreek.com/fparsec/
http://theorangeduck.com/page/you-could-have-invented-parser-combinators
https://news.ycombinator.com/item?id=8684437
Julia parser combinator
http://habrahabr.ru/post/241632/
http://blog.steveklabnik.com/posts/2010-07-17-what-to-know-before-debating-type-systems
https://codewords.recurse.com/issues/three/algebra-and-calculus-of-algebraic-data-types/
https://news.ycombinator.com/item?id=9775467
https://github.com/julianstorer/JUCE/blob/master/modules/juce_core/javascript/juce_Javascript.cpp
http://dailyjs.com/2015/03/05/jacob/
http://ruslanspivak.com/lsbasi-part1/ interpretator in python
http://ruslanspivak.com/lsbasi-part2/
https://www.youtube.com/watch?v=TH9VCN6UkyQ&list=PLmV5I2fxaiCKfxMBrNsU1kgKJXD3PkyxO
http://blog.felixangell.com/virtual-machine-in-c/
https://csl.name/post/vm/ VM in Python
https://nickdesaulniers.github.io/blog/2015/05/25/interpreter-compiler-jit/
https://news.ycombinator.com/item?id=9325498
http://jozefg.bitbucket.org/posts/2015-03-24-pcf.html
http://matt.might.net/articles/implementing-a-programming-language/
http://jozefg.bitbucket.org/posts/2015-05-19-compiling.html
http://adampresley.com/2015/05/12/writing-a-lexer-and-parser-in-go-part-2.html
https://news.ycombinator.com/item?id=9297770
https://news.ycombinator.com/item?id=9121448
http://lisperator.net/pltut/ Implementing lang in JS
http://habrahabr.ru/post/266589/ LLR(1) in cpp
C
https://github.com/bbu/simple-interpreter/tree/master/src
http://bread-man.github.io/blog/2015/05/11/implementing-a-programming-language-in-c-part-1/
http://www.vnev.me/implementing-a-programming-language-in-c-part-1/
http://www.vnev.me/implementing-a-programming-language-in-c-part-2/
https://github.com/andrewchambers/cc C in GO
http://logictools.org/index.html
http://en.wikipedia.org/wiki/Comparison_of_multi-paradigm_programming_languages
https://github.com/Engelberg/instaparse/blob/master/README.md Clojure parser
https://www.youtube.com/watch?v=JoNkttD_MUs
http://habrahabr.ru/company/spbau/blog/250841/
https://www.lektorium.tv/course/22769
http://www.engr.mun.ca/~theo/Misc/exp_parsing.htm
http://blog.reverberate.org/2013/07/ll-and-lr-parsing-demystified.html?m=1
http://mattias-.github.io/2015-01-03/DIY-Make-Your-Own-Programming-language/
http://www.shenlanguage.org/LPC/lpc.html SHEN
http://stephen-brennan.com/2015/01/16/write-a-shell-in-c/
https://news.ycombinator.com/item?id=8831689
https://gist.github.com/adamnew123456/0f45c75c805aa371fa92 Python
http://dev.stephendiehl.com/fun/ write your own haskell
https://news.ycombinator.com/item?id=8838712
http://research.microsoft.com/en-us/um/people/rgal/ar_language/external/compiler.pdf
http://logicmason.com/2014/understanding-the-y-combinator/
http://eelcovisser.org/post/279 Language Designing Workbench
https://news.ycombinator.com/item?id=9297770
Programming and Programming Lang
http://papl.cs.brown.edu/2014/
https://news.ycombinator.com/item?id=8750354
http://www.ics.uci.edu/~sbruntha/why-interpreters-matter.html
http://breuleux.net/blog/oexprs.html
To see an example of how to use lemon, see the source code to the SQLite database engine. Lemon is maintained as part of the SQLite project.
https://news.ycombinator.com/item?id=8297996
https://news.ycombinator.com/item?id=8505382
https://news.ycombinator.com/item?id=8576068
http://www.iro.umontreal.ca/~felipe/IFT2030-Automne2002/Complements/tinyc.c
https://news.ycombinator.com/item?id=8610704
http://www.wilfred.me.uk/blog/2014/08/27/baby-steps-to-a-c-compiler/
http://homepage.ntlworld.com/edmund.grimley-evans/cc500/
https://www.cs.fsu.edu/~engelen/courses/COP562105/
http://stefan-marr.de/papers/ieee-soft-marr-et-al-are-we-there-yet/
http://www.bayfronttechnologies.com/mc_tutorial.html metacompiler
http://akuklev.livejournal.com/1171822.html
https://neil.fraser.name/software/JS-Interpreter/docs.html Javascript in Javascript
Garbage collection
http://habrahabr.ru/post/240021/
L-calculus
https://medium.com/@ayanonagon/the-y-combinator-no-not-that-one-7268d8d9c46
https://www.youtube.com/watch?v=FITJMJjASUs
http://www.cwi.nl/~tromp/cl/diagrams.html
Y combinator: it's a beautiful way to make a recursive call without binding the function to an identifier
A fixed point p for a function f, is a value so that f(p)=p.
A semi-recursive function f is a like a recursive function, except that instead of invoking itself, it invokes some other function provided as an argument to f.
The y-combinator (aka fixed-point-combinator) is a function, that for a function f, finds a fixed point for f.
We can turn a semi-recursive function f into the corresponding recursive function g, by finding a fix point for f, which we can do using the y-combinator.
http://www.reddit.com/r/langs/
https://class.coursera.org/compilers/lecture/preview by Alex Aiken
https://www.coursera.org/course/compilers
https://class.coursera.org/compilers-003/lecture/index always available!!
http://michaelrbernste.in/2014/06/10/types-are-the-truth.html
http://www.reddit.com/r/programming/comments/28gf75/i_just_finished_writing_my_first_toy_compiler_i/
https://news.ycombinator.com/item?id=8554084
http://createyourproglang.com/
Parsing timeline
http://jeffreykegler.github.io/Ocean-of-Awareness-blog/individual/2014/09/chron.html
https://news.ycombinator.com/item?id=8290681
http://www.reddit.com/r/programming/comments/2fxkr7/parsing_a_timeline/
How to build a virtual Machine
https://www.youtube.com/watch?v=OjaAToVkoTw&feature=youtu.be
http://habrahabr.ru/post/232081/ interpretator in C++
Pratt
http://journal.stuffwithstuff.com/2011/03/19/pratt-parsers-expression-parsing-made-easy/
http://www.oilshell.org/blog/2017/03/31.html
https://github.com/vinzenz/libpypa
https://speakerdeck.com/kachayev/monadic-parsing-in-python
https://habrahabr.ru/post/309242/ paring python
Formal methods (Alloy and others)
http://research.microsoft.com/en-us/um/people/lamport/tla/formal-methods-amazon.pdf
https://zvzzt.wordpress.com/2014/05/03/python-recursion-visualization-with-rcviz/
http://www.goodmath.org/blog/2014/05/04/combinator-parsing-part-1/
https://www.udacity.com/course/cs262
http://www.dimitrifourny.com/2014/04/17/write-your-first-compiler/
http://habrahabr.ru/post/150043/ C# GoldParser
http://www.infoq.com/presentations/dart-compiler Egorov
http://szelei.me/code-generator/
P = NP ? SAT
http://habrahabr.ru/post/207112/
http://habrahabr.ru/post/208774/
http://www.buildyourownlisp.com/ build your own lisp in C
http://en.wikibooks.org/wiki/Write_Yourself_a_Scheme_in_48_Hours in Haskell
http://compilers.iecc.com/crenshaw/
http://www.hokstad.com/compiler/
http://stackoverflow.com/questions/1669/learning-to-write-a-compiler/1672#1672
http://matt.might.net/articles/standalone-lexers-with-lex/
http://i.stanford.edu/~ullman/focs.html
Flex, Bison Python
http://maniagnosis.crsr.net/2013/12/flex-and-bisonmodules-updated-sort-of.html
http://www.infoq.com/articles/HIgh-Performance-Parsers-in-Java
VTD-XML, the fastest XML parser for Java
https://www.youtube.com/watch?v=UqTlToUYK1E
Compiler Club
http://neuromancer.io/join-the-compiler-creation-club/
http://tech.pro/blog/1733/join-the-compiler-creation-club
https://news.ycombinator.com/item?id=6794701
Haskell Parsec
http://yannesposito.com/Scratch/en/blog/Parsec-Presentation/
http://www.antlr.org/papers/LL-star-PLDI11.pdf ANTLR explained
http://blog.functorial.com/posts/2013-10-02-Visitor-Pattern.html
http://www.talentbuddy.co/set/5238f6544af0110af382fe93
Online classes
https://class.coursera.org/compilers/class/index
https://class.stanford.edu/courses/Engineering/Compilers/Fall2014/about
http://blog.reverberate.org/2013/09/ll-and-lr-in-context-why-parsing-tools.html
http://mortoray.com/2012/07/20/why-i-dont-use-a-parser-generator/
http://www.cs.uoregon.edu/research/summerschool/summer12/curriculum.html
http://www.youtube.com/watch?feature=player_embedded&v=RcTaweZMEzo
http://www.stanford.edu/class/cs143/
http://www.cs.washington.edu/education/courses/csep501/08wi/lectures/index.html
https://speakerdeck.com/alex/why-python-ruby-and-javascript-are-slow
http://habrahabr.ru/post/170735/
http://habrahabr.ru/post/177701/
http://www.eclipse.org/Xtext/ framework for creating of programming and domain specific languages
http://www.codeproject.com/Articles/606610/LLLPG-2cplusLoycplustrees-2cplusandplusLES-2cpluso
JavaScript
http://habrahabr.ru/post/224081/
http://habrahabr.ru/post/227241/
https://github.com/jneen/parsimmon
https://mockbrian.com/blog/2016/11/01/making-a-language/
http://creativejs.com/2013/06/the-race-for-speed-part-2-how-javascript-compilers-work/
http://zaach.github.io/jison/ parser generator
https://www.hackerschool.com/blog/21-little-lisp-interpreter List in JavaScript
https://github.com/agershun/alasql SQL in JS
https://github.com/forward/sql-parser
https://github.com/agershun/alasql/blob/version-0.0.27/SIMILAR.md
http://akgupta.ca/blog/2013/06/07/so-you-still-dont-understand-hindley-milner-part-3/
Writing programming lang in Python
https://github.com/kvalle/diy-lisp
Write parser in Python (4 posts)
http://www.ptmcg.com/files/pyparsing_talk_apug_2016May.pdf
http://www.jayconrod.com/posts/40/a-simple-interpreter-from-scratch-in-python-part-4
http://habrahabr.ru/post/206454/ russian translation
http://habrahabr.ru/post/207662/
http://seriyps.ru/blog/2013/12/05/kak-pravilno-rasparsit-access-log/
Decision tables, Production Rules
http://www.ijarcsse.com/docs/papers/Volume_3/7_July2013/V3I7-0448.pdf
Lambda calculus
"To Dissect A Mockingbird" a more intuitive and simpler explanation of Lambda Calculus. I think the visuals help a lot.
These diagrams are interesting too: http://homepages.cwi.nl/~tromp/cl/diagrams.html
There is also Bret Victor's Alligator Eggs game: http://worrydream.com/AlligatorEggs/
I know about these because I'm currently trying to learn λ-calculus by deriving and implementing functions in CoffeeScript: https://github.com/rbonvall/lambda-coffee/blob/master/lambda...
I like this talk http://www.confreaks.com/videos/1287-rubyconf2012-y-not-adve...
Jim Weirich was an excellent speaker, and this was one of his best presentations. I thought his method of building up to the purpose of combinators (not just the Y) was much better than just an explanation. He references [1] (note url change) which does something similar and is also a good read/view.
I loved that talk. I found this lecture also instructive (not as entertaining as Jim's though):https://www.youtube.com/watch?v=FWkiO-F6X5E
http://www.flyingmachinestudios.com/programming/a-taste-of-the-lambda-calculus/
http://palmstroem.blogspot.com/2012/05/lambda-calculus-for-absolute-dummies.html
http://zeroturnaround.com/rebellabs/what-is-lambda-calculus-and-why-should-you-care/
http://en.wikipedia.org/wiki/Memoization
http://www.cs.uu.nl/wiki/Techno/ProgrammingLanguageTheoryTextsOnline
Milner-Hindley
http://stackoverflow.com/questions/12532552/what-part-of-milner-hindley-do-you-not-understand
http://logitext.mit.edu/logitext.fcgi/tutorial
https://news.ycombinator.com/item?id=5606039
http://stackoverflow.com/questions/2842809/lexers-vs-parsers
http://onoffswitch.net/building-a-custom-lexer/
http://yawnt.github.com/blog/2013/02/15/on-compilers-and-interpreters/
Monoids for programmers
Y-combinator
http://en.wikipedia.org/wiki/Fixed-point_combinator
http://blog.nullspace.io/obvious-python-parser.html
LR parsing
http://blog.reverberate.org/2013/07/ll-and-lr-parsing-demystified.html
{code}
# Functions that define the operators and how to evaluate them.
# This example assumes binary operators, but this is easy to extend.
ops = {
"+": (lambda a, b: a + b),
"-": (lambda a, b: a - b)
}
def eval(tokens):
stack = []
for token in tokens:
if token in ops:
arg2 = stack.pop()
arg1 = stack.pop()
result = ops[token](arg1, arg2)
stack.append(result)
else:
stack.append(int(token))
return stack.pop()
# reverse polish notation for 7 - (2+3)
print "Result:", eval("7 2 3 + -".split())
http://habrahabr.ru/post/140441/
http://habrahabr.ru/post/140339/
http://habrahabr.ru/post/140058/
http://cmcmsu.no-ip.info/2course/
http://www.parleys.com/#st=5&id=3037&sl=3
{code}
BOOK
http://avaxhome.ws/ebooks/programming_development/general/algorithms_patterns/0470500956.html
What parsers and lexers have in common:
They read symbols of some alphabet from their input.
Hint: The alphabet doesn't necessarily have to be of letters. But it has to be of symbols which are atomic for the language understood by parser/lexer.
Symbols for the lexer: ASCII characters.
Symbols for the parser: the particular tokens, which are terminal symbols of their grammar.
They analyse these symbols and try to match them with the grammar of the language they understood.
And here's where the real difference usually lies. See below for more.
Grammar understood by lexers: regular grammar (Chomsky's level 3).
Grammar understood by parsers: context-free grammar (Chomsky's level 2).
They attach semantics (meaning) to the language pieces they find.
Lexers attach meaning by classifying lexemes (strings of symbols from the input) as the particulartokens. E.g. All these lexemes: *, ==, <=, ^ will be classified as "operator" token by the C/C++ lexer.
Parsers attach meaning by classifying strings of tokens from the input (sentences) as the particularnonterminals and building the parse tree. E.g. all these token strings: [number][operator][number], [id][operator][id], [id][operator][number][operator][number] will be classified as "expression" nonterminal by the C/C++ parser.
They can attach some additional meaning (data) to the recognized elements. E.g. when a lexer recognizes a character sequence constituting a proper number, it can convert it to its binary value and store with the "number" token. Similarly, when a parser recognize an expression, it can compute its value and store with the "expression" node of the syntax tree.
They all produce on their output a proper sentences of the language they recognize.
Lexers produce tokens, which are sentences of the regular language they recognize. Each token can have an inner syntax (though level 3, not level 2), but that doesn't matter for the output data and for the one which reads them.
Parsers produce syntax trees, which are representations of sentences of the context-free language they recognize. Usually it's only one big tree for the whole document/source file, because the whole document/source file is a proper sentence for them. But there aren't any reasons why parser couldn't produce a series of syntax trees on its output. E.g. it could be a parser which recognizes SGML tags sticked into plain-text. So it'll tokenize the SGML document into a series of tokens: [TXT][TAG][TAG][TXT][TAG][TXT]....
As you can see, parsers and tokenizers have much in common. One parser can be a tokenizer for other parser, which reads its input tokens as symbols from its own alphabet (tokens are simply symbols of some alphabet) in the same way as sentences from one language can be alphabetic symbols of some other, higher-level language. For example, if * and - are the symbols of the alphabet M (as "Morse code symbols"), then you can build a parser which recognizes strings of these dots and lines as letters encoded in the Morse code. The sentences in the language "Morse Code" could be tokens for some other parser, for which these tokens are atomic symbols of its language (e.g. "English Words" language). And these "English Words" could be tokens (symbols of the alphabet) for some higher-level parser which understands "English Sentences" language. And all these languages differ only in the complexity of the grammar. Nothing more.
So what's all about these "Chomsky's grammar levels"? Well, Noam Chomsky classified grammars into four levels depending on their complexity:
Level 3: Regular grammars
They use regular expressions, that is, they can consist only of the symbols of alphabet (a,b), their concatenations (ab,aba,bbb etd.), or alternatives (e.g. a|b).
They can be implemented as finite state automata (FSA), like NFA (Nondeterministic Finite Automaton) or better DFA (Deterministic Finite Automaton).
Regular grammars can't handle with nested syntax, e.g. properly nested/matched parentheses (()()(()())), nested HTML/BBcode tags, nested blocks etc. It's because state automata to deal with it should have to have infinitely many states to handle infinitely many nesting levels.
Level 2: Context-free grammars
They can have nested, recursive, self-similar branches in their syntax trees, so they can handle with nested structures well.
They can be implemented as state automaton with stack. This stack is used to represent the nesting level of the syntax. In practice, they're usually implemented as a top-down, recursive-descent parser which uses machine's procedure call stack to track the nesting level, and use recursively called procedures/functions for every non-terminal symbol in their syntax.
But they can't handle with a context-sensitive syntax. E.g. when you have an expression x+3 and in one context this x could be a name of a variable, and in other context it could be a name of a function etc.
Level 1: Context-sensitive grammars
Level 0: Unrestricted grammars
Also called "phase-structure grammars".
http://www.strchr.com/expression_evaluator
http://en.wikipedia.org/wiki/Lexical_analysis
lexical analysis is the process of converting a sequence of characters into a sequence of tokens. A program or function which performs lexical analysis is called alexical analyzer, lexer, or scanner. A lexer often exists as a single function which is called by a parser or another function.
http://en.wikipedia.org/wiki/The_lexer_hack
http://en.wikipedia.org/wiki/Parser
http://en.wikipedia.org/wiki/Top-down_parsing
The next stage is parsing or syntactic analysis, which is checking that the tokens form an allowable expression. This is usually done with reference to a context-free grammar which recursively defines components that can make up an expression and the order in which they must appear. However, not all rules defining programming languages can be expressed by context-free grammars alone, for example type validity and proper declaration of identifiers. These rules can be formally expressed with attribute grammars.
The final phase is semantic parsing or analysis, which is working out the implications of the expression just validated and taking the appropriate action
http://en.wikipedia.org/wiki/Ebnf
http://wiki.python.org/moin/LanguageParsing
Books:
http://avaxhome.ws/ebooks/programming_development/engineering_a_compiler.html
http://avaxhome.ws/ebooks/programming_development/1461446988_Co.html - Modern Compiler Design
http://dickgrune.com/Books/PTAPG_1st_Edition/ Book
Book: Language implementation patterns. Terence Parr
http://sigpwned.com/content/stork-example-programming-language-lesson-1-tokenization
http://sigpwned.com/content/stork-example-programming-language-lesson-3-expression-evaluation
http://zserge.com/blog/cucu-part1.html
http://zserge.com/blog/cucu-part2.html
http://habrahabr.ru/post/163979/ HTML parsing
http://alephnullplex.appspot.com/blog/tag/lbach let build compiler HASKELL
http://en.wikipedia.org/wiki/Comparison_of_parser_generators
http://eli.thegreenplace.net/2011/07/03/parsing-c-in-python-with-clang/
http://eli.thegreenplace.net/2012/08/02/parsing-expressions-by-precedence-climbing/
http://eli.thegreenplace.net/2009/03/14/some-problems-of-recursive-descent-parsers/
http://en.wikipedia.org/wiki/Compiler_generator
http://en.wikipedia.org/wiki/List_of_compiler-compilers
http://www.bayfronttechnologies.com/mc_tutorial.html
http://java-source.net/open-source/parser-generators
http://www.codeproject.com/Articles/3854/An-introduction-to-lex-and-yacc-part-2
http://www.benhanson.net/lexertl.html
http://en.wikipedia.org/wiki/Earley_parser
http://loup-vaillant.fr/tutorials/earley-parsing/
https://github.com/erezsh/Lark new Python parser
http://blog.lab49.com/archives/3011
http://wizzard0.livejournal.com/86142.html
http://wingolog.org/archives/2012/06/27/inside-javascriptcores-low-level-interpreter
http://matt.might.net/articles/standalone-lexers-with-lex/
https://class.coursera.org/compilers/lecture/index
http://habrahabr.ru/hub/compilers/ http://habrahabr.ru/post/140058/ Написание компилятора LALR(1)-парсеров
http://habrahabr.ru/post/141756/ Парсим Python код с помощью Flex и Bison
http://tratt.net/laurie/tech_articles/articles/parsing_the_solved_problem_that_isnt
PEG
http://pegjs.majda.cz/development
https://news.ycombinator.com/item?id=12501774
https://github.com/erikrose/parsimonious Python
https://github.com/python-parsley/parsley/ Python
http://www.inf.puc-rio.br/~roberto/docs/ry08-4.pdf
http://journal.stuffwithstuff.com/2011/03/19/pratt-parsers-expression-parsing-made-easy/
https://groups.google.com/forum/?fromgroups=#!forum/pegjs Peg.js forum
https://coderwall.com/p/316gba
http://nathansuniversity.com/pegs.html
https://news.ycombinator.com/item?id=2644791
http://pdos.csail.mit.edu/papers/parsing:popl04.pdf
http://nathansuniversity.com/pegs.html
https://github.com/ColinH/PEGTL
https://github.com/dmajda/pegjs/wiki/Projects-Using-PEG.js
https://groups.google.com/forum/?fromgroups=#!forum/pegjs
http://blog.mi-ernst.de/2012/05/14/javascript-parser-generators/
http://habrahabr.ru/post/104968/
http://en.wikipedia.org/wiki/Parsing_expression_grammar
http://pegjs.majda.cz/ online PEG.js
https://github.com/sirthias/parboiled/wiki PEG in Java/Scala
http://www.codeproject.com/Articles/29713/Parsing-Expression-Grammar-Support-for-C-3-0-Part
http://www.codeproject.com/Articles/10115/Crafting-an-interpreter-Part-1-Parsing-and-Grammar
http://www.codeproject.com/Articles/10142/Crafting-an-interpreter-Part-2-The-Calc0-Toy-Langu
http://www.codeproject.com/Articles/10421/Crafting-an-interpreter-Part-3-Parse-Trees-and-Syn
http://www.codeproject.com/Articles/272494/Implementing-Programming-Languages-using-Csharp
http://www.youtube.com/watch?v=t5X3ljCOFSY
http://sigusr2.net/2011/Apr/18/parser-combinators-made-simple.html
http://www.cs.washington.edu/education/courses/csep501/08wi/lectures/index.html
http://habrahabr.ru/post/141756/ Parsing Python using Flex and Bison
http://habrahabr.ru/blogs/algorithm/116732/
http://habrahabr.ru/blogs/algorithm/120707/
http://habrahabr.ru/blogs/algorithm/122890/
http://habrahabr.ru/blogs/algorithm/122397/
http://habrahabr.ru/blogs/compilers/132422/
10 articles
http://habrahabr.ru/blogs/programming/99162/ #1 lexer
http://habrahabr.ru/post/99298/ #2
http://habrahabr.ru/post/99366/ #3 bison
http://habrahabr.ru/post/99397/ #4
http://habrahabr.ru/post/99466/ #5
http://habrahabr.ru/post/99592/ #6
http://habrahabr.ru/post/99595/ #7
http://habrahabr.ru/post/101946/ #8
http://habrahabr.ru/post/103402/ #9
http://habrahabr.ru/post/104104/ #10 Compilation 10 articles
http://habrahabr.ru/post/133780/
http://bartoszmilewski.com/2011/07/11/monads-in-c/ Proto, EDSL
C compiler
https://github.com/rui314/8cc
https://news.ycombinator.com/item?id=9125912
http://www.reddit.com/r/programming/comments/2xjom7/8cc_a_small_c_compiler/
Book on compiler and MiniC example
http://elvis.rowan.edu/~bergmann/books/
http://elvis.rowan.edu/~bergmann/books/c_cpp/
http://www.scribd.com/doc/75971215/100/Minic-parser-and-type-checker
TinyC
http://www.iro.umontreal.ca/~felipe/IFT2030-Automne2002/Complements/tinyc.c
http://sigpwned.com/content/stork-example-programming-language-lesson-2-expression-parsing
http://www.t3x.org/reload/index.html
http://prog21.dadgum.com/30.html Want to Write a Compiler? Just Read These Two Papers.
http://scifac.ru.ac.za/compilers/
Python
http://nedbatchelder.com/text/python-parsers.html
http://wiki.python.org/moin/LanguageParsing
https://pypi.python.org/pypi/Parsley
http://habrahabr.ru/post/241670/
http://docs.python.org/library/cmd.html
http://docs.python.org/2/library/tokenize.html
http://travelingfrontiers.wordpress.com/2010/05/20/under-the-hood-of-the-python-cmd-module-%E2%80%93-your-line-parsing-tour-guide/
http://www.doughellmann.com/PyMOTW/cmd/
http://effbot.org/zone/simple-top-down-parsing.htm
http://renesd.blogspot.com/2011/08/lets-make-shit-javascript-interpreter.html
http://caisbalderas.com/blog/post/4/
http://greentreesnakes.readthedocs.org/en/latest/
http://www.reddit.com/r/Python/comments/1h5ucz/defining_a_contextfree_grammar_easily/
http://www.youtube.com/watch?v=1h1mM7VwNGo
http://news.ycombinator.com/item?id=5271642
http://blog.rfw.name/2012/10/12/parser_combinators.html
http://pypi.python.org/pypi/parcon
http://parsingintro.sourceforge.net/
http://habrahabr.ru/blogs/compilers/133780/
http://www.doughellmann.com/PyMOTW/shlex/
http://www.hokstad.com/compiler/ Compiler in Ruby
Closure
http://en.wikipedia.org/wiki/Closure_(computer_science)
http://csharpindepth.com/articles/chapter5/closures.aspx
http://stackoverflow.com/questions/3145893/how-are-closures-implemented-in-python
http://developer.gnome.org/gobject/stable/chapter-signal.html#closure
http://www.hokstad.com/how-to-implement-closures
http://blog.charlescary.com/?p=95 in C
http://samesake.com/log/2013/01/03/Three-little-birds/ lambda calculus, Y-combinator
http://www.infoq.com/presentations/Y-Combinator
http://blog.reverberate.org/2012/12/hello-jit-world-joy-of-simple-jits.html
S-expression
https://igor.io/2012/12/06/sexpr.html
Avro ProtocolBuffers
http://www.igvita.com/2011/08/01/protocol-buffers-avro-thrift-messagepack/
http://stasikos.livejournal.com/117880.html Example of Thrift (Java / C++)