mirror of
https://github.com/simonmichael/hledger.git
synced 2024-09-18 17:57:11 +03:00
include the ledger grammar description
This commit is contained in:
parent
34ca154cd9
commit
6ea439cf91
97
hledger.hs
97
hledger.hs
@ -138,6 +138,103 @@ type Account = String
|
||||
|
||||
-- ledger file parsing
|
||||
-- struggling.. easier with a token parser ?
|
||||
-- here's the ledger 2.5 grammar:
|
||||
{-
|
||||
"The ledger file format is quite simple, but also very flexible. It supports many options,
|
||||
though typically the user can ignore most of them. They are summarized below.
|
||||
|
||||
The initial character of each line determines what the line means, and how it should be
|
||||
interpreted. Allowable initial characters are:
|
||||
|
||||
NUMBER A line beginning with a number denotes an entry. It may be followed by any
|
||||
number of lines, each beginning with whitespace, to denote the entry’s account
|
||||
transactions. The format of the first line is:
|
||||
|
||||
DATE[=EDATE] [*|!] [(CODE)] DESC
|
||||
If ‘*’ appears after the date (with optional effective date), it indicates the entry
|
||||
is “cleared”, which can mean whatever the user wants it t omean. If ‘!’ appears
|
||||
after the date, it indicates d the entry is “pending”; i.e., tentatively cleared from
|
||||
the user’s point of view, but not yet actually cleared. If a ‘CODE’ appears in
|
||||
parentheses, it may be used to indicate a check number, or the type of the
|
||||
transaction. Following these is the payee, or a description of the transaction.
|
||||
The format of each following transaction is:
|
||||
|
||||
ACCOUNT AMOUNT [; NOTE]
|
||||
|
||||
The ‘ACCOUNT’ may be surrounded by parentheses if it is a virtual
|
||||
transactions, or square brackets if it is a virtual transactions that must
|
||||
balance. The ‘AMOUNT’ can be followed by a per-unit transaction cost,
|
||||
by specifying ‘ AMOUNT’, or a complete transaction cost with ‘@ AMOUNT’.
|
||||
Lastly, the ‘NOTE’ may specify an actual and/or effective date for the
|
||||
transaction by using the syntax ‘[ACTUAL_DATE]’ or ‘[=EFFECTIVE_DATE]’ or
|
||||
‘[ACTUAL_DATE=EFFECtIVE_DATE]’.
|
||||
|
||||
= An automated entry. A value expression must appear after the equal sign.
|
||||
After this initial line there should be a set of one or more transactions, just as
|
||||
if it were normal entry. If the amounts of the transactions have no commodity,
|
||||
they will be applied as modifiers to whichever real transaction is matched by
|
||||
the value expression.
|
||||
|
||||
~ A period entry. A period expression must appear after the tilde.
|
||||
After this initial line there should be a set of one or more transactions, just as
|
||||
if it were normal entry.
|
||||
|
||||
|
||||
! A line beginning with an exclamation mark denotes a command directive. It
|
||||
must be immediately followed by the command word. The supported commands
|
||||
are:
|
||||
|
||||
‘!include’
|
||||
Include the stated ledger file.
|
||||
‘!account’
|
||||
The account name is given is taken to be the parent of all transac-
|
||||
tions that follow, until ‘!end’ is seen.
|
||||
‘!end’ Ends an account block.
|
||||
|
||||
; A line beginning with a colon indicates a comment, and is ignored.
|
||||
|
||||
Y If a line begins with a capital Y, it denotes the year used for all subsequent
|
||||
entries that give a date without a year. The year should appear immediately
|
||||
after the Y, for example: ‘Y2004’. This is useful at the beginning of a file, to
|
||||
specify the year for that file. If all entries specify a year, however, this command
|
||||
has no effect.
|
||||
|
||||
|
||||
P Specifies a historical price for a commodity. These are usually found in a pricing
|
||||
history file (see the ‘-Q’ option). The syntax is:
|
||||
|
||||
P DATE SYMBOL PRICE
|
||||
|
||||
N SYMBOL Indicates that pricing information is to be ignored for a given symbol, nor will
|
||||
quotes ever be downloaded for that symbol. Useful with a home currency, such
|
||||
as the dollar ($). It is recommended that these pricing options be set in the price
|
||||
database file, which defaults to ‘~/.pricedb’. The syntax for this command is:
|
||||
|
||||
N SYMBOL
|
||||
|
||||
|
||||
D AMOUNT Specifies the default commodity to use, by specifying an amount in the expected
|
||||
format. The entry command will use this commodity as the default when none
|
||||
other can be determined. This command may be used multiple times, to set
|
||||
the default flags for different commodities; whichever is seen last is used as the
|
||||
default commodity. For example, to set US dollars as the default commodity,
|
||||
while also setting the thousands flag and decimal flag for that commodity, use:
|
||||
|
||||
D $1,000.00
|
||||
|
||||
C AMOUNT1 = AMOUNT2
|
||||
Specifies a commodity conversion, where the first amount is given to be equiv-
|
||||
alent to the second amount. The first amount should use the decimal precision
|
||||
desired during reporting:
|
||||
|
||||
C 1.00 Kb = 1024 bytes
|
||||
|
||||
i, o, b, h
|
||||
These four relate to timeclock support, which permits ledger to read timelog
|
||||
files. See the timeclock’s documentation for more info on the syntax of its
|
||||
timelog files."
|
||||
-}
|
||||
|
||||
|
||||
ledgerLanguageDef = LanguageDef {
|
||||
commentStart = ""
|
||||
|
Loading…
Reference in New Issue
Block a user