feat: add molang package
1. upgrade bukkit chat 2. fix config update error Signed-off-by: MiaoWoo <admin@yumc.pw>
This commit is contained in:
29
packages/molang/src/parser/parselets/loop.ts
Normal file
29
packages/molang/src/parser/parselets/loop.ts
Normal file
@@ -0,0 +1,29 @@
|
||||
import { Parser } from '../parse'
|
||||
import { Token } from '../../tokenizer/token'
|
||||
import { IPrefixParselet } from './prefix'
|
||||
import { IExpression } from '../expression'
|
||||
import { LoopExpression } from '../expressions/loop'
|
||||
|
||||
export class LoopParselet implements IPrefixParselet {
|
||||
constructor(public precedence = 0) {}
|
||||
|
||||
parse(parser: Parser, token: Token) {
|
||||
parser.consume('LEFT_PARENT')
|
||||
const args: IExpression[] = []
|
||||
|
||||
if (parser.match('RIGHT_PARENT'))
|
||||
throw new Error(`loop() called without arguments`)
|
||||
|
||||
do {
|
||||
args.push(parser.parseExpression())
|
||||
} while (parser.match('COMMA'))
|
||||
parser.consume('RIGHT_PARENT')
|
||||
|
||||
if (args.length !== 2)
|
||||
throw new Error(
|
||||
`There must be exactly two loop() arguments; found ${args.length}`
|
||||
)
|
||||
|
||||
return new LoopExpression(args[0], args[1])
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user