2015-10-02 to 2015-10-03
Luke Imhoff
Kronic.Deth@gmail.com | |
@KronicDeth | |
@KronicDeth |
Date | Days | Commits | Version | |||
---|---|---|---|---|---|---|
Delta | Total | Delta | Total | Commits/Day | Name | |
2014-07-27 | 0 | 0 | 1 | 1 | 1.00 | Initial |
2014‑08‑02 | 6 | 6 | 18 | 19 | 3.00 | 0.0.1 |
2014‑08‑03 | 1 | 7 | 14 | 33 | 14.00 | 0.0.2 |
2014‑08‑08 | 5 | 12 | 10 | 43 | 2.00 | 0.0.3 |
2014‑09‑13 | 36 | 48 | 64 | 107 | 1.78 | 0.1.0 |
2014‑09‑20 | 7 | 55 | 4 | 111 | 0.57 | 0.1.1 |
2014‑09‑25 | 5 | 60 | 12 | 123 | 2.50 | 0.1.2 |
2014‑10‑14 | 19 | 79 | 23 | 146 | 1.21 | 0.1.3 |
2014‑11‑30 | 47 | 126 | 226 | 373 | 4.81 | 0.2.0 |
2015‑04‑03 | 124 | 250 | 521 | 894 | 4.20 | 0.2.1 |
2015‑04‑10 | 7 | 257 | 27 | 921 | 3.86 | 0.3.0 |
2015‑04‑27 | 17 | 274 | 66 | 987 | 3.88 | 0.3.1 |
2015‑05‑01 | 4 | 278 | 8 | 995 | 2.00 | 0.3.2 |
2015‑05‑15 | 14 | 292 | 34 | 1029 | 2.43 | 0.3.3 |
2015‑06‑04 | 20 | 312 | 86 | 1115 | 4.30 | 0.3.4 |
2015‑07‑08 | 34 | 346 | 83 | 1198 | 2.44 | 0.3.5 |
2015‑07‑27 | 19 | 365 | 158 | 1356 | 2.44 | 1.0.0 |
Read as | Symbol |
---|---|
Metasyntactic Variable |
|
is defined as |
|
or |
|
<expr> ::= <integer> | <expr> <op> <integer>
Date | Days | Commits | Version | |||
---|---|---|---|---|---|---|
Delta | Total | Delta | Total | Commits/Day | ||
2014‑08‑02 | 6 | 6 | 18 | 19 | 3.00 |
Step | Elixir | IntelliJ Elixir |
---|---|---|
Lexing | Erlang | JFlex |
Parsing | YECC | GrammarKit |
iex> greeting = "Hello #{"W#{"or"}ld"}"
"Hello World"
iex> tuple = "A tuple #{inspect {"Containing an #{:interpolated} string"}}"
"A tuple {\"Containing an interpolated string\"}"
#{
and ends with }
Language Class | Computational Model | Example |
---|---|---|
Regular | Finite Automaton/State Machine | Multiples of 3 in binary |
Context-Free | Pushdown Automaton | Balanced Parentheses |
Decidable | (Always-halting) Turing machine | anbncn |
Semidecidable | Turing machine | Halting Problem |
Associativity | Left | Right |
---|---|---|
Code |
a or b || c
|
a ++ b <> c
|
Nesting |
|
|
Effective Parentheses |
(a or b) || c
|
a ++ (b <> c)
|
Execution Pipeline | a |> Kernel.or(b) |> Kernel.||(c) | a |> Kernel.++(b |> Kernel.<>(c)) |
Look-ahead, Left-to-Right, Rightmost deriviation (LALR) | Parsing Expression Grammar | |
---|---|---|
Inventor | Frank DeRemer | Bryan Ford |
Invented | 1969 | 2004 |
Terminal symbols | ✓ | ✓ |
Nonterminal rules | ✓ | ✓ |
Empty string | ✓ | ✓ |
Sequence | ✓ | ✓ |
Choice | Ambiguous | Ordered |
Zero-or-more | ❌ |
*
|
One-or-more | ❌ |
+
|
Optional | ❌ |
?
|
Positive Look-ahead | ❌ |
&
|
Negative Look-ahead | ❌ |
!
|
Derivation | Rightmost | Leftmost |
Left-Recursion | Favored | Infinite Loop |
Right-Recursion | Unfavored | Favored |
Direction | Bottom-up | Top-down |
matchedExpression
matchedExpression ::= accessExpression
accessionExpression ::= stringLine
quote ::= stringLine
keywordKey ::= quote
private keywordKeyColonEOL ::= keywordKey KEYWORD_PAIR_COLON EOL*
noParenthesesKeywordPair ::= keywordKeyColonEOL noParenthesesExpression
noParenthesesKeywords ::= noParenthesesKeywordPair (infixComma noParenthesesKeywordPair)*
noParenthesesOnePositionalAndKeywordsArguments ::= noParenthesesFirstPositional infixComma noParenthesesKeywords
noParenthesesManyPositionalAndMaybeKeywordsArguments ::= noParenthesesCommaExpression (infixComma noParenthesesKeywords)?
Quoted
Pattern
Code.string_to_quoted!
|
psiToString
|
---|---|
|
|
Erlang | Java |
---|---|
Range | Java Class | |
---|---|---|
Start | End | |
0 | 255 |
OtpErlangString
|
256 | N/A |
OtpErlangList
|
Uncommented | Commented | ||
---|---|---|---|
Code | Quoted | Code | Quoted |
|
|
|
|
|
|
|
|
strip_dot_space
Time | Code |
---|---|
Before |
|
After |
|
No Space | Space | |||
---|---|---|---|---|
Code | Quoted | Code | Quoted | |
Parentheses |
|
|
|
Error |
Brackets |
|
|
|
|
Code | Description |
---|---|
|
Anonymous function clause |
|
Do block clauses |
|
Do block start |
|
Parenthetical groups |
unmatched_expr
block_expr
block_list
block_identifier
Ambiguous code | if a then if b then s else s2 | a b, c do s end |
---|---|---|
Bind to Outermost | if a then (if b then s) else s2 | a b, (c) do s end |
Bind to Closest | if a then (if b then s else s2) | a b, (c do s end) |
unmatchedExpression
elixir-lang/elixir
Code | Quoted |
---|---|
|
|
|
|
|
|
|
Error |
REFERENCE_OPERATION
Matched | Unmatched | |
---|---|---|
Code |
|
|
Quoted |
|
|
Date | Days | Commits | Version | |||
---|---|---|---|---|---|---|
Delta | Total | Delta | Total | Commits/Day | Name | |
2015‑07‑27 | 19 | 365 | 158 | 1356 | 2.44 | 1.0.0 |
Enhancements
Bug Fixes
]
.
that start with and
, or
, and
not
will be lexed as a single identifier instead of and
, or
, or
not
followed by another identifier.
end
is allowed as a relative identifier after .
(...)
as part of matched expression in no parentheses stab signature;
<op>/<arity>
) for function captures
(&<op>/<arity>
)
unquote_splicing
is properly wrapped in __block__
when in stab bodiesambiguous_op: nil
Qualifier.'relative'()
vs Qualifier.'relative' ()
and
Qualifier."relative"()
vs Qualifier."relative" ()
Incompatible Changes
CTRL+N ENTER
keyboard shortcut for New > File