Skip to content

Commit

Permalink
Rename lambda to closure
Browse files Browse the repository at this point in the history
  • Loading branch information
ivanjermakov committed Jun 13, 2023
1 parent 5ca9fc2 commit 1eb6849
Show file tree
Hide file tree
Showing 7 changed files with 17 additions and 19 deletions.
2 changes: 1 addition & 1 deletion data/features.no
Original file line number Diff line number Diff line change
Expand Up @@ -107,7 +107,7 @@ let b = match vec {
// println("no value")
// }

// lambda
// closure
let square = |a| a^2
let here = || println("here")

Expand Down
6 changes: 3 additions & 3 deletions nois.bnf
Original file line number Diff line number Diff line change
Expand Up @@ -32,7 +32,7 @@ statement ::= var-def | fn-def | kind-def | impl-def | type-def | retu
| while-expr
| for-expr
| match-expr
| lambda-expr
| closure-expr
| O-PAREN expr C-PAREN
| list-expr
| STRING
Expand Down Expand Up @@ -78,9 +78,9 @@ statement ::= var-def | fn-def | kind-def | impl-def | type-def | retu
;
field-init ::= IDENTIFIER COLON expr
;
lambda-expr ::= lambda-params type-annot? (block | expr)
closure-expr ::= closure-params type-annot? (block | expr)
;
lambda-params ::= PIPE (param (COMMA param)*)? COMMA? PIPE
closure-params::= PIPE (param (COMMA param)*)? COMMA? PIPE
;
params ::= O-PAREN (param (COMMA param)*)? COMMA? C-PAREN
;
Expand Down
1 change: 0 additions & 1 deletion src/index.ts
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,6 @@ import { compactNode, Parser } from './parser/parser'
import { prettyLexerError, prettySourceMessage, prettySyntaxError } from './error'
import { parseModule } from './parser/fns'


const version = JSON.parse(readFileSync(join(__dirname, '..', 'package.json')).toString()).version

export const usage = `\
Expand Down
1 change: 0 additions & 1 deletion src/lexer/lexer.spec.ts
Original file line number Diff line number Diff line change
Expand Up @@ -148,7 +148,6 @@ let main = (): Unit {
])
})


it('unterminated', () => {
expect(tokenize(`"string 123 ok\n`)).toEqual([
{ kind: 'unterminated-string', value: `"string 123 ok`, location: { start: 0, end: 13 } },
Expand Down
6 changes: 3 additions & 3 deletions src/parser/fns/expr.ts
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@ import { TokenKind } from '../../lexer/lexer'
import {
exprFirstTokens,
infixOpFirstTokens,
parseLambdaExpr,
parseClosureExpr,
parseTypeParams,
postfixOpFirstTokens,
prefixOpFirstTokens
Expand Down Expand Up @@ -43,7 +43,7 @@ export const parseSubExpr = (parser: Parser): void => {
}

/**
* operand ::= if-expr | match-expr | lambda-expr | O-PAREN expr C-PAREN | list-expr | STRING | CHAR | INT | FLOAT
* operand ::= if-expr | match-expr | closure-expr | O-PAREN expr C-PAREN | list-expr | STRING | CHAR | INT | FLOAT
* | IDENTIFIER | type-expr
*/
export const parseOperand = (parser: Parser): void => {
Expand All @@ -59,7 +59,7 @@ export const parseOperand = (parser: Parser): void => {
} else if (parser.at('match-keyword')) {
parseMatchExpr(parser)
} else if (parser.at('pipe')) {
parseLambdaExpr(parser)
parseClosureExpr(parser)
} else if (parser.at('o-paren')) {
parser.expect('o-paren')
parseExpr(parser)
Expand Down
14 changes: 7 additions & 7 deletions src/parser/fns/index.ts
Original file line number Diff line number Diff line change
Expand Up @@ -40,11 +40,11 @@ export const parseArgs = (parser: Parser): void => {
}

/**
* lambda-expr ::= lambda-params type-annot? (block | expr)
* closure-expr ::= closure-params type-annot? (block | expr)
*/
export const parseLambdaExpr = (parser: Parser): void => {
export const parseClosureExpr = (parser: Parser): void => {
const mark = parser.open()
parseLambdaParams(parser)
parseClosureParams(parser)
if (parser.at('colon')) {
parseTypeAnnot(parser)
}
Expand All @@ -55,13 +55,13 @@ export const parseLambdaExpr = (parser: Parser): void => {
} else {
parser.advanceWithError('block or expression expected')
}
parser.close(mark, 'lambda-expr')
parser.close(mark, 'closure-expr')
}

/**
* lambda-params ::= PIPE (param (COMMA param)*)? COMMA? PIPE
* closure-params ::= PIPE (param (COMMA param)*)? COMMA? PIPE
*/
export const parseLambdaParams = (parser: Parser): void => {
export const parseClosureParams = (parser: Parser): void => {
const mark = parser.open()
parser.expect('pipe')
while (!parser.at('pipe') && !parser.eof()) {
Expand All @@ -71,7 +71,7 @@ export const parseLambdaParams = (parser: Parser): void => {
}
}
parser.expect('pipe')
parser.close(mark, 'lambda-params')
parser.close(mark, 'closure-params')
}

/**
Expand Down
6 changes: 3 additions & 3 deletions src/parser/parser.ts
Original file line number Diff line number Diff line change
Expand Up @@ -43,8 +43,8 @@ export const treeKinds = <const>[
'postfix-op',
'call-op',
'args',
'lambda-expr',
'lambda-params',
'closure-expr',
'closure-params',
'constructor',
'con-params',
'field-init',
Expand Down Expand Up @@ -129,7 +129,7 @@ export class Parser {
}

advanceIndependent(): void {
// TODO: attach comments to the preceding tree instead
// TODO: attach comments to the subsequent tree instead
if (!this.eof() && independentTokenKinds.some(t => t === this.tokens[this.pos].kind)) {
this.advance()
}
Expand Down

0 comments on commit 1eb6849

Please sign in to comment.