Beancount 语言语法
本文档为 Beancount 语言语法提供了一个简洁而全面的参考,融合了实践结构、规则和示例。 更多详情,请参阅 速查表。
概述
Beancount 是一个纯文本复式记账系统。 它的语言围绕三个主要构建块构建:
- 商品(货币、股票、积分等)
- 账户(分层的、分类的账簿)
- 指令(记录事件或配置的带日期条目)
商品
商品始终以大写形式书写,例如 USD、EUR、AAPL、BTC、MILES、HOURS。
账户
账户是冒号分隔的、首字母大写的分层名称。 它们必须以五个根账户类型之一开头:
| 名称 | 类型 | 典型内容 | 示例 |
|---|---|---|---|
Assets | + | 现金、银行、投资 | Assets:Checking |
Liabilities | - | 信用卡、贷款 | Liabilities:CreditCard |
Income | - | 工资、利息 | Income:EmployerA |
Expenses | + | 购买、账单 | Expenses:Food:Dining |
Equity | - | 期初/期末余额 | Equity:Opening-Balances |
- 组件必须大写,用冒号 (
:) 分隔,且没有空格。 - 组件中允许使用数字和破折号。
- 根账户名称可以通过选项进行自定义(见下文)。
指令
指令是 Beancount 文件中的核心语句。 大多数指令以日期开头,后跟指令类型和参数。 它们按时间顺序(按日期)处理,而不是按文件顺序处理。
通用格式:
YYYY-MM-DD <directive> <arguments...>